diff --git "a/.github/ISSUE_TEMPLATE/--\355\216\230\354\235\264\354\247\200\353\252\205--\353\202\264\354\232\251.md" "b/.github/ISSUE_TEMPLATE/--\355\216\230\354\235\264\354\247\200\353\252\205--\353\202\264\354\232\251.md" new file mode 100644 index 0000000..3fb817e --- /dev/null +++ "b/.github/ISSUE_TEMPLATE/--\355\216\230\354\235\264\354\247\200\353\252\205--\353\202\264\354\232\251.md" @@ -0,0 +1,17 @@ +--- +name: " [페이지명] 내용" +about: 이슈 템플릿입니다. +title: "[페이지명] 내용" +labels: "" +assignees: "" +--- + +## 💚 어떤 기능인가요? + +카톡 로그인 기능을 개발. + +## ✅ To Dos + +- [ ] +- [ ] +- [ ] diff --git a/.github/ISSUE_TEMPLATE/todo.yml b/.github/ISSUE_TEMPLATE/todo.yml new file mode 100644 index 0000000..49629b7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/todo.yml @@ -0,0 +1,21 @@ +name: To-do Task +description: 해야 할 작업을 기록하고 관리합니다. +title: "[To-do] 카톡 로그인 기능 개발" +labels: ["todo"] +assignees: [] + +body: + - type: markdown + attributes: + value: | + ## 💚 어떤 기능인가요? + 카톡 로그인 기능을 개발. + + - type: markdown + attributes: + value: | + ## ✅ To Dos + + - [ ] + - [ ] + - [ ] diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..08816eb --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +## 이슈 넘버 + +- close # + + +## 구현 사항 + + + +- [ ] +- [ ] +- [ ] +- [ ] + +## Need Review + +- ~ 부분 이렇게 구현했어요, 피드백 부탁해요! + + +## 📸 스크린샷 + + + +## Reference + + diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..3349e6c --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,34 @@ +name: git push into another repo to deploy to vercel + +on: + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + container: pandoc/latex + steps: + - uses: actions/checkout@v2 + + - name: Install mustache (to update the date) + run: apk add ruby && gem install mustache + + - name: creates output + run: sh ./build.sh + + - name: Pushes to another repository + id: push_directory + uses: cpina/github-action-push-to-another-repository@main + env: + API_TOKEN_GITHUB: ${{ secrets.SECRET_ACCESS_KEY }} # secret 변수(토큰) + with: + source-directory: "output" + destination-github-username: 78-artilleryman # 개인 레포 주인 username + destination-repository-name: frontend-sarang # 개인-레포-이름 + user-email: ${{ secrets.AUTO_EMAIL }} # secret 변수(이메일) + commit-message: ${{ github.event.commits[0].message }} + target-branch: main # 개인 레포 브랜치(vercel과 연동된 브랜치) + + - name: Test get variable exported by push-to-another-repository + run: echo $DESTINATION_CLONED_DIRECTORY diff --git a/.gitignore b/.gitignore index 6d6ae5a..f4a72d0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,11 @@ dev-dist *.njsproj *.sln *.sw? + +.env + +_wildcard.sarangkkun.site+2-key.pem +_wildcard.sarangkkun.site+2.pem +mkcert.exe + +.cursor \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..89fcb19 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,2 @@ +pnpm lint-staged +pnpm run lint diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 0000000..0c958d2 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1 @@ +pnpm run build diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..6a68a83 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,14 @@ +{ + "arrowParens": "avoid", + "bracketSpacing": true, + "bracketSameLine": true, + "jsxBracketSameLine": true, + "jsxSingleQuote": false, + "printWidth": 120, + "proseWrap": "always", + "semi": true, + "tabWidth": 2, + "trailingComma": "es5", + "endOfLine": "auto", + "plugins": ["prettier-plugin-tailwindcss"] +} diff --git a/README.md b/README.md index 74872fd..9b7a773 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,104 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: - -- Configure the top-level `parserOptions` property like this: - -```js -export default tseslint.config({ - languageOptions: { - // other options... - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - }, -}) -``` - -- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` -- Optionally add `...tseslint.configs.stylisticTypeChecked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: - -```js -// eslint.config.js -import react from 'eslint-plugin-react' - -export default tseslint.config({ - // Set the react version - settings: { react: { version: '18.3' } }, - plugins: { - // Add the react plugin - react, - }, - rules: { - // other rules... - // Enable its recommended rules - ...react.configs.recommended.rules, - ...react.configs['jsx-runtime'].rules, - }, -}) -``` +# 🪖 곰신 커플을 위한 공유 캘린더 + +기존의 군인/곰신 커플은 군대라는 장소와 연락의 제약으로 인해 많은 문제를 겪어왔습니다. +상호 단절이 자연스럽고, 이에 불화가 생길 시에 풀기 어려운 문제가 발생합니다. 이러한 문제점이 더욱 가중될 수 있다는 것은 군인/곰신 커플이 가지는 필연적인 어려움입니다. + +### 사랑꾼은 **상호 이해(감정, 일정)를 바탕으로 표현을 도와주어 군인과 곰신의 관계 유지를 돕는 커플 공유 캘린더 서비스입니다.** +### 사랑꾼 서비스 배포 주소 : https://www.sarangkkun.site +![team4_thumbnail_web](https://github.com/user-attachments/assets/e912ac8d-e99c-48cb-9302-e2eaf53e7c06) + +# 👨‍👧‍👦 팀 소개 + +### **팀명 : 방산소년단** + +| **분야** | **이름** | **포지션** | **내용** | +| :---: | :---: | --- | --- | +| 기획 | 방산들 | 📈 PM, 서비스 기획 | 유저 리서치, 와이어프레임 작성, 기능정의서 작성 | +| 기획 | 강현규 | 📈 서비스 기획 | 유저 리서치, 와이어프레임 작성, UX 라이팅,
WBS작성 | +| 디자인 | 박세린 | 🎨 디자인 리드 | 서비스 브랜딩, UX/UI 디자인, GUI 디자인 | +| 디자인 | 현명화 | 🎨 디자인 | 서비스 브랜딩, UX/UI 디자인, GUI 디자인 | +| 개발 | 윤병현 | 📱 프론트엔드 리드 | 화면 UI 구현, API 연동 | +| 개발 | 김유민 | 📱 프론트엔드 | 화면 UI 구현, API 연동 | +| 개발 | 전호영 | 💻 백엔드 리드 | API 구현, ERD 설계, 서버 배포 | +| 개발 | 김영록 | 💻 백엔드 | API 구현, ERD 설계, 서버 배포 | + +--- + +# 📱 주요기능 + +Frame 2087327984 + + +# 💻 개발(Development) + +> **깃허브 레포지토리** +> +- https://github.com/Gomushim + +> **배포 URL 및 API 명세서** +> +- https://www.sarangkkun.site/ +- https://api.sarangkkun.site/swagger-ui/index.html#/ + +> +> **시스템 아키텍쳐** +>Image + +--- + +## **🌟 프론트엔드** + +### 🔧 프론트엔드 기술 스택 + +| 기술 | 설명 | +|------|------| +| **TypeScript** | 타입 안정성을 통해 유지보수성과 리팩터링 효율 향상 | +| **React + Vite** | 컴포넌트 기반 구조 + 빠른 번들링과 HMR 제공 | +| **PWA** | 모바일 설치 가능, 웹 푸시 알림 등 기능 제공 | +| **Tailwind CSS** | 유틸리티 기반 CSS로 빠르고 일관된 스타일링 | +| **shadcn/ui** | 접근성과 커스터마이징이 강력한 UI 컴포넌트 라이브러리 | +| **Zustand** | 간단하고 가벼운 전역 상태 관리 | +| **React Query** (`@tanstack/react-query`) | 서버 상태 관리, 캐싱, 리페칭 자동화 | +| **Axios** | HTTP 요청/응답 처리 및 인터셉터 설정 | +| **MSW** | API mocking으로 프론트 개발 병렬화 지원 | +| **Vitest** | Vite와 통합된 빠른 테스트 실행 환경 | + +
+ +--- + +
+ +## **🌟 백엔드** + +> **ERD 설계도:** ![Image](https://github.com/user-attachments/assets/9f8d7844-795f-4bd2-87f1-cfa82ea2c83c) +> + +--- + +### 🔧 백엔드 기술 스택 + +| 기술 | 설명 | +|------|------| +| **Kotlin** | 간결한 문법, Java 호환성, Null 안정성 | +| **Spring Boot** | 설정 자동화, 내장 톰캣 서버 제공 | +| **Spring Data JPA** | 객체 중심의 DB 접근, SQL 최소화 | +| **JUnit5** | 유연한 테스트 작성 가능 | +| **Mockito** | 의존성 모킹 및 메서드 호출 검증 | +| **CoderabbitAI** | AI 기반 코드 리뷰 및 보안/성능 개선 | +| **MySQL 8.x** | 성능 향상, 공간 데이터 등 최신 기능 제공 | +| **Docker** | 배포 및 개발 환경 통일화 | +| **Github Actions** | CI/CD 자동화 파이프라인 구축 | +| **Naver Cloud Platform (NCP)** | 국내 클라우드 인프라 사용 (서버, VPC, CDN 등) | + +## 🟩 NCP 사용 스택 + +| 서비스 | 사용 목적 및 설명 | +|--------|------------------| +| **Server** | 백엔드 배포 서버로 사용 | +| **VPC (Virtual Private Cloud)** | 클라우드 내 전용 네트워크 확보를 위해 사용 | +| **Container Registry** | 백엔드 및 프론트엔드 Docker 이미지 저장용 사설 레지스트리 사용
- Public Registry의 보안 이슈 방지
- 이미지의 취약점 분석 및 보안성 향상 | +| **Object Storage** | 이미지 정적 파일 저장 및 제공
- NCP CDN과 연결하여 빠르고 효율적인 콘텐츠 전달 | + + + diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..a7ac9f9 --- /dev/null +++ b/build.sh @@ -0,0 +1,5 @@ +#!/bin/sh +cd ../ +mkdir output +cp -R ./frontend/* ./output +cp -R ./output ./frontend/ \ No newline at end of file diff --git a/components.json b/components.json new file mode 100644 index 0000000..6d3998d --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/eslint.config.js b/eslint.config.js index 092408a..f98114c 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,28 +1,43 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' +import js from "@eslint/js"; +import globals from "globals"; +import react from "eslint-plugin-react"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "typescript-eslint"; export default tseslint.config( - { ignores: ['dist'] }, + { ignores: ["dist"] }, { extends: [js.configs.recommended, ...tseslint.configs.recommended], - files: ['**/*.{ts,tsx}'], + files: ["**/*.{ts,tsx}"], languageOptions: { ecmaVersion: 2020, globals: globals.browser, }, plugins: { - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, + react, + "react-hooks": reactHooks, + "react-refresh": reactRefresh, }, rules: { ...reactHooks.configs.recommended.rules, - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], + "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], + "react/react-in-jsx-scope": "off", + "react/prop-types": "off", + "react/no-unused-state": "error", + "react/self-closing-comp": "warn", + semi: ["error", "always"], + quotes: ["error", "double"], + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "warn", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-ts-comment": "off", + "array-callback-return": "off", }, - }, -) + settings: { + react: { + version: "detect", + }, + }, + } +); diff --git a/index.html b/index.html index c9f581b..afba4c7 100644 --- a/index.html +++ b/index.html @@ -1,17 +1,97 @@ - + - - - - + + + + + 사랑꾼 + - - sarang-mate + TS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + diff --git a/package.json b/package.json index 9f47c05..6220ef8 100644 --- a/package.json +++ b/package.json @@ -8,26 +8,73 @@ "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", - "generate-pwa-icons": "pwa-assets-generator" + "generate-pwa-icons": "pwa-assets-generator", + "prepare": "husky", + "lint-staged": "lint-staged", + "test": "vitest", + "prettier": "npx prettier --write ." }, "dependencies": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "@lukemorales/query-key-factory": "^1.3.4", + "@radix-ui/react-alert-dialog": "^1.1.13", + "@radix-ui/react-checkbox": "^1.2.2", + "@radix-ui/react-dialog": "^1.1.11", + "@radix-ui/react-slot": "^1.2.0", + "@radix-ui/react-switch": "^1.2.2", + "@tailwindcss/vite": "^4.1.3", + "@tanstack/react-query": "^5.74.3", + "@types/js-cookie": "^3.0.6", + "axios": "^1.8.4", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "embla-carousel-react": "^8.6.0", + "js-cookie": "^3.0.5", + "lottie-react": "^2.4.1", + "lucide-react": "^0.487.0", + "react": "^18.3.1", + "react-datepicker": "^8.3.0", + "react-dom": "^18.3.1", + "react-error-boundary": "^6.0.0", + "react-mobile-picker": "^1.1.1", + "react-router": "^7.5.0", + "tailwind-merge": "^3.1.0", + "tailwindcss": "^4.1.3", + "tailwindcss-animate": "^1.0.7", + "tw-animate-css": "^1.2.5", + "vaul": "^1.1.2", + "zustand": "^5.0.3" }, "devDependencies": { "@eslint/js": "^9.18.0", - "@types/react": "^19.0.8", - "@types/react-dom": "^19.0.3", + "@tanstack/react-query-devtools": "^5.74.9", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.3.0", + "@testing-library/user-event": "^14.6.1", + "@types/node": "^22.14.0", + "@types/react": "^18.3.20", + "@types/react-dom": "^18.3.6", "@vite-pwa/assets-generator": "^0.2.6", "@vitejs/plugin-react": "^4.2.1", - "eslint": "^9.18.0", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.18", + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.1.1", + "eslint-plugin-prettier": "^5.2.6", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "firebase": "^11.6.0", "globals": "^15.14.0", + "happy-dom": "^17.4.4", + "husky": "^9.1.7", + "lint-staged": "^15.5.0", + "msw": "^2.7.3", + "prettier": "^3.5.3", + "prettier-plugin-tailwindcss": "^0.6.11", "typescript": "~5.7.2", - "typescript-eslint": "^8.20.0", + "typescript-eslint": "^8.29.0", "vite": "^6.0.11", - "vite-plugin-pwa": "^0.21.1", + "vite-plugin-pwa": "^0.21.2", + "vite-plugin-svgr": "^4.3.0", + "vitest": "^3.1.1", "workbox-core": "^7.3.0", "workbox-precaching": "^7.3.0", "workbox-routing": "^7.3.0", @@ -37,5 +84,15 @@ "resolutions": { "sharp": "0.32.6", "sharp-ico": "0.1.5" + }, + "msw": { + "workerDirectory": [ + "public" + ] + }, + "lint-staged": { + "*.{js,jsx,ts,tsx}": [ + "eslint --cache --fix --no-ignore" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2f9728..2d50dfe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,52 +12,181 @@ importers: .: dependencies: + '@lukemorales/query-key-factory': + specifier: ^1.3.4 + version: 1.3.4(@tanstack/query-core@5.74.3)(@tanstack/react-query@5.74.3(react@18.3.1)) + '@radix-ui/react-alert-dialog': + specifier: ^1.1.13 + version: 1.1.13(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-checkbox': + specifier: ^1.2.2 + version: 1.2.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': + specifier: ^1.1.11 + version: 1.1.11(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': + specifier: ^1.2.0 + version: 1.2.0(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-switch': + specifier: ^1.2.2 + version: 1.2.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tailwindcss/vite': + specifier: ^4.1.3 + version: 4.1.3(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1)) + '@tanstack/react-query': + specifier: ^5.74.3 + version: 5.74.3(react@18.3.1) + '@types/js-cookie': + specifier: ^3.0.6 + version: 3.0.6 + axios: + specifier: ^1.8.4 + version: 1.8.4 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + embla-carousel-react: + specifier: ^8.6.0 + version: 8.6.0(react@18.3.1) + js-cookie: + specifier: ^3.0.5 + version: 3.0.5 + lottie-react: + specifier: ^2.4.1 + version: 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + lucide-react: + specifier: ^0.487.0 + version: 0.487.0(react@18.3.1) react: - specifier: ^19.0.0 - version: 19.1.0 + specifier: ^18.3.1 + version: 18.3.1 + react-datepicker: + specifier: ^8.3.0 + version: 8.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-dom: - specifier: ^19.0.0 - version: 19.1.0(react@19.1.0) + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-error-boundary: + specifier: ^6.0.0 + version: 6.0.0(react@18.3.1) + react-mobile-picker: + specifier: ^1.1.1 + version: 1.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: + specifier: ^7.5.0 + version: 7.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwind-merge: + specifier: ^3.1.0 + version: 3.1.0 + tailwindcss: + specifier: ^4.1.3 + version: 4.1.3 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@4.1.3) + tw-animate-css: + specifier: ^1.2.5 + version: 1.2.5 + vaul: + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + zustand: + specifier: ^5.0.3 + version: 5.0.3(@types/react@18.3.20)(react@18.3.1) devDependencies: '@eslint/js': specifier: ^9.18.0 version: 9.23.0 + '@tanstack/react-query-devtools': + specifier: ^5.74.9 + version: 5.74.9(@tanstack/react-query@5.74.3(react@18.3.1))(react@18.3.1) + '@testing-library/jest-dom': + specifier: ^6.6.3 + version: 6.6.3 + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': + specifier: ^14.6.1 + version: 14.6.1(@testing-library/dom@10.4.0) + '@types/node': + specifier: ^22.14.0 + version: 22.14.0 '@types/react': - specifier: ^19.0.8 - version: 19.0.12 + specifier: ^18.3.20 + version: 18.3.20 '@types/react-dom': - specifier: ^19.0.3 - version: 19.0.4(@types/react@19.0.12) + specifier: ^18.3.6 + version: 18.3.6(@types/react@18.3.20) '@vite-pwa/assets-generator': specifier: ^0.2.6 version: 0.2.6 '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.3.4(vite@6.2.4(jiti@1.21.7)(terser@5.39.0)) + version: 4.3.4(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1)) eslint: - specifier: ^9.18.0 - version: 9.23.0(jiti@1.21.7) + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) + eslint-config-prettier: + specifier: ^10.1.1 + version: 10.1.1(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-prettier: + specifier: ^5.2.6 + version: 5.2.6(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3) + eslint-plugin-react: + specifier: ^7.37.5 + version: 7.37.5(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-react-hooks: - specifier: ^5.0.0 - version: 5.2.0(eslint@9.23.0(jiti@1.21.7)) + specifier: ^5.2.0 + version: 5.2.0(eslint@9.23.0(jiti@2.4.2)) eslint-plugin-react-refresh: - specifier: ^0.4.18 - version: 0.4.19(eslint@9.23.0(jiti@1.21.7)) + specifier: ^0.4.19 + version: 0.4.19(eslint@9.23.0(jiti@2.4.2)) + firebase: + specifier: ^11.6.0 + version: 11.6.0 globals: specifier: ^15.14.0 version: 15.15.0 + happy-dom: + specifier: ^17.4.4 + version: 17.4.4 + husky: + specifier: ^9.1.7 + version: 9.1.7 + lint-staged: + specifier: ^15.5.0 + version: 15.5.0 + msw: + specifier: ^2.7.3 + version: 2.7.3(@types/node@22.14.0)(typescript@5.7.3) + prettier: + specifier: ^3.5.3 + version: 3.5.3 + prettier-plugin-tailwindcss: + specifier: ^0.6.11 + version: 0.6.11(prettier@3.5.3) typescript: specifier: ~5.7.2 version: 5.7.3 typescript-eslint: - specifier: ^8.20.0 - version: 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) + specifier: ^8.29.0 + version: 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) vite: specifier: ^6.0.11 - version: 6.2.4(jiti@1.21.7)(terser@5.39.0) + version: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) vite-plugin-pwa: - specifier: ^0.21.1 - version: 0.21.2(@vite-pwa/assets-generator@0.2.6)(vite@6.2.4(jiti@1.21.7)(terser@5.39.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) + specifier: ^0.21.2 + version: 0.21.2(@vite-pwa/assets-generator@0.2.6)(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) + vite-plugin-svgr: + specifier: ^4.3.0 + version: 4.3.0(rollup@2.79.2)(typescript@5.7.3)(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1)) + vitest: + specifier: ^3.1.1 + version: 3.1.1(@types/node@22.14.0)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.2)(msw@2.7.3(@types/node@22.14.0)(typescript@5.7.3))(terser@5.39.0)(yaml@2.7.1) workbox-core: specifier: ^7.3.0 version: 7.3.0 @@ -76,6 +205,9 @@ importers: packages: + '@adobe/css-tools@4.4.2': + resolution: {integrity: sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -89,6 +221,9 @@ packages: peerDependencies: ajv: '>=8' + '@asamuzakjp/css-color@3.1.1': + resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -586,9 +721,46 @@ packages: resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} + '@bundled-es-modules/cookie@2.0.1': + resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} + + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + + '@bundled-es-modules/tough-cookie@0.1.6': + resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + '@canvas/image-data@1.0.0': resolution: {integrity: sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw==} + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.2': + resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.8': + resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + '@esbuild/aix-ppc64@0.25.2': resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} engines: {node: '>=18'} @@ -777,6 +949,246 @@ packages: resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@firebase/analytics-compat@0.2.18': + resolution: {integrity: sha512-Hw9mzsSMZaQu6wrTbi3kYYwGw9nBqOHr47pVLxfr5v8CalsdrG5gfs9XUlPOZjHRVISp3oQrh1j7d3E+ulHPjQ==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/analytics-types@0.8.3': + resolution: {integrity: sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==} + + '@firebase/analytics@0.10.12': + resolution: {integrity: sha512-iDCGnw6qdFqwI5ywkgece99WADJNoymu+nLIQI4fZM/vCZ3bEo4wlpEetW71s1HqGpI0hQStiPhqVjFxDb2yyw==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/app-check-compat@0.3.20': + resolution: {integrity: sha512-/twgmlnNAaZ/wbz3kcQrL/26b+X+zUX+lBmu5LwwEcWcpnb+mrVEAKhD7/ttm52dxYiSWtLDeuXy3FXBhqBC5A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/app-check-interop-types@0.3.3': + resolution: {integrity: sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==} + + '@firebase/app-check-types@0.5.3': + resolution: {integrity: sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==} + + '@firebase/app-check@0.8.13': + resolution: {integrity: sha512-ONsgml8/dplUOAP42JQO6hhiWDEwR9+RUTLenxAN9S8N6gel/sDQ9Ci721Py1oASMGdDU8v9R7xAZxzvOX5lPg==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/app-compat@0.2.53': + resolution: {integrity: sha512-vDeZSit0q4NyaDIVcaiJF3zhLgguP6yc0JwQAfpTyllgt8XMtkMFyY/MxJtFrK2ocpQX/yCbV2DXwvpY2NVuJw==} + engines: {node: '>=18.0.0'} + + '@firebase/app-types@0.9.3': + resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} + + '@firebase/app@0.11.4': + resolution: {integrity: sha512-GPREsZjfSaHzwyC6cI/Cqvzf6zxqMzya+25tSpUstdqC2w0IdfxEfOMjfdW7bDfVEf4Rb4Nb6gfoOAgVSp4c4g==} + engines: {node: '>=18.0.0'} + + '@firebase/auth-compat@0.5.20': + resolution: {integrity: sha512-8FwODTSBnaqGQbKfML7LcpzGGPyouB7YHg3dZq+CZMziVc7oBY1jJeNvpnM1hAQoVuTjWPXoRrCltdGeOlkKfQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/auth-interop-types@0.2.4': + resolution: {integrity: sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==} + + '@firebase/auth-types@0.13.0': + resolution: {integrity: sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==} + peerDependencies: + '@firebase/app-types': 0.x + '@firebase/util': 1.x + + '@firebase/auth@1.10.0': + resolution: {integrity: sha512-S7SqBsN7sIQsftNE3bitLlK+4bWrTHY+Rx2JFlNitgVYu2nK8W8ZQrkG8GCEwiFPq0B2vZ9pO5kVTFfq2sP96A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app': 0.x + '@react-native-async-storage/async-storage': ^1.18.1 + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@firebase/component@0.6.13': + resolution: {integrity: sha512-I/Eg1NpAtZ8AAfq8mpdfXnuUpcLxIDdCDtTzWSh+FXnp/9eCKJ3SNbOCKrUCyhLzNa2SiPJYruei0sxVjaOTeg==} + engines: {node: '>=18.0.0'} + + '@firebase/data-connect@0.3.3': + resolution: {integrity: sha512-JsgppNX1wcQYP5bg4Sg6WTS7S0XazklSjr1fG3ox9DHtt4LOQwJ3X1/c81mKMIZxocV22ujiwLYQWG6Y9D1FiQ==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/database-compat@2.0.5': + resolution: {integrity: sha512-CNf1UbvWh6qIaSf4sn6sx2DTDz/em/D7QxULH1LTxxDQHr9+CeYGvlAqrKnk4ZH0P0eIHyQFQU7RwkUJI0B9gQ==} + engines: {node: '>=18.0.0'} + + '@firebase/database-types@1.0.10': + resolution: {integrity: sha512-mH6RC1E9/Pv8jf1/p+M8YFTX+iu+iHDN89hecvyO7wHrI4R1V0TXjxOHvX3nLJN1sfh0CWG6CHZ0VlrSmK/cwg==} + + '@firebase/database@1.0.14': + resolution: {integrity: sha512-9nxYtkHAG02/Nh2Ssms1T4BbWPPjiwohCvkHDUl4hNxnki1kPgsLo5xe9kXNzbacOStmVys+RUXvwzynQSKmUQ==} + engines: {node: '>=18.0.0'} + + '@firebase/firestore-compat@0.3.45': + resolution: {integrity: sha512-uRvi7AYPmsDl7UZwPyV7jgDGYusEZ2+U2g7MndbQHKIA8fNHpYC6QrzMs58+/IjX+kF/lkUn67Vrr0AkVjlY+Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/firestore-types@3.0.3': + resolution: {integrity: sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==} + peerDependencies: + '@firebase/app-types': 0.x + '@firebase/util': 1.x + + '@firebase/firestore@4.7.10': + resolution: {integrity: sha512-6nKsyo2U+jYSCcSE5sjMdDNA23DMUvYPUvsYGg09CNvcTO8GGKsPs7SpOhspsB91mbacq+u627CDAx3FUhPSSQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/functions-compat@0.3.20': + resolution: {integrity: sha512-iIudmYDAML6n3c7uXO2YTlzra2/J6lnMzmJTXNthvrKVMgNMaseNoQP1wKfchK84hMuSF8EkM4AvufwbJ+Juew==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/functions-types@0.6.3': + resolution: {integrity: sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==} + + '@firebase/functions@0.12.3': + resolution: {integrity: sha512-Wv7JZMUkKLb1goOWRtsu3t7m97uK6XQvjQLPvn8rncY91+VgdU72crqnaYCDI/ophNuBEmuK8mn0/pAnjUeA6A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/installations-compat@0.2.13': + resolution: {integrity: sha512-f/o6MqCI7LD/ulY9gvgkv6w5k6diaReD8BFHd/y/fEdpsXmFWYS/g28GXCB72bRVBOgPpkOUNl+VsMvDwlRKmw==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/installations-types@0.5.3': + resolution: {integrity: sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==} + peerDependencies: + '@firebase/app-types': 0.x + + '@firebase/installations@0.6.13': + resolution: {integrity: sha512-6ZpkUiaygPFwgVneYxuuOuHnSPnTA4KefLEaw/sKk/rNYgC7X6twaGfYb0sYLpbi9xV4i5jXsqZ3WO+yaguNgg==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/logger@0.4.4': + resolution: {integrity: sha512-mH0PEh1zoXGnaR8gD1DeGeNZtWFKbnz9hDO91dIml3iou1gpOnLqXQ2dJfB71dj6dpmUjcQ6phY3ZZJbjErr9g==} + engines: {node: '>=18.0.0'} + + '@firebase/messaging-compat@0.2.17': + resolution: {integrity: sha512-5Q+9IG7FuedusdWHVQRjpA3OVD9KUWp/IPegcv0s5qSqRLBjib7FlAeWxN+VL0Ew43tuPJBY2HKhEecuizmO1Q==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/messaging-interop-types@0.2.3': + resolution: {integrity: sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==} + + '@firebase/messaging@0.12.17': + resolution: {integrity: sha512-W3CnGhTm6Nx8XGb6E5/+jZTuxX/EK8Vur4QXvO1DwZta/t0xqWMRgO9vNsZFMYBqFV4o3j4F9qK/iddGYwWS6g==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/performance-compat@0.2.15': + resolution: {integrity: sha512-wUxsw7hGBEMN6XfvYQqwPIQp5LcJXawWM5tmYp6L7ClCoTQuEiCKHWWVurJgN8Q1YHzoHVgjNfPQAOVu29iMVg==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/performance-types@0.2.3': + resolution: {integrity: sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==} + + '@firebase/performance@0.7.2': + resolution: {integrity: sha512-DXLLp0R0jdxH/yTmv+WTkOzsLl8YYecXh4lGZE0dzqC0IV8k+AxpLSSWvOTCkAETze8yEU/iF+PtgYVlGjfMMQ==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/remote-config-compat@0.2.13': + resolution: {integrity: sha512-UmHoO7TxAEJPIZf8e1Hy6CeFGMeyjqSCpgoBkQZYXFI2JHhzxIyDpr8jVKJJN1dmAePKZ5EX7dC13CmcdTOl7Q==} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/remote-config-types@0.4.0': + resolution: {integrity: sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==} + + '@firebase/remote-config@0.6.0': + resolution: {integrity: sha512-Yrk4l5+6FJLPHC6irNHMzgTtJ3NfHXlAXVChCBdNFtgmzyGmufNs/sr8oA0auEfIJ5VpXCaThRh3P4OdQxiAlQ==} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/storage-compat@0.3.17': + resolution: {integrity: sha512-CBlODWEZ5b6MJWVh21VZioxwxNwVfPA9CAdsk+ZgVocJQQbE2oDW1XJoRcgthRY1HOitgbn4cVrM+NlQtuUYhw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app-compat': 0.x + + '@firebase/storage-types@0.8.3': + resolution: {integrity: sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==} + peerDependencies: + '@firebase/app-types': 0.x + '@firebase/util': 1.x + + '@firebase/storage@0.13.7': + resolution: {integrity: sha512-FkRyc24rK+Y6EaQ1tYFm3TevBnnfSNA0VyTfew2hrYyL/aYfatBg7HOgktUdB4kWMHNA9VoTotzZTGoLuK92wg==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app': 0.x + + '@firebase/util@1.11.0': + resolution: {integrity: sha512-PzSrhIr++KI6y4P6C/IdgBNMkEx0Ex6554/cYd0Hm+ovyFSJtJXqb/3OSIdnBoa2cpwZT1/GW56EmRc5qEc5fQ==} + engines: {node: '>=18.0.0'} + + '@firebase/vertexai@1.2.1': + resolution: {integrity: sha512-cukZ5ne2RsOWB4PB1EO6nTXgOLxPMKDJfEn+XnSV5ZKWM0ID5o0DvbyS59XihFaBzmy2SwJldP5ap7/xUnW4jA==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@firebase/app': 0.x + '@firebase/app-types': 0.x + + '@firebase/webchannel-wrapper@1.0.3': + resolution: {integrity: sha512-2xCRM9q9FlzGZCdgDMJwc0gyUkWFtkosy7Xxr6sFgQwn+wMNIWd7xIvYNauU1r64B5L5rsGKy/n9TKJ0aAFeqQ==} + + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react@0.27.8': + resolution: {integrity: sha512-EQJ4Th328y2wyHR3KzOUOoTW2UKjFk53fmyahfwExnFQ8vnsMYqKc+fFPOkeYtj5tcp1DUMiNJ7BFhed7e9ONw==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@grpc/grpc-js@1.9.15': + resolution: {integrity: sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==} + engines: {node: ^8.13.0 || >=10.10.0} + + '@grpc/proto-loader@0.7.13': + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + engines: {node: '>=6'} + hasBin: true + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -797,6 +1209,37 @@ packages: resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} engines: {node: '>=18.18'} + '@inquirer/confirm@5.1.9': + resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.1.10': + resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.11': + resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} + engines: {node: '>=18'} + + '@inquirer/type@3.0.6': + resolution: {integrity: sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -818,6 +1261,17 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@lukemorales/query-key-factory@1.3.4': + resolution: {integrity: sha512-A3frRDdkmaNNQi6mxIshsDk4chRXWoXa05US8fBo4kci/H+lVmujS6QrwQLLGIkNIRFGjMqp2uKjC4XsLdydRw==} + engines: {node: '>=14'} + peerDependencies: + '@tanstack/query-core': '>= 4.0.0' + '@tanstack/react-query': '>= 4.0.0' + + '@mswjs/interceptors@0.37.6': + resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} + engines: {node: '>=18'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -830,91 +1284,436 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@rollup/plugin-babel@5.3.1': - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + + '@pkgr/core@0.2.0': + resolution: {integrity: sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-alert-dialog@1.1.13': + resolution: {integrity: sha512-/uPs78OwxGxslYOG5TKeUsv9fZC0vo376cXSADdKirTmsLJU2au6L3n34c3p6W26rFDDDze/hwy4fYeNd0qdGA==} peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 + '@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/babel__core': + '@types/react': + optional: true + '@types/react-dom': optional: true - '@rollup/plugin-node-resolve@15.3.1': - resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} - engines: {node: '>=14.0.0'} + '@radix-ui/react-checkbox@1.2.3': + resolution: {integrity: sha512-pHVzDYsnaDmBlAuwim45y3soIN8H4R7KbkSVirGhXO+R/kO2OLCe0eucUEbddaTcdMHHdzcIGHtZSMSQlA+apw==} peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 + '@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: - rollup: + '@types/react': + optional: true + '@types/react-dom': optional: true - '@rollup/plugin-replace@2.4.2': - resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/plugin-terser@0.4.4': - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} - engines: {node: '>=14.0.0'} + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - rollup: + '@types/react': optional: true - '@rollup/pluginutils@3.1.0': - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} + '@radix-ui/react-dialog@1.1.11': + resolution: {integrity: sha512-yI7S1ipkP5/+99qhSI6nthfo/tR6bL6Zgxi/+1UO6qPa6UeM6nlafWcQ65vB4rU2XjgjMfMhI3k9Y5MztA62VQ==} peerDependencies: - rollup: ^1.20.0||^2.0.0 + '@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 - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} + '@radix-ui/react-dialog@1.1.13': + resolution: {integrity: sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + '@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: - rollup: + '@types/react': + optional: true + '@types/react-dom': optional: true - '@rollup/rollup-android-arm-eabi@4.38.0': - resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==} - cpu: [arm] - os: [android] + '@radix-ui/react-dismissable-layer@1.1.7': + resolution: {integrity: sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==} + 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 - '@rollup/rollup-android-arm64@4.38.0': - resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==} - cpu: [arm64] - os: [android] + '@radix-ui/react-dismissable-layer@1.1.9': + resolution: {integrity: sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==} + 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 - '@rollup/rollup-darwin-arm64@4.38.0': - resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} - cpu: [arm64] - os: [darwin] + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-darwin-x64@4.38.0': - resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} - cpu: [x64] - os: [darwin] + '@radix-ui/react-focus-scope@1.1.4': + resolution: {integrity: sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==} + 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 - '@rollup/rollup-freebsd-arm64@4.38.0': - resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==} - cpu: [arm64] - os: [freebsd] + '@radix-ui/react-focus-scope@1.1.6': + resolution: {integrity: sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==} + 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 - '@rollup/rollup-freebsd-x64@4.38.0': - resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==} - cpu: [x64] - os: [freebsd] + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.38.0': - resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==} - cpu: [arm] - os: [linux] + '@radix-ui/react-portal@1.1.6': + resolution: {integrity: sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==} + 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 - '@rollup/rollup-linux-arm-musleabihf@4.38.0': + '@radix-ui/react-portal@1.1.8': + resolution: {integrity: sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==} + 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 + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + 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 + + '@radix-ui/react-primitive@2.1.0': + resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} + 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 + + '@radix-ui/react-primitive@2.1.2': + resolution: {integrity: sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==} + 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 + + '@radix-ui/react-slot@1.2.0': + resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.2': + resolution: {integrity: sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.2.2': + resolution: {integrity: sha512-7Z8n6L+ifMIIYZ83f28qWSceUpkXuslI2FJ34+kDMTiyj91ENdpdQ7VCidrzj5JfwfZTeano/BnGBbu/jqa5rQ==} + 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 + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + + '@rollup/plugin-node-resolve@15.3.1': + resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-replace@2.4.2': + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + + '@rollup/plugin-terser@0.4.4': + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.38.0': + resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.38.0': + resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.38.0': + resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.38.0': + resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.38.0': + resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.38.0': + resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.38.0': + resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.38.0': resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==} cpu: [arm] os: [linux] @@ -982,6 +1781,201 @@ packages: '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0': + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0': + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0': + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@8.0.0': + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@8.1.0': + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@8.1.0': + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + + '@svgr/hast-util-to-babel-ast@8.0.0': + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + + '@svgr/plugin-jsx@8.1.0': + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@tailwindcss/node@4.1.3': + resolution: {integrity: sha512-H/6r6IPFJkCfBJZ2dKZiPJ7Ueb2wbL592+9bQEl2r73qbX6yGnmQVIfiUvDRB2YI0a3PWDrzUwkvQx1XW1bNkA==} + + '@tailwindcss/oxide-android-arm64@4.1.3': + resolution: {integrity: sha512-cxklKjtNLwFl3mDYw4XpEfBY+G8ssSg9ADL4Wm6//5woi3XGqlxFsnV5Zb6v07dxw1NvEX2uoqsxO/zWQsgR+g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.3': + resolution: {integrity: sha512-mqkf2tLR5VCrjBvuRDwzKNShRu99gCAVMkVsaEOFvv6cCjlEKXRecPu9DEnxp6STk5z+Vlbh1M5zY3nQCXMXhw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.3': + resolution: {integrity: sha512-7sGraGaWzXvCLyxrc7d+CCpUN3fYnkkcso3rCzwUmo/LteAl2ZGCDlGvDD8Y/1D3ngxT8KgDj1DSwOnNewKhmg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.3': + resolution: {integrity: sha512-E2+PbcbzIReaAYZe997wb9rId246yDkCwAakllAWSGqe6VTg9hHle67hfH6ExjpV2LSK/siRzBUs5wVff3RW9w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.3': + resolution: {integrity: sha512-GvfbJ8wjSSjbLFFE3UYz4Eh8i4L6GiEYqCtA8j2Zd2oXriPuom/Ah/64pg/szWycQpzRnbDiJozoxFU2oJZyfg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.3': + resolution: {integrity: sha512-35UkuCWQTeG9BHcBQXndDOrpsnt3Pj9NVIB4CgNiKmpG8GnCNXeMczkUpOoqcOhO6Cc/mM2W7kaQ/MTEENDDXg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.3': + resolution: {integrity: sha512-dm18aQiML5QCj9DQo7wMbt1Z2tl3Giht54uVR87a84X8qRtuXxUqnKQkRDK5B4bCOmcZ580lF9YcoMkbDYTXHQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.3': + resolution: {integrity: sha512-LMdTmGe/NPtGOaOfV2HuO7w07jI3cflPrVq5CXl+2O93DCewADK0uW1ORNAcfu2YxDUS035eY2W38TxrsqngxA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.3': + resolution: {integrity: sha512-aalNWwIi54bbFEizwl1/XpmdDrOaCjRFQRgtbv9slWjmNPuJJTIKPHf5/XXDARc9CneW9FkSTqTbyvNecYAEGw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.3': + resolution: {integrity: sha512-PEj7XR4OGTGoboTIAdXicKuWl4EQIjKHKuR+bFy9oYN7CFZo0eu74+70O4XuERX4yjqVZGAkCdglBODlgqcCXg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.3': + resolution: {integrity: sha512-T8gfxECWDBENotpw3HR9SmNiHC9AOJdxs+woasRZ8Q/J4VHN0OMs7F+4yVNZ9EVN26Wv6mZbK0jv7eHYuLJLwA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.3': + resolution: {integrity: sha512-t16lpHCU7LBxDe/8dCj9ntyNpXaSTAgxWm1u2XQP5NiIu4KGSyrDJJRlK9hJ4U9yJxx0UKCVI67MJWFNll5mOQ==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.3': + resolution: {integrity: sha512-lUI/QaDxLtlV52Lho6pu07CG9pSnRYLOPmKGIQjyHdTBagemc6HmgZxyjGAQ/5HMPrNeWBfTVIpQl0/jLXvWHQ==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@tanstack/query-core@5.74.3': + resolution: {integrity: sha512-Mqk+5o3qTuAiZML248XpNH8r2cOzl15+LTbUsZQEwvSvn1GU4VQhvqzAbil36p+MBxpr/58oBSnRzhrBevDhfg==} + + '@tanstack/query-devtools@5.74.7': + resolution: {integrity: sha512-nSNlfuGdnHf4yB0S+BoNYOE1o3oAH093weAYZolIHfS2stulyA/gWfSk/9H4ZFk5mAAHb5vNqAeJOmbdcGPEQw==} + + '@tanstack/react-query-devtools@5.74.9': + resolution: {integrity: sha512-6dMfeK/5OvC9E88/ziwiv1Pggqkgjker8V+pLJFrjh7O7E7S6yXJRNNr/KjA/c+z6d/i7HpDk8FF+oSr7mhYLg==} + peerDependencies: + '@tanstack/react-query': ^5.74.9 + react: ^18 || ^19 + + '@tanstack/react-query@5.74.3': + resolution: {integrity: sha512-QrycUn0wxjVPzITvQvOxFRdhlAwIoOQSuav7qWD4SWCoKCdLbyRZ2vji2GuBq/glaxbF4wBx3fqcYRDOt8KDTA==} + peerDependencies: + react: ^18 || ^19 + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.6.3': + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.3.0': + resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@testing-library/user-event@14.6.1': + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -994,26 +1988,44 @@ packages: '@types/babel__traverse@7.20.7': resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/js-cookie@3.0.6': + resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/react-dom@19.0.4': - resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==} + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} + + '@types/prop-types@15.7.14': + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + '@types/react-dom@18.3.6': + resolution: {integrity: sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==} peerDependencies: - '@types/react': ^19.0.0 + '@types/react': ^18.0.0 - '@types/react@19.0.12': - resolution: {integrity: sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==} + '@types/react@18.3.20': + resolution: {integrity: sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1075,6 +2087,35 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + '@vitest/expect@3.1.1': + resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} + + '@vitest/mocker@3.1.1': + resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.1.1': + resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} + + '@vitest/runner@3.1.1': + resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} + + '@vitest/snapshot@3.1.1': + resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} + + '@vitest/spy@3.1.1': + resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} + + '@vitest/utils@3.1.1': + resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1085,27 +2126,86 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -1113,6 +2213,9 @@ packages: async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -1121,6 +2224,9 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} @@ -1219,16 +2325,59 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001707: resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1246,6 +2395,14 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1263,9 +2420,26 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + core-js-compat@3.41.0: resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1274,9 +2448,20 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssstyle@4.3.0: + resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} + engines: {node: '>=18'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -1289,6 +2474,9 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -1298,6 +2486,9 @@ packages: supports-color: optional: true + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decode-bmp@0.2.1: resolution: {integrity: sha512-NiOaGe+GN0KJqi2STf24hfMkFitDUaIoUU3eKvP/wAbLe8o6FuW5n/x7MHPR0HKvBokp6MQY/j7w8lewEeVCIA==} engines: {node: '>=8.6.0'} @@ -1310,6 +2501,10 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -1332,10 +2527,34 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -1348,9 +2567,43 @@ packages: electron-to-chromium@1.5.129: resolution: {integrity: sha512-JlXUemX4s0+9f8mLqib/bHH8gOHf5elKS6KeWG3sk3xozb/JTq/RLXIv8OKUWiK4Ah00Wm88EFj5PYkFr4RUPA==} + embla-carousel-react@8.6.0: + resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==} + peerDependencies: + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + embla-carousel-reactive-utils@8.6.0: + resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==} + peerDependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: + resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-abstract@1.23.9: resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} @@ -1363,6 +2616,13 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1371,6 +2631,10 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + es-to-primitive@1.3.0: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} @@ -1388,6 +2652,26 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + eslint-config-prettier@10.1.1: + resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@5.2.6: + resolution: {integrity: sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + eslint-plugin-react-hooks@5.2.0: resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} @@ -1397,7 +2681,13 @@ packages: eslint-plugin-react-refresh@0.4.19: resolution: {integrity: sha512-eyy8pcr/YxSYjBoqIFSrlbn9i/xvxUFa8CjzAYo9cFjgGXqq1hyjihcpZvxRLalpaWmueWR81xn7vuKmAFijDQ==} peerDependencies: - eslint: '>=8.40' + eslint: '>=8.40' + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} @@ -1443,17 +2733,34 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + engines: {node: '>=12.0.0'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -1473,6 +2780,10 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + fdir@6.4.3: resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} peerDependencies: @@ -1496,6 +2807,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + firebase@11.6.0: + resolution: {integrity: sha512-Xqm6j6zszIEmI5nW1MPR8yTafoRTSrW3mWG9Lk9elCJtQDQSiTEkKZiNtUm9y6XfOPl8xoF1TNpxZe8HjgA0Og==} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -1503,10 +2817,23 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -1536,10 +2863,22 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -1547,6 +2886,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -1592,6 +2935,14 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql@16.10.0: + resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + happy-dom@17.4.4: + resolution: {integrity: sha512-/Pb0ctk3HTZ5xEL3BZ0hK1AqDSAUuRQitOmROPHhfUYEWpmTImwfD8vFDGADmMAX0JYgbcgxWoLFKtsWhcpuVA==} + engines: {node: '>=18.0.0'} + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -1619,9 +2970,40 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + ico-endec@0.1.6: resolution: {integrity: sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} @@ -1640,6 +3022,10 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -1658,6 +3044,9 @@ packages: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -1697,6 +3086,18 @@ packages: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + is-generator-function@1.1.0: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} @@ -1712,6 +3113,9 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -1724,6 +3128,9 @@ packages: resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} engines: {node: '>=0.10.0'} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -1744,6 +3151,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -1774,6 +3185,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -1783,6 +3198,14 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1790,6 +3213,15 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsdom@26.0.0: + resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -1803,6 +3235,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -1827,6 +3262,10 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -1838,10 +3277,93 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-darwin-arm64@1.29.2: + resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.2: + resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.2: + resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.2: + resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.2: + resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.2: + resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.2: + resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.2: + resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.2: + resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.2: + resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.2: + resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + engines: {node: '>= 12.0.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.5.0: + resolution: {integrity: sha512-WyCzSbfYGhK7cU+UuDDkzUiytbfbi0ZdPy2orwtM75P3WTtQBzmG40cCxIa8Ii2+XjfxzLH6Be46tUfWS85Xfg==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.2.5: + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + engines: {node: '>=18.0.0'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -1854,16 +3376,60 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + long@5.3.1: + resolution: {integrity: sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lottie-react@2.4.1: + resolution: {integrity: sha512-LQrH7jlkigIIv++wIyrOYFLHSKQpEY4zehPicL9bQsrt1rnoKRYCYgpCUe5maqylNtacy58/sQDZTkwMcTRxZw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + lottie-web@5.12.2: + resolution: {integrity: sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==} + + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@0.487.0: + resolution: {integrity: sha512-aKqhOQ+YmFnwq8dWgGjOuLc8V1R9/c/yOd+zDY4+ohsR2Jo05lSGc3WsstYPIzcTpeosN7LoCkLReUUITvaIvw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1872,10 +3438,30 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -1896,6 +3482,20 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + msw@2.7.3: + resolution: {integrity: sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1907,6 +3507,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-abi@3.74.0: resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} engines: {node: '>=10'} @@ -1917,6 +3520,17 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -1929,13 +3543,36 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -1952,6 +3589,13 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -1964,9 +3608,27 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1978,6 +3640,11 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -1995,6 +3662,70 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-tailwindcss@0.6.11: + resolution: {integrity: sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} @@ -2003,6 +3734,23 @@ packages: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -2010,6 +3758,9 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2020,23 +3771,90 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-dom@19.1.0: - resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + react-datepicker@8.3.0: + resolution: {integrity: sha512-DhfrIJnTPJTUVRtXU7c7zooug40rD6q+Fc8UTCt19dYEotLpDQgTN98MfocY6Rc4S99oOFFEoxyanOM/TKauuw==} + peerDependencies: + react: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.9.0 || ^17 || ^18 || ^19 || ^19.0.0-rc + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-error-boundary@6.0.0: + resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==} + peerDependencies: + react: '>=16.13.1' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-mobile-picker@1.1.1: + resolution: {integrity: sha512-Yv5ND0rtSFnzT+qvuD8wiOfAcEm/abSLNwaUnIS74Hii1x0IIOtRHB7Jis/O9ve3y7YQkaYFyk/wvlKoTv1Aog==} peerDependencies: - react: ^19.1.0 + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + 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 + + react-router@7.5.0: + resolution: {integrity: sha512-estOHrRlDMKdlQa6Mj32gIks4J+AxNsYoE0DbTTxiMy2mPzZuWSDU+N85/r1IlNR7kGfznF3VCUlvc5IUO+B9g==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + 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 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -2069,10 +3887,17 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -2082,10 +3907,21 @@ packages: engines: {node: '>= 0.4'} hasBin: true + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rollup@2.79.2: resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} engines: {node: '>=10.0.0'} @@ -2096,6 +3932,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -2114,8 +3953,15 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} - scheduler@0.26.0: - resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -2129,6 +3975,9 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2172,6 +4021,13 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -2181,9 +4037,20 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + smob@1.5.0: resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2203,13 +4070,41 @@ packages: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + streamx@2.22.0: resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + string.prototype.trim@1.2.10: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} @@ -2229,10 +4124,26 @@ packages: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-comments@2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -2249,6 +4160,34 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.11.2: + resolution: {integrity: sha512-1IUffI8zZ8qUMB3NUJIjk0RpLroG/8NkQDAWH1NbB2iJ0/5pn3M8rxfNzMz4GH9OnYaGYn31LEDSXJp/qIlxgA==} + engines: {node: ^14.18.0 || >=16.0.0} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tailwind-merge@3.1.0: + resolution: {integrity: sha512-aV27Oj8B7U/tAOMhJsSGdWqelfmudnGMdXIlMnk1JfsjwSjts6o8HyfN7SFH3EztzH4YH8kk6GbLTHzITJO39Q==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@4.1.3: + resolution: {integrity: sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + tar-fs@2.1.2: resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} @@ -2278,10 +4217,35 @@ packages: text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.12: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + tldts-core@6.1.85: + resolution: {integrity: sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==} + + tldts@6.1.85: + resolution: {integrity: sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==} + hasBin: true + to-data-view@1.1.0: resolution: {integrity: sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==} @@ -2289,18 +4253,39 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@5.1.0: + resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} + engines: {node: '>=18'} + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + turbo-stream@2.4.0: + resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} + + tw-animate-css@1.2.5: + resolution: {integrity: sha512-ABzjfgVo+fDbhRREGL4KQZUqqdPgvc5zVrLyeW9/6mVqvaDepXc7EvedA+pYmMnIOsUAQMwcWzNvom26J2qYvQ==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2309,6 +4294,14 @@ packages: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@4.39.1: + resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==} + engines: {node: '>=16'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -2344,6 +4337,9 @@ packages: unconfig@0.3.13: resolution: {integrity: sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -2364,6 +4360,10 @@ packages: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -2381,9 +4381,43 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + 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 + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + 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 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + vaul@1.1.2: + resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} + 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 + + vite-node@3.1.1: + resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + vite-plugin-pwa@0.21.2: resolution: {integrity: sha512-vFhH6Waw8itNu37hWUJxL50q+CBbNcMVzsKaYHQVrfxTt3ihk3PeLO22SbiP1UNWzcEPaTQv+YVxe4G0KOjAkg==} engines: {node: '>=16.0.0'} @@ -2396,6 +4430,11 @@ packages: '@vite-pwa/assets-generator': optional: true + vite-plugin-svgr@4.3.0: + resolution: {integrity: sha512-Jy9qLB2/PyWklpYy0xk0UU3TlU0t2UMpJXZvf+hWII1lAmRHrOUKi11Uw8N3rxoNk7atZNYO3pR3vI1f7oi+6w==} + peerDependencies: + vite: '>=2.6.0' + vite@6.2.4: resolution: {integrity: sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -2436,9 +4475,72 @@ packages: yaml: optional: true + vitest@3.1.1: + resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.1.1 + '@vitest/ui': 3.1.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + web-vitals@4.2.4: + resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -2463,6 +4565,11 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -2516,18 +4623,90 @@ packages: workbox-window@7.3.0: resolution: {integrity: sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==} + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + 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 + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + + zustand@5.0.3: + resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + snapshots: + '@adobe/css-tools@4.4.2': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -2542,6 +4721,15 @@ snapshots: jsonpointer: 5.0.1 leven: 3.1.0 + '@asamuzakjp/css-color@3.1.1': + dependencies: + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 10.4.3 + optional: true + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -3191,8 +5379,46 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@bundled-es-modules/cookie@2.0.1': + dependencies: + cookie: 0.7.2 + + '@bundled-es-modules/statuses@1.0.1': + dependencies: + statuses: 2.0.1 + + '@bundled-es-modules/tough-cookie@0.1.6': + dependencies: + '@types/tough-cookie': 4.0.5 + tough-cookie: 4.1.4 + '@canvas/image-data@1.0.0': {} + '@csstools/color-helpers@5.0.2': + optional: true + + '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + optional: true + + '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + optional: true + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + optional: true + + '@csstools/css-tokenizer@3.0.3': + optional: true + '@esbuild/aix-ppc64@0.25.2': optional: true @@ -3268,9 +5494,9 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@2.4.2))': dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.23.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -3303,14 +5529,369 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.23.0': {} + '@eslint/js@9.23.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.7': + dependencies: + '@eslint/core': 0.12.0 + levn: 0.4.1 + + '@firebase/analytics-compat@0.2.18(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4)': + dependencies: + '@firebase/analytics': 0.10.12(@firebase/app@0.11.4) + '@firebase/analytics-types': 0.8.3 + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/analytics-types@0.8.3': {} + + '@firebase/analytics@0.10.12(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/installations': 0.6.13(@firebase/app@0.11.4) + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/app-check-compat@0.3.20(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-check': 0.8.13(@firebase/app@0.11.4) + '@firebase/app-check-types': 0.5.3 + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/app-check-interop-types@0.3.3': {} + + '@firebase/app-check-types@0.5.3': {} + + '@firebase/app-check@0.8.13(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/app-compat@0.2.53': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/app-types@0.9.3': {} + + '@firebase/app@0.11.4': + dependencies: + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + idb: 7.1.1 + tslib: 2.8.1 + + '@firebase/auth-compat@0.5.20(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/auth': 1.10.0(@firebase/app@0.11.4) + '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.11.0) + '@firebase/component': 0.6.13 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + - '@react-native-async-storage/async-storage' + + '@firebase/auth-interop-types@0.2.4': {} + + '@firebase/auth-types@0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.11.0)': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.11.0 + + '@firebase/auth@1.10.0(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/component@0.6.13': + dependencies: + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/data-connect@0.3.3(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/auth-interop-types': 0.2.4 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/database-compat@2.0.5': + dependencies: + '@firebase/component': 0.6.13 + '@firebase/database': 1.0.14 + '@firebase/database-types': 1.0.10 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/database-types@1.0.10': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.11.0 + + '@firebase/database@1.0.14': + dependencies: + '@firebase/app-check-interop-types': 0.3.3 + '@firebase/auth-interop-types': 0.2.4 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + faye-websocket: 0.11.4 + tslib: 2.8.1 + + '@firebase/firestore-compat@0.3.45(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/firestore': 4.7.10(@firebase/app@0.11.4) + '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.11.0) + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + + '@firebase/firestore-types@3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.11.0)': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.11.0 + + '@firebase/firestore@4.7.10(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + '@firebase/webchannel-wrapper': 1.0.3 + '@grpc/grpc-js': 1.9.15 + '@grpc/proto-loader': 0.7.13 + tslib: 2.8.1 + + '@firebase/functions-compat@0.3.20(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/functions': 0.12.3(@firebase/app@0.11.4) + '@firebase/functions-types': 0.6.3 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/functions-types@0.6.3': {} + + '@firebase/functions@0.12.3(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/app-check-interop-types': 0.3.3 + '@firebase/auth-interop-types': 0.2.4 + '@firebase/component': 0.6.13 + '@firebase/messaging-interop-types': 0.2.3 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/installations-compat@0.2.13(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/installations': 0.6.13(@firebase/app@0.11.4) + '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + + '@firebase/installations-types@0.5.3(@firebase/app-types@0.9.3)': + dependencies: + '@firebase/app-types': 0.9.3 + + '@firebase/installations@0.6.13(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/util': 1.11.0 + idb: 7.1.1 + tslib: 2.8.1 + + '@firebase/logger@0.4.4': + dependencies: + tslib: 2.8.1 + + '@firebase/messaging-compat@0.2.17(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/messaging': 0.12.17(@firebase/app@0.11.4) + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/messaging-interop-types@0.2.3': {} + + '@firebase/messaging@0.12.17(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/installations': 0.6.13(@firebase/app@0.11.4) + '@firebase/messaging-interop-types': 0.2.3 + '@firebase/util': 1.11.0 + idb: 7.1.1 + tslib: 2.8.1 + + '@firebase/performance-compat@0.2.15(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/performance': 0.7.2(@firebase/app@0.11.4) + '@firebase/performance-types': 0.2.3 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/performance-types@0.2.3': {} + + '@firebase/performance@0.7.2(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/installations': 0.6.13(@firebase/app@0.11.4) + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + web-vitals: 4.2.4 + + '@firebase/remote-config-compat@0.2.13(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/remote-config': 0.6.0(@firebase/app@0.11.4) + '@firebase/remote-config-types': 0.4.0 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + + '@firebase/remote-config-types@0.4.0': {} + + '@firebase/remote-config@0.6.0(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/installations': 0.6.13(@firebase/app@0.11.4) + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/storage-compat@0.3.17(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app-compat': 0.2.53 + '@firebase/component': 0.6.13 + '@firebase/storage': 0.13.7(@firebase/app@0.11.4) + '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.11.0) + '@firebase/util': 1.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@firebase/app' + - '@firebase/app-types' + + '@firebase/storage-types@0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.11.0)': + dependencies: + '@firebase/app-types': 0.9.3 + '@firebase/util': 1.11.0 + + '@firebase/storage@0.13.7(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/component': 0.6.13 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/util@1.11.0': + dependencies: + tslib: 2.8.1 + + '@firebase/vertexai@1.2.1(@firebase/app-types@0.9.3)(@firebase/app@0.11.4)': + dependencies: + '@firebase/app': 0.11.4 + '@firebase/app-check-interop-types': 0.3.3 + '@firebase/app-types': 0.9.3 + '@firebase/component': 0.6.13 + '@firebase/logger': 0.4.4 + '@firebase/util': 1.11.0 + tslib: 2.8.1 + + '@firebase/webchannel-wrapper@1.0.3': {} + + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.13 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/react@0.27.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/utils': 0.2.9 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tabbable: 6.2.0 - '@eslint/object-schema@2.1.6': {} + '@floating-ui/utils@0.2.9': {} - '@eslint/plugin-kit@0.2.7': + '@grpc/grpc-js@1.9.15': dependencies: - '@eslint/core': 0.12.0 - levn: 0.4.1 + '@grpc/proto-loader': 0.7.13 + '@types/node': 22.14.0 + + '@grpc/proto-loader@0.7.13': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.1 + protobufjs: 7.4.0 + yargs: 17.7.2 '@humanfs/core@0.19.1': {} @@ -3325,6 +5906,32 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} + '@inquirer/confirm@5.1.9(@types/node@22.14.0)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@22.14.0) + '@inquirer/type': 3.0.6(@types/node@22.14.0) + optionalDependencies: + '@types/node': 22.14.0 + + '@inquirer/core@10.1.10(@types/node@22.14.0)': + dependencies: + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.6(@types/node@22.14.0) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 22.14.0 + + '@inquirer/figures@1.0.11': {} + + '@inquirer/type@3.0.6(@types/node@22.14.0)': + optionalDependencies: + '@types/node': 22.14.0 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -3347,6 +5954,20 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@lukemorales/query-key-factory@1.3.4(@tanstack/query-core@5.74.3)(@tanstack/react-query@5.74.3(react@18.3.1))': + dependencies: + '@tanstack/query-core': 5.74.3 + '@tanstack/react-query': 5.74.3(react@18.3.1) + + '@mswjs/interceptors@0.37.6': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3359,6 +5980,313 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@open-draft/deferred-promise@2.2.0': {} + + '@open-draft/logger@0.3.0': + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + + '@pkgr/core@0.2.0': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-alert-dialog@1.1.13(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.13(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-checkbox@1.2.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.20)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-context@1.1.2(@types/react@18.3.20)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-dialog@1.1.11(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.7(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-portal': 1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.0(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.20)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.20)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-dialog@1.1.13(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-portal': 1.1.8(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.20)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.20)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-dismissable-layer@1.1.7(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-dismissable-layer@1.1.9(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-focus-guards@1.1.2(@types/react@18.3.20)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-focus-scope@1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-focus-scope@1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-id@1.1.1(@types/react@18.3.20)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-portal@1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-portal@1.1.8(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-presence@1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-primitive@2.1.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-primitive@2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.2(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-slot@1.2.0(@types/react@18.3.20)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-slot@1.2.2(@types/react@18.3.20)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-switch@1.2.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.20)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.20)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.20)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.20)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.20)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.20)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.20)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + + '@radix-ui/react-use-size@1.1.1(@types/react@18.3.20)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.20)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.20 + '@rollup/plugin-babel@5.3.1(@babel/core@7.26.10)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: '@babel/core': 7.26.10 @@ -3476,6 +6404,189 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.12 + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@svgr/babel-preset@8.1.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.10) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.10) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.10) + + '@svgr/core@8.1.0(typescript@5.7.3)': + dependencies: + '@babel/core': 7.26.10 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.10) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.7.3) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@svgr/hast-util-to-babel-ast@8.0.0': + dependencies: + '@babel/types': 7.27.0 + entities: 4.5.0 + + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.7.3))': + dependencies: + '@babel/core': 7.26.10 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.10) + '@svgr/core': 8.1.0(typescript@5.7.3) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@tailwindcss/node@4.1.3': + dependencies: + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + tailwindcss: 4.1.3 + + '@tailwindcss/oxide-android-arm64@4.1.3': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.3': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.3': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.3': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.3': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.3': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.3': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.3': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.3': + optional: true + + '@tailwindcss/oxide@4.1.3': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.3 + '@tailwindcss/oxide-darwin-arm64': 4.1.3 + '@tailwindcss/oxide-darwin-x64': 4.1.3 + '@tailwindcss/oxide-freebsd-x64': 4.1.3 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.3 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.3 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.3 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.3 + '@tailwindcss/oxide-linux-x64-musl': 4.1.3 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.3 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.3 + + '@tailwindcss/vite@4.1.3(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1))': + dependencies: + '@tailwindcss/node': 4.1.3 + '@tailwindcss/oxide': 4.1.3 + tailwindcss: 4.1.3 + vite: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) + + '@tanstack/query-core@5.74.3': {} + + '@tanstack/query-devtools@5.74.7': {} + + '@tanstack/react-query-devtools@5.74.9(@tanstack/react-query@5.74.3(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/query-devtools': 5.74.7 + '@tanstack/react-query': 5.74.3(react@18.3.1) + react: 18.3.1 + + '@tanstack/react-query@5.74.3(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.74.3 + react: 18.3.1 + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.27.0 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.6.3': + dependencies: + '@adobe/css-tools': 4.4.2 + aria-query: 5.3.0 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.27.0 + '@testing-library/dom': 10.4.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + '@types/react-dom': 18.3.6(@types/react@18.3.20) + + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@types/aria-query@5.0.4': {} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.27.0 @@ -3497,33 +6608,48 @@ snapshots: dependencies: '@babel/types': 7.27.0 + '@types/cookie@0.6.0': {} + '@types/estree@0.0.39': {} '@types/estree@1.0.7': {} + '@types/js-cookie@3.0.6': {} + '@types/json-schema@7.0.15': {} - '@types/react-dom@19.0.4(@types/react@19.0.12)': + '@types/node@22.14.0': + dependencies: + undici-types: 6.21.0 + + '@types/prop-types@15.7.14': {} + + '@types/react-dom@18.3.6(@types/react@18.3.20)': dependencies: - '@types/react': 19.0.12 + '@types/react': 18.3.20 - '@types/react@19.0.12': + '@types/react@18.3.20': dependencies: + '@types/prop-types': 15.7.14 csstype: 3.1.3 '@types/resolve@1.20.2': {} + '@types/statuses@2.0.5': {} + + '@types/tough-cookie@4.0.5': {} + '@types/trusted-types@2.0.7': {} - '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.29.0 - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.23.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -3532,14 +6658,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.29.0 debug: 4.4.0 - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.23.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -3549,12 +6675,12 @@ snapshots: '@typescript-eslint/types': 8.29.0 '@typescript-eslint/visitor-keys': 8.29.0 - '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.23.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: @@ -3576,13 +6702,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/utils@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.29.0 '@typescript-eslint/types': 8.29.0 '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.7.3) - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.23.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -3603,23 +6729,67 @@ snapshots: transitivePeerDependencies: - bare-buffer - '@vitejs/plugin-react@4.3.4(vite@6.2.4(jiti@1.21.7)(terser@5.39.0))': + '@vitejs/plugin-react@4.3.4(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.4(jiti@1.21.7)(terser@5.39.0) + vite: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) transitivePeerDependencies: - supports-color + '@vitest/expect@3.1.1': + dependencies: + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.1.1(msw@2.7.3(@types/node@22.14.0)(typescript@5.7.3))(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1))': + dependencies: + '@vitest/spy': 3.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + msw: 2.7.3(@types/node@22.14.0)(typescript@5.7.3) + vite: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) + + '@vitest/pretty-format@3.1.1': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.1.1': + dependencies: + '@vitest/utils': 3.1.1 + pathe: 2.0.3 + + '@vitest/snapshot@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.1.1': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.1.1': + dependencies: + '@vitest/pretty-format': 3.1.1 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 acorn@8.14.1: {} + agent-base@7.1.3: + optional: true + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -3627,23 +6797,87 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + + array.prototype.findlast@1.2.5: dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 - ansi-styles@4.3.0: + array.prototype.flat@1.3.3: dependencies: - color-convert: 2.0.1 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 - argparse@2.0.1: {} + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.1.0 - array-buffer-byte-length@1.0.2: + array.prototype.tosorted@1.1.4: dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: dependencies: @@ -3655,16 +6889,28 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + assertion-error@2.0.1: {} + async-function@1.0.0: {} async@3.2.6: {} + asynckit@0.4.0: {} + at-least-node@1.0.0: {} available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 + axios@1.8.4: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + b4a@1.6.7: {} babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): @@ -3774,15 +7020,57 @@ snapshots: callsites@3.1.0: {} + camelcase@6.3.0: {} + caniuse-lite@1.0.30001707: {} + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.4.1: {} + + check-error@2.1.1: {} + chownr@1.1.4: {} + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cli-width@4.1.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -3801,6 +7089,12 @@ snapshots: colorette@2.0.20: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@13.1.0: {} + commander@2.20.3: {} common-tags@1.8.2: {} @@ -3811,10 +7105,23 @@ snapshots: convert-source-map@2.0.0: {} + cookie@0.7.2: {} + + cookie@1.0.2: {} + core-js-compat@3.41.0: dependencies: browserslist: 4.24.4 + cosmiconfig@8.3.6(typescript@5.7.3): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.7.3 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -3823,8 +7130,22 @@ snapshots: crypto-random-string@2.0.0: {} + css.escape@1.5.1: {} + + cssstyle@4.3.0: + dependencies: + '@asamuzakjp/css-color': 3.1.1 + rrweb-cssom: 0.8.0 + optional: true + csstype@3.1.3: {} + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + optional: true + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -3843,10 +7164,15 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + date-fns@4.1.0: {} + debug@4.4.0: dependencies: ms: 2.1.3 + decimal.js@10.5.0: + optional: true + decode-bmp@0.2.1: dependencies: '@canvas/image-data': 1.0.0 @@ -3862,6 +7188,8 @@ snapshots: dependencies: mimic-response: 3.1.0 + deep-eql@5.0.2: {} + deep-extend@0.6.0: {} deep-is@0.1.4: {} @@ -3882,8 +7210,27 @@ snapshots: defu@6.1.4: {} + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + detect-libc@2.0.3: {} + detect-node-es@1.1.0: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -3896,10 +7243,39 @@ snapshots: electron-to-chromium@1.5.129: {} + embla-carousel-react@8.6.0(react@18.3.1): + dependencies: + embla-carousel: 8.6.0 + embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) + react: 18.3.1 + + embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + end-of-stream@1.4.4: dependencies: once: 1.4.0 + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-abstract@1.23.9: dependencies: array-buffer-byte-length: 1.0.2 @@ -3958,6 +7334,27 @@ snapshots: es-errors@1.3.0: {} + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-module-lexer@1.6.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -3969,6 +7366,10 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 @@ -4007,13 +7408,48 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@5.2.0(eslint@9.23.0(jiti@1.21.7)): + eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + + eslint-plugin-prettier@5.2.6(eslint-config-prettier@10.1.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(prettier@3.5.3): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + prettier: 3.5.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.11.2 + optionalDependencies: + eslint-config-prettier: 10.1.1(eslint@9.23.0(jiti@2.4.2)) + + eslint-plugin-react-hooks@5.2.0(eslint@9.23.0(jiti@2.4.2)): dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.23.0(jiti@2.4.2) - eslint-plugin-react-refresh@0.4.19(eslint@9.23.0(jiti@1.21.7)): + eslint-plugin-react-refresh@0.4.19(eslint@9.23.0(jiti@2.4.2)): dependencies: - eslint: 9.23.0(jiti@1.21.7) + eslint: 9.23.0(jiti@2.4.2) + + eslint-plugin-react@7.37.5(eslint@9.23.0(jiti@2.4.2)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.23.0(jiti@2.4.2) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 eslint-scope@8.3.0: dependencies: @@ -4024,9 +7460,9 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.23.0(jiti@1.21.7): + eslint@9.23.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.2 '@eslint/config-helpers': 0.2.0 @@ -4062,7 +7498,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 1.21.7 + jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -4086,12 +7522,34 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.7 + esutils@2.0.3: {} + eventemitter3@5.0.1: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + expand-template@2.0.3: {} + expect-type@1.2.1: {} + fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-fifo@1.3.2: {} fast-glob@3.3.3: @@ -4112,6 +7570,10 @@ snapshots: dependencies: reusify: 1.1.0 + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + fdir@6.4.3(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -4133,6 +7595,39 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + firebase@11.6.0: + dependencies: + '@firebase/analytics': 0.10.12(@firebase/app@0.11.4) + '@firebase/analytics-compat': 0.2.18(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4) + '@firebase/app': 0.11.4 + '@firebase/app-check': 0.8.13(@firebase/app@0.11.4) + '@firebase/app-check-compat': 0.3.20(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4) + '@firebase/app-compat': 0.2.53 + '@firebase/app-types': 0.9.3 + '@firebase/auth': 1.10.0(@firebase/app@0.11.4) + '@firebase/auth-compat': 0.5.20(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4) + '@firebase/data-connect': 0.3.3(@firebase/app@0.11.4) + '@firebase/database': 1.0.14 + '@firebase/database-compat': 2.0.5 + '@firebase/firestore': 4.7.10(@firebase/app@0.11.4) + '@firebase/firestore-compat': 0.3.45(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4) + '@firebase/functions': 0.12.3(@firebase/app@0.11.4) + '@firebase/functions-compat': 0.3.20(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4) + '@firebase/installations': 0.6.13(@firebase/app@0.11.4) + '@firebase/installations-compat': 0.2.13(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4) + '@firebase/messaging': 0.12.17(@firebase/app@0.11.4) + '@firebase/messaging-compat': 0.2.17(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4) + '@firebase/performance': 0.7.2(@firebase/app@0.11.4) + '@firebase/performance-compat': 0.2.15(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4) + '@firebase/remote-config': 0.6.0(@firebase/app@0.11.4) + '@firebase/remote-config-compat': 0.2.13(@firebase/app-compat@0.2.53)(@firebase/app@0.11.4) + '@firebase/storage': 0.13.7(@firebase/app@0.11.4) + '@firebase/storage-compat': 0.3.17(@firebase/app-compat@0.2.53)(@firebase/app-types@0.9.3)(@firebase/app@0.11.4) + '@firebase/util': 1.11.0 + '@firebase/vertexai': 1.2.1(@firebase/app-types@0.9.3)(@firebase/app@0.11.4) + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -4140,10 +7635,19 @@ snapshots: flatted@3.3.3: {} + follow-redirects@1.15.9: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + fs-constants@1.0.0: {} fs-extra@9.1.0: @@ -4173,6 +7677,10 @@ snapshots: gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -4186,6 +7694,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} + get-own-enumerable-property-symbols@3.0.2: {} get-proto@1.0.1: @@ -4193,6 +7703,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@8.0.1: {} + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -4235,6 +7747,13 @@ snapshots: graphemer@1.4.0: {} + graphql@16.10.0: {} + + happy-dom@17.4.4: + dependencies: + webidl-conversions: 7.0.0 + whatwg-mimetype: 3.0.0 + has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -4257,8 +7776,42 @@ snapshots: dependencies: function-bind: 1.1.2 + headers-polyfill@4.0.3: {} + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + optional: true + + http-parser-js@0.5.10: {} + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + optional: true + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + optional: true + + human-signals@5.0.0: {} + + husky@9.1.7: {} + ico-endec@0.1.6: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + idb@7.1.1: {} ieee754@1.2.1: {} @@ -4272,6 +7825,8 @@ snapshots: imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -4293,6 +7848,8 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} is-async-function@2.1.1: @@ -4335,6 +7892,14 @@ snapshots: dependencies: call-bound: 1.0.4 + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + is-generator-function@1.1.0: dependencies: call-bound: 1.0.4 @@ -4350,6 +7915,8 @@ snapshots: is-module@1.0.0: {} + is-node-process@1.2.0: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -4359,6 +7926,9 @@ snapshots: is-obj@1.0.1: {} + is-potential-custom-element-name@1.0.1: + optional: true + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -4376,6 +7946,8 @@ snapshots: is-stream@2.0.1: {} + is-stream@3.0.0: {} + is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -4406,6 +7978,15 @@ snapshots: isexe@2.0.0: {} + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + jake@10.9.2: dependencies: async: 3.2.6 @@ -4415,18 +7996,53 @@ snapshots: jiti@1.21.7: {} + jiti@2.4.2: {} + + js-cookie@3.0.5: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: dependencies: argparse: 2.0.1 + jsdom@26.0.0: + dependencies: + cssstyle: 4.3.0 + data-urls: 5.0.0 + decimal.js: 10.5.0 + form-data: 4.0.2 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.20 + parse5: 7.2.1 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + optional: true + jsesc@3.0.2: {} jsesc@3.1.0: {} json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -4445,6 +8061,13 @@ snapshots: jsonpointer@5.0.1: {} + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -4456,10 +8079,85 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-darwin-arm64@1.29.2: + optional: true + + lightningcss-darwin-x64@1.29.2: + optional: true + + lightningcss-freebsd-x64@1.29.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.2: + optional: true + + lightningcss-linux-arm64-gnu@1.29.2: + optional: true + + lightningcss-linux-arm64-musl@1.29.2: + optional: true + + lightningcss-linux-x64-gnu@1.29.2: + optional: true + + lightningcss-linux-x64-musl@1.29.2: + optional: true + + lightningcss-win32-arm64-msvc@1.29.2: + optional: true + + lightningcss-win32-x64-msvc@1.29.2: + optional: true + + lightningcss@1.29.2: + dependencies: + detect-libc: 2.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.2 + lightningcss-darwin-x64: 1.29.2 + lightningcss-freebsd-x64: 1.29.2 + lightningcss-linux-arm-gnueabihf: 1.29.2 + lightningcss-linux-arm64-gnu: 1.29.2 + lightningcss-linux-arm64-musl: 1.29.2 + lightningcss-linux-x64-gnu: 1.29.2 + lightningcss-linux-x64-musl: 1.29.2 + lightningcss-win32-arm64-msvc: 1.29.2 + lightningcss-win32-x64-msvc: 1.29.2 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lint-staged@15.5.0: + dependencies: + chalk: 5.4.1 + commander: 13.1.0 + debug: 4.4.0 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.2.5 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.7.1 + transitivePeerDependencies: + - supports-color + + listr2@8.2.5: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash.camelcase@4.3.0: {} + lodash.debounce@4.0.8: {} lodash.merge@4.6.2: {} @@ -4468,16 +8166,59 @@ snapshots: lodash@4.17.21: {} + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + long@5.3.1: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lottie-react@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + lottie-web: 5.12.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + lottie-web@5.12.2: {} + + loupe@3.1.3: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@10.4.3: + optional: true + lru-cache@5.1.1: dependencies: yallist: 3.1.1 + lucide-react@0.487.0(react@18.3.1): + dependencies: + react: 18.3.1 + + lz-string@1.5.0: {} + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + math-intrinsics@1.1.0: {} + merge-stream@2.0.0: {} + merge2@1.4.1: {} micromatch@4.0.8: @@ -4485,8 +8226,20 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + mimic-response@3.1.0: {} + min-indent@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -4505,12 +8258,44 @@ snapshots: ms@2.1.3: {} + msw@2.7.3(@types/node@22.14.0)(typescript@5.7.3): + dependencies: + '@bundled-es-modules/cookie': 2.0.1 + '@bundled-es-modules/statuses': 1.0.1 + '@bundled-es-modules/tough-cookie': 0.1.6 + '@inquirer/confirm': 5.1.9(@types/node@22.14.0) + '@mswjs/interceptors': 0.37.6 + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + graphql: 16.10.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + strict-event-emitter: 0.5.1 + type-fest: 4.39.1 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.7.3 + transitivePeerDependencies: + - '@types/node' + + mute-stream@2.0.0: {} + nanoid@3.3.11: {} napi-build-utils@2.0.0: {} natural-compare@1.4.0: {} + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + node-abi@3.74.0: dependencies: semver: 7.7.1 @@ -4519,6 +8304,15 @@ snapshots: node-releases@2.0.19: {} + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nwsapi@2.2.20: + optional: true + + object-assign@4.1.1: {} + object-inspect@1.13.4: {} object-keys@1.1.1: {} @@ -4532,10 +8326,39 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -4545,6 +8368,8 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + outvariant@1.4.3: {} + own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -4563,20 +8388,44 @@ snapshots: dependencies: callsites: 3.1.0 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@7.2.1: + dependencies: + entities: 4.5.0 + optional: true + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} + path-to-regexp@6.3.0: {} + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pathval@2.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} + pidtree@0.6.0: {} + possible-typed-array-names@1.1.0: {} postcss@8.5.3: @@ -4602,10 +8451,53 @@ snapshots: prelude-ls@1.2.1: {} + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier-plugin-tailwindcss@0.6.11(prettier@3.5.3): + dependencies: + prettier: 3.5.3 + + prettier@3.5.3: {} + pretty-bytes@5.6.0: {} pretty-bytes@6.1.1: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + protobufjs@7.4.0: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.14.0 + long: 5.3.1 + + proxy-from-env@1.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -4613,6 +8505,8 @@ snapshots: punycode@2.3.1: {} + querystringify@2.2.0: {} + queue-microtask@1.2.3: {} randombytes@2.1.0: @@ -4626,14 +8520,76 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dom@19.1.0(react@19.1.0): + react-datepicker@8.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@floating-ui/react': 0.27.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + clsx: 2.1.1 + date-fns: 4.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-error-boundary@6.0.0(react@18.3.1): + dependencies: + '@babel/runtime': 7.27.0 + react: 18.3.1 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-mobile-picker@1.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - react: 19.1.0 - scheduler: 0.26.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-refresh@0.14.2: {} - react@19.1.0: {} + react-remove-scroll-bar@2.3.8(@types/react@18.3.20)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.20)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.20 + + react-remove-scroll@2.6.3(@types/react@18.3.20)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.20)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.20)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.20)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.20)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.20 + + react-router@7.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@types/cookie': 0.6.0 + cookie: 1.0.2 + react: 18.3.1 + set-cookie-parser: 2.7.1 + turbo-stream: 2.4.0 + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + react-style-singleton@2.2.3(@types/react@18.3.20)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.20 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 readable-stream@3.6.2: dependencies: @@ -4641,6 +8597,11 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -4688,8 +8649,12 @@ snapshots: dependencies: jsesc: 3.0.2 + require-directory@2.1.1: {} + require-from-string@2.0.2: {} + requires-port@1.0.0: {} + resolve-from@4.0.0: {} resolve@1.22.10: @@ -4698,8 +8663,21 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + reusify@1.1.0: {} + rfdc@1.4.1: {} + rollup@2.79.2: optionalDependencies: fsevents: 2.3.3 @@ -4730,6 +8708,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.38.0 fsevents: 2.3.3 + rrweb-cssom@0.8.0: + optional: true + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -4755,7 +8736,17 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 - scheduler@0.26.0: {} + safer-buffer@2.1.2: + optional: true + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + optional: true + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 semver@6.3.1: {} @@ -4765,6 +8756,8 @@ snapshots: dependencies: randombytes: 2.1.0 + set-cookie-parser@2.7.1: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -4842,6 +8835,10 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + + signal-exit@4.1.0: {} + simple-concat@1.0.1: {} simple-get@4.0.1: @@ -4854,8 +8851,23 @@ snapshots: dependencies: is-arrayish: 0.3.2 + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + smob@1.5.0: {} + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -4871,6 +8883,12 @@ snapshots: sourcemap-codec@1.4.8: {} + stackback@0.0.2: {} + + statuses@2.0.1: {} + + std-env@3.9.0: {} + streamx@2.22.0: dependencies: fast-fifo: 1.3.2 @@ -4878,6 +8896,22 @@ snapshots: optionalDependencies: bare-events: 2.5.4 + strict-event-emitter@0.5.1: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 @@ -4894,6 +8928,11 @@ snapshots: set-function-name: 2.0.2 side-channel: 1.1.0 + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 @@ -4927,8 +8966,22 @@ snapshots: is-obj: 1.0.1 is-regexp: 1.0.0 + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-comments@2.0.1: {} + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -4939,6 +8992,28 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svg-parser@2.0.4: {} + + symbol-tree@3.2.4: + optional: true + + synckit@0.11.2: + dependencies: + '@pkgr/core': 0.2.0 + tslib: 2.8.1 + + tabbable@6.2.0: {} + + tailwind-merge@3.1.0: {} + + tailwindcss-animate@1.0.7(tailwindcss@4.1.3): + dependencies: + tailwindcss: 4.1.3 + + tailwindcss@4.1.3: {} + + tapable@2.2.1: {} + tar-fs@2.1.2: dependencies: chownr: 1.1.4 @@ -4990,35 +9065,80 @@ snapshots: dependencies: b4a: 1.6.7 + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + tinyglobby@0.2.12: dependencies: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + tldts-core@6.1.85: + optional: true + + tldts@6.1.85: + dependencies: + tldts-core: 6.1.85 + optional: true + to-data-view@1.1.0: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.85 + optional: true + tr46@1.0.1: dependencies: punycode: 2.3.1 + tr46@5.1.0: + dependencies: + punycode: 2.3.1 + optional: true + ts-api-utils@2.1.0(typescript@5.7.3): dependencies: typescript: 5.7.3 + tslib@2.8.1: {} + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 + turbo-stream@2.4.0: {} + + tw-animate-css@1.2.5: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 type-fest@0.16.0: {} + type-fest@0.21.3: {} + + type-fest@4.39.1: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -5052,12 +9172,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3): + typescript-eslint@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@1.21.7))(typescript@5.7.3) - eslint: 9.23.0(jiti@1.21.7) + '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.29.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.23.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -5077,6 +9197,8 @@ snapshots: defu: 6.1.4 jiti: 1.21.7 + undici-types@6.21.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: @@ -5092,6 +9214,8 @@ snapshots: dependencies: crypto-random-string: 2.0.0 + universalify@0.2.0: {} + universalify@2.0.1: {} upath@1.2.0: {} @@ -5106,14 +9230,64 @@ snapshots: dependencies: punycode: 2.3.1 + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + use-callback-ref@1.3.3(@types/react@18.3.20)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.20 + + use-sidecar@1.1.3(@types/react@18.3.20)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.20 + util-deprecate@1.0.2: {} - vite-plugin-pwa@0.21.2(@vite-pwa/assets-generator@0.2.6)(vite@6.2.4(jiti@1.21.7)(terser@5.39.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0): + vaul@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@radix-ui/react-dialog': 1.1.11(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + vite-node@3.1.1(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-plugin-pwa@0.21.2(@vite-pwa/assets-generator@0.2.6)(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0): dependencies: debug: 4.4.0 pretty-bytes: 6.1.1 tinyglobby: 0.2.12 - vite: 6.2.4(jiti@1.21.7)(terser@5.39.0) + vite: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) workbox-build: 7.3.0(@types/babel__core@7.20.5) workbox-window: 7.3.0 optionalDependencies: @@ -5121,18 +9295,105 @@ snapshots: transitivePeerDependencies: - supports-color - vite@6.2.4(jiti@1.21.7)(terser@5.39.0): + vite-plugin-svgr@4.3.0(rollup@2.79.2)(typescript@5.7.3)(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1)): + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@2.79.2) + '@svgr/core': 8.1.0(typescript@5.7.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.7.3)) + vite: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) + transitivePeerDependencies: + - rollup + - supports-color + - typescript + + vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 rollup: 4.38.0 optionalDependencies: + '@types/node': 22.14.0 fsevents: 2.3.3 - jiti: 1.21.7 + jiti: 2.4.2 + lightningcss: 1.29.2 terser: 5.39.0 + yaml: 2.7.1 + + vitest@3.1.1(@types/node@22.14.0)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@26.0.0)(lightningcss@1.29.2)(msw@2.7.3(@types/node@22.14.0)(typescript@5.7.3))(terser@5.39.0)(yaml@2.7.1): + dependencies: + '@vitest/expect': 3.1.1 + '@vitest/mocker': 3.1.1(msw@2.7.3(@types/node@22.14.0)(typescript@5.7.3))(vite@6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1)) + '@vitest/pretty-format': 3.1.1 + '@vitest/runner': 3.1.1 + '@vitest/snapshot': 3.1.1 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.2.4(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) + vite-node: 3.1.1(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.7.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.14.0 + happy-dom: 17.4.4 + jsdom: 26.0.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + optional: true + + web-vitals@4.2.4: {} webidl-conversions@4.0.2: {} + webidl-conversions@7.0.0: {} + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + optional: true + + whatwg-mimetype@3.0.0: {} + + whatwg-mimetype@4.0.0: + optional: true + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.0 + webidl-conversions: 7.0.0 + optional: true + whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -5184,6 +9445,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + word-wrap@1.2.5: {} workbox-background-sync@7.3.0: @@ -5299,8 +9565,58 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 7.3.0 + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} + ws@8.18.1: + optional: true + + xml-name-validator@5.0.0: + optional: true + + xmlchars@2.2.0: + optional: true + + y18n@5.0.8: {} + yallist@3.1.1: {} + yaml@2.7.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yocto-queue@0.1.0: {} + + yoctocolors-cjs@2.1.2: {} + + zustand@5.0.3(@types/react@18.3.20)(react@18.3.1): + optionalDependencies: + '@types/react': 18.3.20 + react: 18.3.1 diff --git a/public/android/android-launchericon-144-144.png b/public/android/android-launchericon-144-144.png new file mode 100644 index 0000000..45edfcf Binary files /dev/null and b/public/android/android-launchericon-144-144.png differ diff --git a/public/android/android-launchericon-192-192.png b/public/android/android-launchericon-192-192.png new file mode 100644 index 0000000..2c026b3 Binary files /dev/null and b/public/android/android-launchericon-192-192.png differ diff --git a/public/android/android-launchericon-48-48.png b/public/android/android-launchericon-48-48.png new file mode 100644 index 0000000..3fdd7db Binary files /dev/null and b/public/android/android-launchericon-48-48.png differ diff --git a/public/android/android-launchericon-512-512.png b/public/android/android-launchericon-512-512.png new file mode 100644 index 0000000..5d39549 Binary files /dev/null and b/public/android/android-launchericon-512-512.png differ diff --git a/public/android/android-launchericon-72-72.png b/public/android/android-launchericon-72-72.png new file mode 100644 index 0000000..600df3c Binary files /dev/null and b/public/android/android-launchericon-72-72.png differ diff --git a/public/android/android-launchericon-96-96.png b/public/android/android-launchericon-96-96.png new file mode 100644 index 0000000..5db4c3e Binary files /dev/null and b/public/android/android-launchericon-96-96.png differ diff --git a/public/favicon.svg b/public/favicon.svg index 733f4fb..8bf676d 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,130 +1,4 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/public/fonts/Pretendard.woff2 b/public/fonts/Pretendard.woff2 new file mode 100644 index 0000000..49c54b5 Binary files /dev/null and b/public/fonts/Pretendard.woff2 differ diff --git a/public/ios/100.png b/public/ios/100.png new file mode 100644 index 0000000..7d80186 Binary files /dev/null and b/public/ios/100.png differ diff --git a/public/ios/1024.png b/public/ios/1024.png new file mode 100644 index 0000000..537ac71 Binary files /dev/null and b/public/ios/1024.png differ diff --git a/public/ios/114.png b/public/ios/114.png new file mode 100644 index 0000000..505c66a Binary files /dev/null and b/public/ios/114.png differ diff --git a/public/ios/120.png b/public/ios/120.png new file mode 100644 index 0000000..3ee8ac2 Binary files /dev/null and b/public/ios/120.png differ diff --git a/public/ios/128.png b/public/ios/128.png new file mode 100644 index 0000000..c7781c2 Binary files /dev/null and b/public/ios/128.png differ diff --git a/public/ios/144.png b/public/ios/144.png new file mode 100644 index 0000000..45edfcf Binary files /dev/null and b/public/ios/144.png differ diff --git a/public/ios/152.png b/public/ios/152.png new file mode 100644 index 0000000..a7d56c7 Binary files /dev/null and b/public/ios/152.png differ diff --git a/public/ios/16.png b/public/ios/16.png new file mode 100644 index 0000000..97d2054 Binary files /dev/null and b/public/ios/16.png differ diff --git a/public/ios/167.png b/public/ios/167.png new file mode 100644 index 0000000..9f144ae Binary files /dev/null and b/public/ios/167.png differ diff --git a/public/ios/180.png b/public/ios/180.png new file mode 100644 index 0000000..e15e1c9 Binary files /dev/null and b/public/ios/180.png differ diff --git a/public/ios/192.png b/public/ios/192.png new file mode 100644 index 0000000..2c026b3 Binary files /dev/null and b/public/ios/192.png differ diff --git a/public/ios/20.png b/public/ios/20.png new file mode 100644 index 0000000..a66a6d2 Binary files /dev/null and b/public/ios/20.png differ diff --git a/public/ios/256.png b/public/ios/256.png new file mode 100644 index 0000000..a65a27c Binary files /dev/null and b/public/ios/256.png differ diff --git a/public/ios/29.png b/public/ios/29.png new file mode 100644 index 0000000..76d601a Binary files /dev/null and b/public/ios/29.png differ diff --git a/public/ios/32.png b/public/ios/32.png new file mode 100644 index 0000000..8a4eef4 Binary files /dev/null and b/public/ios/32.png differ diff --git a/public/ios/40.png b/public/ios/40.png new file mode 100644 index 0000000..de0b72b Binary files /dev/null and b/public/ios/40.png differ diff --git a/public/ios/50.png b/public/ios/50.png new file mode 100644 index 0000000..6ee0453 Binary files /dev/null and b/public/ios/50.png differ diff --git a/public/ios/512.png b/public/ios/512.png new file mode 100644 index 0000000..5d39549 Binary files /dev/null and b/public/ios/512.png differ diff --git a/public/ios/57.png b/public/ios/57.png new file mode 100644 index 0000000..2021762 Binary files /dev/null and b/public/ios/57.png differ diff --git a/public/ios/58.png b/public/ios/58.png new file mode 100644 index 0000000..27a7a00 Binary files /dev/null and b/public/ios/58.png differ diff --git a/public/ios/60.png b/public/ios/60.png new file mode 100644 index 0000000..c108c26 Binary files /dev/null and b/public/ios/60.png differ diff --git a/public/ios/64.png b/public/ios/64.png new file mode 100644 index 0000000..aeece38 Binary files /dev/null and b/public/ios/64.png differ diff --git a/public/ios/72.png b/public/ios/72.png new file mode 100644 index 0000000..600df3c Binary files /dev/null and b/public/ios/72.png differ diff --git a/public/ios/76.png b/public/ios/76.png new file mode 100644 index 0000000..90c0edf Binary files /dev/null and b/public/ios/76.png differ diff --git a/public/ios/80.png b/public/ios/80.png new file mode 100644 index 0000000..b2422fa Binary files /dev/null and b/public/ios/80.png differ diff --git a/public/ios/87.png b/public/ios/87.png new file mode 100644 index 0000000..1bea6b2 Binary files /dev/null and b/public/ios/87.png differ diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js new file mode 100644 index 0000000..f9123f5 --- /dev/null +++ b/public/mockServiceWorker.js @@ -0,0 +1,301 @@ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = "2.7.3"; +const INTEGRITY_CHECKSUM = "00729d72e3b82faf54ca8b9621dbb96f"; +const IS_MOCKED_RESPONSE = Symbol("isMockedResponse"); +const activeClientIds = new Set(); + +self.addEventListener("install", function () { + self.skipWaiting(); +}); + +self.addEventListener("activate", function (event) { + event.waitUntil(self.clients.claim()); +}); + +self.addEventListener("message", async function (event) { + const clientId = event.source.id; + + if (!clientId || !self.clients) { + return; + } + + const client = await self.clients.get(clientId); + + if (!client) { + return; + } + + const allClients = await self.clients.matchAll({ + type: "window", + }); + + switch (event.data) { + case "KEEPALIVE_REQUEST": { + sendToClient(client, { + type: "KEEPALIVE_RESPONSE", + }); + break; + } + + case "INTEGRITY_CHECK_REQUEST": { + sendToClient(client, { + type: "INTEGRITY_CHECK_RESPONSE", + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }); + break; + } + + case "MOCK_ACTIVATE": { + activeClientIds.add(clientId); + + sendToClient(client, { + type: "MOCKING_ENABLED", + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, + }); + break; + } + + case "MOCK_DEACTIVATE": { + activeClientIds.delete(clientId); + break; + } + + case "CLIENT_CLOSED": { + activeClientIds.delete(clientId); + + const remainingClients = allClients.filter(client => { + return client.id !== clientId; + }); + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister(); + } + + break; + } + } +}); + +self.addEventListener("fetch", function (event) { + const { request } = event; + + // Bypass navigation requests. + if (request.mode === "navigate") { + return; + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === "only-if-cached" && request.mode !== "same-origin") { + return; + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return; + } + + // Generate unique request ID. + const requestId = crypto.randomUUID(); + event.respondWith(handleRequest(event, requestId)); +}); + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event); + const response = await getResponse(event, client, requestId); + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + (async function () { + const responseClone = response.clone(); + + sendToClient( + client, + { + type: "RESPONSE", + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()), + }, + }, + [responseClone.body] + ); + })(); + } + + return response; +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId); + + if (activeClientIds.has(event.clientId)) { + return client; + } + + if (client?.frameType === "top-level") { + return client; + } + + const allClients = await self.clients.matchAll({ + type: "window", + }); + + return allClients + .filter(client => { + // Get only those clients that are currently visible. + return client.visibilityState === "visible"; + }) + .find(client => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id); + }); +} + +async function getResponse(event, client, requestId) { + const { request } = event; + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone(); + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers); + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + const acceptHeader = headers.get("accept"); + if (acceptHeader) { + const values = acceptHeader.split(",").map(value => value.trim()); + const filteredValues = values.filter(value => value !== "msw/passthrough"); + + if (filteredValues.length > 0) { + headers.set("accept", filteredValues.join(", ")); + } else { + headers.delete("accept"); + } + } + + return fetch(requestClone, { headers }); + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough(); + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough(); + } + + // Notify the client that a request has been intercepted. + const requestBuffer = await request.arrayBuffer(); + const clientMessage = await sendToClient( + client, + { + type: "REQUEST", + payload: { + id: requestId, + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: requestBuffer, + keepalive: request.keepalive, + }, + }, + [requestBuffer] + ); + + switch (clientMessage.type) { + case "MOCK_RESPONSE": { + return respondWithMock(clientMessage.data); + } + + case "PASSTHROUGH": { + return passthrough(); + } + } + + return passthrough(); +} + +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel(); + + channel.port1.onmessage = event => { + if (event.data && event.data.error) { + return reject(event.data.error); + } + + resolve(event.data); + }; + + client.postMessage(message, [channel.port2].concat(transferrables.filter(Boolean))); + }); +} + +async function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error(); + } + + const mockedResponse = new Response(response.body, response); + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }); + + return mockedResponse; +} diff --git a/public/splash/ios/10.2__iPad_landscape.png b/public/splash/ios/10.2__iPad_landscape.png new file mode 100644 index 0000000..5957538 Binary files /dev/null and b/public/splash/ios/10.2__iPad_landscape.png differ diff --git a/public/splash/ios/10.2__iPad_portrait.png b/public/splash/ios/10.2__iPad_portrait.png new file mode 100644 index 0000000..e0f477b Binary files /dev/null and b/public/splash/ios/10.2__iPad_portrait.png differ diff --git a/public/splash/ios/10.5__iPad_Air_landscape.png b/public/splash/ios/10.5__iPad_Air_landscape.png new file mode 100644 index 0000000..a96a08b Binary files /dev/null and b/public/splash/ios/10.5__iPad_Air_landscape.png differ diff --git a/public/splash/ios/10.5__iPad_Air_portrait.png b/public/splash/ios/10.5__iPad_Air_portrait.png new file mode 100644 index 0000000..19b7c8e Binary files /dev/null and b/public/splash/ios/10.5__iPad_Air_portrait.png differ diff --git a/public/splash/ios/10.9__iPad_Air_landscape.png b/public/splash/ios/10.9__iPad_Air_landscape.png new file mode 100644 index 0000000..50b60ff Binary files /dev/null and b/public/splash/ios/10.9__iPad_Air_landscape.png differ diff --git a/public/splash/ios/10.9__iPad_Air_portrait.png b/public/splash/ios/10.9__iPad_Air_portrait.png new file mode 100644 index 0000000..28e2279 Binary files /dev/null and b/public/splash/ios/10.9__iPad_Air_portrait.png differ diff --git a/public/splash/ios/11__iPad_Pro_M4_landscape.png b/public/splash/ios/11__iPad_Pro_M4_landscape.png new file mode 100644 index 0000000..0435ff5 Binary files /dev/null and b/public/splash/ios/11__iPad_Pro_M4_landscape.png differ diff --git a/public/splash/ios/11__iPad_Pro_M4_portrait.png b/public/splash/ios/11__iPad_Pro_M4_portrait.png new file mode 100644 index 0000000..22961fd Binary files /dev/null and b/public/splash/ios/11__iPad_Pro_M4_portrait.png differ diff --git a/public/splash/ios/11__iPad_Pro__10.5__iPad_Pro_landscape.png b/public/splash/ios/11__iPad_Pro__10.5__iPad_Pro_landscape.png new file mode 100644 index 0000000..7318528 Binary files /dev/null and b/public/splash/ios/11__iPad_Pro__10.5__iPad_Pro_landscape.png differ diff --git a/public/splash/ios/11__iPad_Pro__10.5__iPad_Pro_portrait.png b/public/splash/ios/11__iPad_Pro__10.5__iPad_Pro_portrait.png new file mode 100644 index 0000000..b3ed77c Binary files /dev/null and b/public/splash/ios/11__iPad_Pro__10.5__iPad_Pro_portrait.png differ diff --git a/public/splash/ios/12.9__iPad_Pro_landscape.png b/public/splash/ios/12.9__iPad_Pro_landscape.png new file mode 100644 index 0000000..fd67cdc Binary files /dev/null and b/public/splash/ios/12.9__iPad_Pro_landscape.png differ diff --git a/public/splash/ios/12.9__iPad_Pro_portrait.png b/public/splash/ios/12.9__iPad_Pro_portrait.png new file mode 100644 index 0000000..dc156f4 Binary files /dev/null and b/public/splash/ios/12.9__iPad_Pro_portrait.png differ diff --git a/public/splash/ios/13__iPad_Pro_M4_landscape.png b/public/splash/ios/13__iPad_Pro_M4_landscape.png new file mode 100644 index 0000000..83463c8 Binary files /dev/null and b/public/splash/ios/13__iPad_Pro_M4_landscape.png differ diff --git a/public/splash/ios/13__iPad_Pro_M4_portrait.png b/public/splash/ios/13__iPad_Pro_M4_portrait.png new file mode 100644 index 0000000..c2ad079 Binary files /dev/null and b/public/splash/ios/13__iPad_Pro_M4_portrait.png differ diff --git a/public/splash/ios/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png b/public/splash/ios/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png new file mode 100644 index 0000000..f09680d Binary files /dev/null and b/public/splash/ios/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png differ diff --git a/public/splash/ios/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png b/public/splash/ios/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png new file mode 100644 index 0000000..277cca9 Binary files /dev/null and b/public/splash/ios/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png differ diff --git a/public/splash/ios/8.3__iPad_Mini_landscape.png b/public/splash/ios/8.3__iPad_Mini_landscape.png new file mode 100644 index 0000000..41a4ac6 Binary files /dev/null and b/public/splash/ios/8.3__iPad_Mini_landscape.png differ diff --git a/public/splash/ios/8.3__iPad_Mini_portrait.png b/public/splash/ios/8.3__iPad_Mini_portrait.png new file mode 100644 index 0000000..89259ed Binary files /dev/null and b/public/splash/ios/8.3__iPad_Mini_portrait.png differ diff --git a/public/splash/ios/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png b/public/splash/ios/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png new file mode 100644 index 0000000..8c71294 Binary files /dev/null and b/public/splash/ios/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png differ diff --git a/public/splash/ios/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png b/public/splash/ios/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png new file mode 100644 index 0000000..4bc600d Binary files /dev/null and b/public/splash/ios/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png differ diff --git a/public/splash/ios/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png b/public/splash/ios/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png new file mode 100644 index 0000000..320a4f4 Binary files /dev/null and b/public/splash/ios/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png differ diff --git a/public/splash/ios/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png b/public/splash/ios/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png new file mode 100644 index 0000000..06969ac Binary files /dev/null and b/public/splash/ios/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png differ diff --git a/public/splash/ios/iPhone_11__iPhone_XR_landscape.png b/public/splash/ios/iPhone_11__iPhone_XR_landscape.png new file mode 100644 index 0000000..6f85f0b Binary files /dev/null and b/public/splash/ios/iPhone_11__iPhone_XR_landscape.png differ diff --git a/public/splash/ios/iPhone_11__iPhone_XR_portrait.png b/public/splash/ios/iPhone_11__iPhone_XR_portrait.png new file mode 100644 index 0000000..e56240f Binary files /dev/null and b/public/splash/ios/iPhone_11__iPhone_XR_portrait.png differ diff --git a/public/splash/ios/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png b/public/splash/ios/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png new file mode 100644 index 0000000..1f8732c Binary files /dev/null and b/public/splash/ios/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png differ diff --git a/public/splash/ios/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png b/public/splash/ios/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png new file mode 100644 index 0000000..b1a37f0 Binary files /dev/null and b/public/splash/ios/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png differ diff --git a/public/splash/ios/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png b/public/splash/ios/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png new file mode 100644 index 0000000..96b7aa6 Binary files /dev/null and b/public/splash/ios/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png differ diff --git a/public/splash/ios/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png b/public/splash/ios/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png new file mode 100644 index 0000000..61fd2b2 Binary files /dev/null and b/public/splash/ios/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png differ diff --git a/public/splash/ios/iPhone_16_Plus__iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_landscape.png b/public/splash/ios/iPhone_16_Plus__iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_landscape.png new file mode 100644 index 0000000..ed05cd6 Binary files /dev/null and b/public/splash/ios/iPhone_16_Plus__iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_landscape.png differ diff --git a/public/splash/ios/iPhone_16_Plus__iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_portrait.png b/public/splash/ios/iPhone_16_Plus__iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_portrait.png new file mode 100644 index 0000000..91c419c Binary files /dev/null and b/public/splash/ios/iPhone_16_Plus__iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_portrait.png differ diff --git a/public/splash/ios/iPhone_16_Pro_Max_landscape.png b/public/splash/ios/iPhone_16_Pro_Max_landscape.png new file mode 100644 index 0000000..2a68359 Binary files /dev/null and b/public/splash/ios/iPhone_16_Pro_Max_landscape.png differ diff --git a/public/splash/ios/iPhone_16_Pro_Max_portrait.png b/public/splash/ios/iPhone_16_Pro_Max_portrait.png new file mode 100644 index 0000000..b238316 Binary files /dev/null and b/public/splash/ios/iPhone_16_Pro_Max_portrait.png differ diff --git a/public/splash/ios/iPhone_16_Pro_landscape.png b/public/splash/ios/iPhone_16_Pro_landscape.png new file mode 100644 index 0000000..0151aa6 Binary files /dev/null and b/public/splash/ios/iPhone_16_Pro_landscape.png differ diff --git a/public/splash/ios/iPhone_16_Pro_portrait.png b/public/splash/ios/iPhone_16_Pro_portrait.png new file mode 100644 index 0000000..70b23eb Binary files /dev/null and b/public/splash/ios/iPhone_16_Pro_portrait.png differ diff --git a/public/splash/ios/iPhone_16__iPhone_15_Pro__iPhone_15__iPhone_14_Pro_landscape.png b/public/splash/ios/iPhone_16__iPhone_15_Pro__iPhone_15__iPhone_14_Pro_landscape.png new file mode 100644 index 0000000..aaa3934 Binary files /dev/null and b/public/splash/ios/iPhone_16__iPhone_15_Pro__iPhone_15__iPhone_14_Pro_landscape.png differ diff --git a/public/splash/ios/iPhone_16__iPhone_15_Pro__iPhone_15__iPhone_14_Pro_portrait.png b/public/splash/ios/iPhone_16__iPhone_15_Pro__iPhone_15__iPhone_14_Pro_portrait.png new file mode 100644 index 0000000..3ef7223 Binary files /dev/null and b/public/splash/ios/iPhone_16__iPhone_15_Pro__iPhone_15__iPhone_14_Pro_portrait.png differ diff --git a/public/splash/ios/iPhone_16e__iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png b/public/splash/ios/iPhone_16e__iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png new file mode 100644 index 0000000..4dfb797 Binary files /dev/null and b/public/splash/ios/iPhone_16e__iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png differ diff --git a/public/splash/ios/iPhone_16e__iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png b/public/splash/ios/iPhone_16e__iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png new file mode 100644 index 0000000..7013624 Binary files /dev/null and b/public/splash/ios/iPhone_16e__iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png differ diff --git a/public/splash/ios/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png b/public/splash/ios/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png new file mode 100644 index 0000000..978bb77 Binary files /dev/null and b/public/splash/ios/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png differ diff --git a/public/splash/ios/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png b/public/splash/ios/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png new file mode 100644 index 0000000..91503fa Binary files /dev/null and b/public/splash/ios/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png differ diff --git a/public/splash/ios/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png b/public/splash/ios/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png new file mode 100644 index 0000000..9ae9c26 Binary files /dev/null and b/public/splash/ios/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png differ diff --git a/public/splash/ios/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png b/public/splash/ios/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png new file mode 100644 index 0000000..f29738e Binary files /dev/null and b/public/splash/ios/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png differ diff --git a/public/splash/ios/icon.png b/public/splash/ios/icon.png new file mode 100644 index 0000000..0a952df Binary files /dev/null and b/public/splash/ios/icon.png differ diff --git a/public/windows11/LargeTile.scale-100.png b/public/windows11/LargeTile.scale-100.png new file mode 100644 index 0000000..3b393ae Binary files /dev/null and b/public/windows11/LargeTile.scale-100.png differ diff --git a/public/windows11/LargeTile.scale-125.png b/public/windows11/LargeTile.scale-125.png new file mode 100644 index 0000000..53162cc Binary files /dev/null and b/public/windows11/LargeTile.scale-125.png differ diff --git a/public/windows11/LargeTile.scale-150.png b/public/windows11/LargeTile.scale-150.png new file mode 100644 index 0000000..c1e7cd2 Binary files /dev/null and b/public/windows11/LargeTile.scale-150.png differ diff --git a/public/windows11/LargeTile.scale-200.png b/public/windows11/LargeTile.scale-200.png new file mode 100644 index 0000000..656f201 Binary files /dev/null and b/public/windows11/LargeTile.scale-200.png differ diff --git a/public/windows11/LargeTile.scale-400.png b/public/windows11/LargeTile.scale-400.png new file mode 100644 index 0000000..0eda6c7 Binary files /dev/null and b/public/windows11/LargeTile.scale-400.png differ diff --git a/public/windows11/SmallTile.scale-100.png b/public/windows11/SmallTile.scale-100.png new file mode 100644 index 0000000..966d4cf Binary files /dev/null and b/public/windows11/SmallTile.scale-100.png differ diff --git a/public/windows11/SmallTile.scale-125.png b/public/windows11/SmallTile.scale-125.png new file mode 100644 index 0000000..90ea57e Binary files /dev/null and b/public/windows11/SmallTile.scale-125.png differ diff --git a/public/windows11/SmallTile.scale-150.png b/public/windows11/SmallTile.scale-150.png new file mode 100644 index 0000000..3a5ab3c Binary files /dev/null and b/public/windows11/SmallTile.scale-150.png differ diff --git a/public/windows11/SmallTile.scale-200.png b/public/windows11/SmallTile.scale-200.png new file mode 100644 index 0000000..20643ea Binary files /dev/null and b/public/windows11/SmallTile.scale-200.png differ diff --git a/public/windows11/SmallTile.scale-400.png b/public/windows11/SmallTile.scale-400.png new file mode 100644 index 0000000..dfcc0e1 Binary files /dev/null and b/public/windows11/SmallTile.scale-400.png differ diff --git a/public/windows11/SplashScreen.scale-100.png b/public/windows11/SplashScreen.scale-100.png new file mode 100644 index 0000000..45c269e Binary files /dev/null and b/public/windows11/SplashScreen.scale-100.png differ diff --git a/public/windows11/SplashScreen.scale-125.png b/public/windows11/SplashScreen.scale-125.png new file mode 100644 index 0000000..1495c00 Binary files /dev/null and b/public/windows11/SplashScreen.scale-125.png differ diff --git a/public/windows11/SplashScreen.scale-150.png b/public/windows11/SplashScreen.scale-150.png new file mode 100644 index 0000000..65951f3 Binary files /dev/null and b/public/windows11/SplashScreen.scale-150.png differ diff --git a/public/windows11/SplashScreen.scale-200.png b/public/windows11/SplashScreen.scale-200.png new file mode 100644 index 0000000..c5cea61 Binary files /dev/null and b/public/windows11/SplashScreen.scale-200.png differ diff --git a/public/windows11/SplashScreen.scale-400.png b/public/windows11/SplashScreen.scale-400.png new file mode 100644 index 0000000..e7e5338 Binary files /dev/null and b/public/windows11/SplashScreen.scale-400.png differ diff --git a/public/windows11/Square150x150Logo.scale-100.png b/public/windows11/Square150x150Logo.scale-100.png new file mode 100644 index 0000000..1d73c50 Binary files /dev/null and b/public/windows11/Square150x150Logo.scale-100.png differ diff --git a/public/windows11/Square150x150Logo.scale-125.png b/public/windows11/Square150x150Logo.scale-125.png new file mode 100644 index 0000000..956a698 Binary files /dev/null and b/public/windows11/Square150x150Logo.scale-125.png differ diff --git a/public/windows11/Square150x150Logo.scale-150.png b/public/windows11/Square150x150Logo.scale-150.png new file mode 100644 index 0000000..4ed2589 Binary files /dev/null and b/public/windows11/Square150x150Logo.scale-150.png differ diff --git a/public/windows11/Square150x150Logo.scale-200.png b/public/windows11/Square150x150Logo.scale-200.png new file mode 100644 index 0000000..50c33b3 Binary files /dev/null and b/public/windows11/Square150x150Logo.scale-200.png differ diff --git a/public/windows11/Square150x150Logo.scale-400.png b/public/windows11/Square150x150Logo.scale-400.png new file mode 100644 index 0000000..2816b91 Binary files /dev/null and b/public/windows11/Square150x150Logo.scale-400.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png new file mode 100644 index 0000000..f3de5e6 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png new file mode 100644 index 0000000..fd5daa9 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png new file mode 100644 index 0000000..3d07496 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png new file mode 100644 index 0000000..891d894 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png new file mode 100644 index 0000000..bc9c29d Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png new file mode 100644 index 0000000..c422b77 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png new file mode 100644 index 0000000..b02f0b1 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png new file mode 100644 index 0000000..4ee454e Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png new file mode 100644 index 0000000..abac982 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png new file mode 100644 index 0000000..820c058 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png new file mode 100644 index 0000000..a174d5c Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png new file mode 100644 index 0000000..2146536 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png new file mode 100644 index 0000000..05b1ae1 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png new file mode 100644 index 0000000..2f79de9 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png differ diff --git a/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png new file mode 100644 index 0000000..c4361ae Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-16.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-16.png new file mode 100644 index 0000000..f3de5e6 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-16.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-20.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-20.png new file mode 100644 index 0000000..fd5daa9 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-20.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-24.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-24.png new file mode 100644 index 0000000..3d07496 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-24.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-256.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-256.png new file mode 100644 index 0000000..891d894 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-256.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-30.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-30.png new file mode 100644 index 0000000..bc9c29d Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-30.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-32.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-32.png new file mode 100644 index 0000000..c422b77 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-32.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-36.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-36.png new file mode 100644 index 0000000..b02f0b1 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-36.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-40.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-40.png new file mode 100644 index 0000000..4ee454e Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-40.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-44.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-44.png new file mode 100644 index 0000000..abac982 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-44.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-48.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-48.png new file mode 100644 index 0000000..820c058 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-48.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-60.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-60.png new file mode 100644 index 0000000..a174d5c Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-60.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-64.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-64.png new file mode 100644 index 0000000..2146536 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-64.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-72.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-72.png new file mode 100644 index 0000000..05b1ae1 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-72.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-80.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-80.png new file mode 100644 index 0000000..2f79de9 Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-80.png differ diff --git a/public/windows11/Square44x44Logo.altform-unplated_targetsize-96.png b/public/windows11/Square44x44Logo.altform-unplated_targetsize-96.png new file mode 100644 index 0000000..c4361ae Binary files /dev/null and b/public/windows11/Square44x44Logo.altform-unplated_targetsize-96.png differ diff --git a/public/windows11/Square44x44Logo.scale-100.png b/public/windows11/Square44x44Logo.scale-100.png new file mode 100644 index 0000000..abac982 Binary files /dev/null and b/public/windows11/Square44x44Logo.scale-100.png differ diff --git a/public/windows11/Square44x44Logo.scale-125.png b/public/windows11/Square44x44Logo.scale-125.png new file mode 100644 index 0000000..5726fb0 Binary files /dev/null and b/public/windows11/Square44x44Logo.scale-125.png differ diff --git a/public/windows11/Square44x44Logo.scale-150.png b/public/windows11/Square44x44Logo.scale-150.png new file mode 100644 index 0000000..11fc729 Binary files /dev/null and b/public/windows11/Square44x44Logo.scale-150.png differ diff --git a/public/windows11/Square44x44Logo.scale-200.png b/public/windows11/Square44x44Logo.scale-200.png new file mode 100644 index 0000000..8a2ea63 Binary files /dev/null and b/public/windows11/Square44x44Logo.scale-200.png differ diff --git a/public/windows11/Square44x44Logo.scale-400.png b/public/windows11/Square44x44Logo.scale-400.png new file mode 100644 index 0000000..3f6c9b0 Binary files /dev/null and b/public/windows11/Square44x44Logo.scale-400.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-16.png b/public/windows11/Square44x44Logo.targetsize-16.png new file mode 100644 index 0000000..f3de5e6 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-16.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-20.png b/public/windows11/Square44x44Logo.targetsize-20.png new file mode 100644 index 0000000..fd5daa9 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-20.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-24.png b/public/windows11/Square44x44Logo.targetsize-24.png new file mode 100644 index 0000000..3d07496 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-24.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-256.png b/public/windows11/Square44x44Logo.targetsize-256.png new file mode 100644 index 0000000..891d894 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-256.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-30.png b/public/windows11/Square44x44Logo.targetsize-30.png new file mode 100644 index 0000000..bc9c29d Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-30.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-32.png b/public/windows11/Square44x44Logo.targetsize-32.png new file mode 100644 index 0000000..c422b77 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-32.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-36.png b/public/windows11/Square44x44Logo.targetsize-36.png new file mode 100644 index 0000000..b02f0b1 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-36.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-40.png b/public/windows11/Square44x44Logo.targetsize-40.png new file mode 100644 index 0000000..4ee454e Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-40.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-44.png b/public/windows11/Square44x44Logo.targetsize-44.png new file mode 100644 index 0000000..abac982 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-44.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-48.png b/public/windows11/Square44x44Logo.targetsize-48.png new file mode 100644 index 0000000..820c058 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-48.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-60.png b/public/windows11/Square44x44Logo.targetsize-60.png new file mode 100644 index 0000000..a174d5c Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-60.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-64.png b/public/windows11/Square44x44Logo.targetsize-64.png new file mode 100644 index 0000000..2146536 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-64.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-72.png b/public/windows11/Square44x44Logo.targetsize-72.png new file mode 100644 index 0000000..05b1ae1 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-72.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-80.png b/public/windows11/Square44x44Logo.targetsize-80.png new file mode 100644 index 0000000..2f79de9 Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-80.png differ diff --git a/public/windows11/Square44x44Logo.targetsize-96.png b/public/windows11/Square44x44Logo.targetsize-96.png new file mode 100644 index 0000000..c4361ae Binary files /dev/null and b/public/windows11/Square44x44Logo.targetsize-96.png differ diff --git a/public/windows11/StoreLogo.scale-100.png b/public/windows11/StoreLogo.scale-100.png new file mode 100644 index 0000000..6ee0453 Binary files /dev/null and b/public/windows11/StoreLogo.scale-100.png differ diff --git a/public/windows11/StoreLogo.scale-125.png b/public/windows11/StoreLogo.scale-125.png new file mode 100644 index 0000000..eb7790b Binary files /dev/null and b/public/windows11/StoreLogo.scale-125.png differ diff --git a/public/windows11/StoreLogo.scale-150.png b/public/windows11/StoreLogo.scale-150.png new file mode 100644 index 0000000..88c9462 Binary files /dev/null and b/public/windows11/StoreLogo.scale-150.png differ diff --git a/public/windows11/StoreLogo.scale-200.png b/public/windows11/StoreLogo.scale-200.png new file mode 100644 index 0000000..7d80186 Binary files /dev/null and b/public/windows11/StoreLogo.scale-200.png differ diff --git a/public/windows11/StoreLogo.scale-400.png b/public/windows11/StoreLogo.scale-400.png new file mode 100644 index 0000000..c48d355 Binary files /dev/null and b/public/windows11/StoreLogo.scale-400.png differ diff --git a/public/windows11/Wide310x150Logo.scale-100.png b/public/windows11/Wide310x150Logo.scale-100.png new file mode 100644 index 0000000..6962544 Binary files /dev/null and b/public/windows11/Wide310x150Logo.scale-100.png differ diff --git a/public/windows11/Wide310x150Logo.scale-125.png b/public/windows11/Wide310x150Logo.scale-125.png new file mode 100644 index 0000000..58667d5 Binary files /dev/null and b/public/windows11/Wide310x150Logo.scale-125.png differ diff --git a/public/windows11/Wide310x150Logo.scale-150.png b/public/windows11/Wide310x150Logo.scale-150.png new file mode 100644 index 0000000..0b0d1f3 Binary files /dev/null and b/public/windows11/Wide310x150Logo.scale-150.png differ diff --git a/public/windows11/Wide310x150Logo.scale-200.png b/public/windows11/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000..45c269e Binary files /dev/null and b/public/windows11/Wide310x150Logo.scale-200.png differ diff --git a/public/windows11/Wide310x150Logo.scale-400.png b/public/windows11/Wide310x150Logo.scale-400.png new file mode 100644 index 0000000..c5cea61 Binary files /dev/null and b/public/windows11/Wide310x150Logo.scale-400.png differ diff --git a/pwa-assets.config.ts b/pwa-assets.config.ts index 452b31f..0712477 100644 --- a/pwa-assets.config.ts +++ b/pwa-assets.config.ts @@ -1,12 +1,9 @@ -import { - defineConfig, - minimal2023Preset as preset, -} from '@vite-pwa/assets-generator/config' +import { defineConfig, minimal2023Preset as preset } from "@vite-pwa/assets-generator/config"; export default defineConfig({ - headLinkOptions: { - preset: '2023', - }, - preset, - images: ['public/favicon.svg'], -}) + headLinkOptions: { + preset: "2023", + }, + preset, + images: ["public/favicon.svg"], +}); diff --git a/src/App.css b/src/App.css deleted file mode 100644 index b9d355d..0000000 --- a/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/src/App.tsx b/src/App.tsx deleted file mode 100644 index 321bcc6..0000000 --- a/src/App.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { useState } from "react"; -import reactLogo from "./assets/react.svg"; -import appLogo from "/favicon.svg"; -import PWABadge from "./PWABadge.tsx"; -import "./App.css"; - -function App() { - const [count, setCount] = useState(0); - - return ( - <> -
- - sarang-mate logo - - - React logo - -
-

sarang-mate

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- - - ); -} - -export default App; diff --git a/src/PWABadge.css b/src/PWABadge.css index 4ed19fa..9f9ef6c 100644 --- a/src/PWABadge.css +++ b/src/PWABadge.css @@ -1,29 +1,29 @@ .PWABadge-container { - padding: 0; - margin: 0; - width: 0; - height: 0; + padding: 0; + margin: 0; + width: 0; + height: 0; } .PWABadge-toast { - position: fixed; - right: 0; - bottom: 0; - margin: 16px; - padding: 12px; - border: 1px solid #8885; - border-radius: 4px; - z-index: 1; - text-align: left; - box-shadow: 3px 4px 5px 0 #8885; - background-color: white; + position: fixed; + right: 0; + bottom: 0; + margin: 16px; + padding: 12px; + border: 1px solid #8885; + border-radius: 4px; + z-index: 1; + text-align: left; + box-shadow: 3px 4px 5px 0 #8885; + background-color: white; } .PWABadge-toast-message { - margin-bottom: 8px; + margin-bottom: 8px; } .PWABadge-toast-button { - border: 1px solid #8885; - outline: none; - margin-right: 5px; - border-radius: 2px; - padding: 3px 10px; + border: 1px solid #8885; + outline: none; + margin-right: 5px; + border-radius: 2px; + padding: 3px 10px; } diff --git a/src/PWABadge.tsx b/src/PWABadge.tsx index 88317c1..da10f9d 100644 --- a/src/PWABadge.tsx +++ b/src/PWABadge.tsx @@ -1,77 +1,72 @@ -import './PWABadge.css' +import "./PWABadge.css"; -import { useRegisterSW } from 'virtual:pwa-register/react' +import { useRegisterSW } from "virtual:pwa-register/react"; function PWABadge() { // check for updates every hour - const period = 60 * 60 * 1000 + const period = 60 * 60 * 1000; const { - needRefresh: [needRefresh, setNeedRefresh], updateServiceWorker, } = useRegisterSW({ onRegisteredSW(swUrl, r) { - if (period <= 0) return - if (r?.active?.state === 'activated') { - registerPeriodicSync(period, swUrl, r) - } - else if (r?.installing) { - r.installing.addEventListener('statechange', (e) => { - const sw = e.target as ServiceWorker - if (sw.state === 'activated') - registerPeriodicSync(period, swUrl, r) - }) + if (period <= 0) return; + if (r?.active?.state === "activated") { + registerPeriodicSync(period, swUrl, r); + } else if (r?.installing) { + r.installing.addEventListener("statechange", e => { + const sw = e.target as ServiceWorker; + if (sw.state === "activated") registerPeriodicSync(period, swUrl, r); + }); } }, - }) + }); function close() { - - setNeedRefresh(false) + setNeedRefresh(false); } return (
- { (needRefresh) - && ( + {needRefresh && (
New content available, click on reload button to update. - -
- - + +
)}
- ) + ); } -export default PWABadge +export default PWABadge; /** * This function will register a periodic sync check every hour, you can modify the interval as needed. */ function registerPeriodicSync(period: number, swUrl: string, r: ServiceWorkerRegistration) { - if (period <= 0) return + if (period <= 0) return; setInterval(async () => { - if ('onLine' in navigator && !navigator.onLine) - return + if ("onLine" in navigator && !navigator.onLine) return; const resp = await fetch(swUrl, { - cache: 'no-store', + cache: "no-store", headers: { - 'cache': 'no-store', - 'cache-control': 'no-cache', + cache: "no-store", + "cache-control": "no-cache", }, - }) + }); - if (resp?.status === 200) - await r.update() - }, period) + if (resp?.status === 200) await r.update(); + }, period); } diff --git a/src/app/App.tsx b/src/app/App.tsx new file mode 100644 index 0000000..6fd1b24 --- /dev/null +++ b/src/app/App.tsx @@ -0,0 +1,12 @@ +import { Outlet } from "react-router"; +function App() { + return ( +
+
+ +
+
+ ); +} + +export default App; diff --git a/src/app/main.tsx b/src/app/main.tsx new file mode 100644 index 0000000..a112f9e --- /dev/null +++ b/src/app/main.tsx @@ -0,0 +1,53 @@ +import ReactDOM from "react-dom/client"; +import "../shared/styles/index.css"; +import "../shared/styles/index.css"; +import { RouterProvider } from "react-router"; +import { StrictMode } from "react"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import router from "./router/routes"; +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 1000 * 60 * 5, // 5분 + retry: 2, // 실패 시 재시도 1회 + refetchOnWindowFocus: false, // 창 포커스 시 refetch 방지 + }, + }, +}); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + + +); + +if (import.meta.env.DEV) { + const { worker } = await import("./mocks/browser"); + worker.start({ + onUnhandledRequest: "bypass", + serviceWorker: { + url: "/mockServiceWorker.js", + options: { + scope: "/api/", + }, + }, + }); +} +// service worker 등록 +if ("serviceWorker" in navigator) { + window.addEventListener("load", () => { + navigator.serviceWorker + .register("/sw.js") + .then(reg => { + console.log("Service worker registered:", reg); + }) + .catch(err => { + console.error("Service worker registration failed:", err); + }); + }); +} diff --git a/src/app/mocks/browser.ts b/src/app/mocks/browser.ts new file mode 100644 index 0000000..bcd82e4 --- /dev/null +++ b/src/app/mocks/browser.ts @@ -0,0 +1,4 @@ +import { setupWorker } from "msw/browser"; +import { handlers } from "./handlers"; + +export const worker = setupWorker(...handlers); diff --git a/src/app/mocks/handlers.ts b/src/app/mocks/handlers.ts new file mode 100644 index 0000000..3d46fc2 --- /dev/null +++ b/src/app/mocks/handlers.ts @@ -0,0 +1,11 @@ +import { http, HttpResponse } from "msw"; + +export const handlers = [ + http.get("/api/user", () => { + return HttpResponse.json({ + id: 1, + name: "Mock User", + email: "mock@user.dev", + }); + }), +]; diff --git a/src/app/router/routes.tsx b/src/app/router/routes.tsx new file mode 100644 index 0000000..80d9f0d --- /dev/null +++ b/src/app/router/routes.tsx @@ -0,0 +1,80 @@ +import App from "@/app/App"; +import { + CalendarDdayList, + CalendarNewSchedule, + CalendarRoot, + CalendarScheduleDetail, + NewDday, + Login, + MyPage, + Birthday, + FirstMeet, + Nickname, + MilitaryDay, + CoupleContact, + Alarm, + Where, + MainPage, + StatusPage, + LetterListPage, + LetterDetailPage, + ProfileInfoPage, + NicknameEditPage, + BirthdayEditPage, + MilitaryEditPage, + FirstMeetEditPage, + AlarmSettingPage, + SettingPage, + DisconnectPage, +} from "@/pages"; +import { createBrowserRouter } from "react-router"; + +const router = createBrowserRouter([ + { path: "/login", element: }, + { + path: "/", + element: , // 공통 레이아웃 + children: [ + { index: true, element: }, // 메인 홈 화면 + { path: "calendar", element: }, // 캘린더 메인 화면 + { path: "calendar/schedule/new", element: }, // 일정 생성 페이지 + { path: "calendar/schedule/:scheduleId/edit", element: }, // 일정 수정 페이지 + { path: "calendar/dday/new", element: }, // 디데이 생성 페이지 + { path: "calendar/dday/:ddayId/edit", element: }, // 디데이 수정 페이지 + { path: "calendar/schedule/:scheduleId", element: }, // 특정 일정 상세 페이지 (동적 라우팅) + { path: "calendar/dday", element: }, //D-Day 일정 리스트 페이지 + { path: "calendar/letters", element: }, //편지 리스트 페이지 + { path: "calendar/schedule/:scheduleId/letter/:letterId", element: }, //편지 상세 보기 페이지 + { path: "mypage", element: }, // 마이페이지 + { path: "status", element: }, // 상태페이지 + { + path: "/mypage", + children: [ + { path: "", element: }, + { path: "profileinfo", element: }, + { path: "alarmsetting", element: }, + { path: "nicknameedit", element: }, + { path: "birthdayedit", element: }, + { path: "militarydayedit", element: }, + { path: "firstmeetedit", element: }, + { path: "setting", element: }, + { path: "disconnect", element: }, + ], + }, + { + path: "/onboarding", + children: [ + { path: "firstmeet", element: }, + { path: "military-day", element: }, + { path: "couple-contact", element: }, + { path: "nickname", element: }, + { path: "birthday", element: }, + { path: "alarm", element: }, + { path: "where", element: }, + ], + }, + ], + }, +]); + +export default router; diff --git a/src/assets/icons/back.svg b/src/assets/icons/back.svg new file mode 100644 index 0000000..b460927 --- /dev/null +++ b/src/assets/icons/back.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/blackClock.svg b/src/assets/icons/blackClock.svg new file mode 100644 index 0000000..46a97e5 --- /dev/null +++ b/src/assets/icons/blackClock.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/blackHeart.svg b/src/assets/icons/blackHeart.svg new file mode 100644 index 0000000..bca9265 --- /dev/null +++ b/src/assets/icons/blackHeart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/bottomArrow.svg b/src/assets/icons/bottomArrow.svg new file mode 100644 index 0000000..5d27075 --- /dev/null +++ b/src/assets/icons/bottomArrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/cake.svg b/src/assets/icons/cake.svg new file mode 100644 index 0000000..9c6f6d8 --- /dev/null +++ b/src/assets/icons/cake.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icons/calendar.svg b/src/assets/icons/calendar.svg new file mode 100644 index 0000000..b3190ab --- /dev/null +++ b/src/assets/icons/calendar.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icons/crossDelete.svg b/src/assets/icons/crossDelete.svg new file mode 100644 index 0000000..c77ca72 --- /dev/null +++ b/src/assets/icons/crossDelete.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/gear.svg b/src/assets/icons/gear.svg new file mode 100644 index 0000000..d2115c5 --- /dev/null +++ b/src/assets/icons/gear.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/grayCalendar.svg b/src/assets/icons/grayCalendar.svg new file mode 100644 index 0000000..39382fc --- /dev/null +++ b/src/assets/icons/grayCalendar.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/grayClock.svg b/src/assets/icons/grayClock.svg new file mode 100644 index 0000000..0c1573a --- /dev/null +++ b/src/assets/icons/grayClock.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/hambuk.svg b/src/assets/icons/hambuk.svg new file mode 100644 index 0000000..0cf98eb --- /dev/null +++ b/src/assets/icons/hambuk.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/heart.svg b/src/assets/icons/heart.svg new file mode 100644 index 0000000..87137b6 --- /dev/null +++ b/src/assets/icons/heart.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/infoCardArrow.svg b/src/assets/icons/infoCardArrow.svg new file mode 100644 index 0000000..7d7185a --- /dev/null +++ b/src/assets/icons/infoCardArrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/kakao.svg b/src/assets/icons/kakao.svg new file mode 100644 index 0000000..d270ec0 --- /dev/null +++ b/src/assets/icons/kakao.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/leftArrow.svg b/src/assets/icons/leftArrow.svg new file mode 100644 index 0000000..9c3362b --- /dev/null +++ b/src/assets/icons/leftArrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/letter.svg b/src/assets/icons/letter.svg new file mode 100644 index 0000000..8235a0b --- /dev/null +++ b/src/assets/icons/letter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/pencil.svg b/src/assets/icons/pencil.svg new file mode 100644 index 0000000..0980b47 --- /dev/null +++ b/src/assets/icons/pencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/plus.svg b/src/assets/icons/plus.svg new file mode 100644 index 0000000..3f14415 --- /dev/null +++ b/src/assets/icons/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/rightArrow.svg b/src/assets/icons/rightArrow.svg new file mode 100644 index 0000000..94aab2c --- /dev/null +++ b/src/assets/icons/rightArrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/travel.svg b/src/assets/icons/travel.svg new file mode 100644 index 0000000..a2778ba --- /dev/null +++ b/src/assets/icons/travel.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/icons/tripleArrow.svg b/src/assets/icons/tripleArrow.svg new file mode 100644 index 0000000..61e868a --- /dev/null +++ b/src/assets/icons/tripleArrow.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/airbg.svg b/src/assets/images/airbg.svg new file mode 100644 index 0000000..7ced06e --- /dev/null +++ b/src/assets/images/airbg.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/armybg.svg b/src/assets/images/armybg.svg new file mode 100644 index 0000000..3a617cf --- /dev/null +++ b/src/assets/images/armybg.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/back.svg b/src/assets/images/back.svg new file mode 100644 index 0000000..b460927 --- /dev/null +++ b/src/assets/images/back.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/boots.svg b/src/assets/images/boots.svg new file mode 100644 index 0000000..8ef3588 --- /dev/null +++ b/src/assets/images/boots.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/cake.svg b/src/assets/images/cake.svg new file mode 100644 index 0000000..7bc34ee --- /dev/null +++ b/src/assets/images/cake.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/calendar_black.svg b/src/assets/images/calendar_black.svg new file mode 100644 index 0000000..ac0614f --- /dev/null +++ b/src/assets/images/calendar_black.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/calendar_gray.svg b/src/assets/images/calendar_gray.svg new file mode 100644 index 0000000..d7f083d --- /dev/null +++ b/src/assets/images/calendar_gray.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/character/angry.svg b/src/assets/images/character/angry.svg new file mode 100644 index 0000000..185d839 --- /dev/null +++ b/src/assets/images/character/angry.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/common.svg b/src/assets/images/character/common.svg new file mode 100644 index 0000000..65b0dd8 --- /dev/null +++ b/src/assets/images/character/common.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/character/default_angry.svg b/src/assets/images/character/default_angry.svg new file mode 100644 index 0000000..b3320e0 --- /dev/null +++ b/src/assets/images/character/default_angry.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/default_common.svg b/src/assets/images/character/default_common.svg new file mode 100644 index 0000000..244d99d --- /dev/null +++ b/src/assets/images/character/default_common.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/default_happy.svg b/src/assets/images/character/default_happy.svg new file mode 100644 index 0000000..59a5769 --- /dev/null +++ b/src/assets/images/character/default_happy.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/default_miss.svg b/src/assets/images/character/default_miss.svg new file mode 100644 index 0000000..cb45b66 --- /dev/null +++ b/src/assets/images/character/default_miss.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/default_sad.svg b/src/assets/images/character/default_sad.svg new file mode 100644 index 0000000..db159b7 --- /dev/null +++ b/src/assets/images/character/default_sad.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/default_tired.svg b/src/assets/images/character/default_tired.svg new file mode 100644 index 0000000..d392bc6 --- /dev/null +++ b/src/assets/images/character/default_tired.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/default_worry.svg b/src/assets/images/character/default_worry.svg new file mode 100644 index 0000000..aca7590 --- /dev/null +++ b/src/assets/images/character/default_worry.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/focus_angry.svg b/src/assets/images/character/focus_angry.svg new file mode 100644 index 0000000..f0157e9 --- /dev/null +++ b/src/assets/images/character/focus_angry.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/focus_common.svg b/src/assets/images/character/focus_common.svg new file mode 100644 index 0000000..e56beba --- /dev/null +++ b/src/assets/images/character/focus_common.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/focus_happy.svg b/src/assets/images/character/focus_happy.svg new file mode 100644 index 0000000..34c7166 --- /dev/null +++ b/src/assets/images/character/focus_happy.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/focus_miss.svg b/src/assets/images/character/focus_miss.svg new file mode 100644 index 0000000..4270f45 --- /dev/null +++ b/src/assets/images/character/focus_miss.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/focus_sad.svg b/src/assets/images/character/focus_sad.svg new file mode 100644 index 0000000..e104761 --- /dev/null +++ b/src/assets/images/character/focus_sad.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/focus_tired.svg b/src/assets/images/character/focus_tired.svg new file mode 100644 index 0000000..e21244e --- /dev/null +++ b/src/assets/images/character/focus_tired.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/focus_worry.svg b/src/assets/images/character/focus_worry.svg new file mode 100644 index 0000000..5791318 --- /dev/null +++ b/src/assets/images/character/focus_worry.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/happy.svg b/src/assets/images/character/happy.svg new file mode 100644 index 0000000..ec2d117 --- /dev/null +++ b/src/assets/images/character/happy.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/images/character/inactive_angry.svg b/src/assets/images/character/inactive_angry.svg new file mode 100644 index 0000000..a94ece8 --- /dev/null +++ b/src/assets/images/character/inactive_angry.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/inactive_common.svg b/src/assets/images/character/inactive_common.svg new file mode 100644 index 0000000..287e175 --- /dev/null +++ b/src/assets/images/character/inactive_common.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/inactive_happy.svg b/src/assets/images/character/inactive_happy.svg new file mode 100644 index 0000000..909af53 --- /dev/null +++ b/src/assets/images/character/inactive_happy.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/inactive_miss.svg b/src/assets/images/character/inactive_miss.svg new file mode 100644 index 0000000..a3c5cca --- /dev/null +++ b/src/assets/images/character/inactive_miss.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/inactive_sad.svg b/src/assets/images/character/inactive_sad.svg new file mode 100644 index 0000000..6a9b294 --- /dev/null +++ b/src/assets/images/character/inactive_sad.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/inactive_tired.svg b/src/assets/images/character/inactive_tired.svg new file mode 100644 index 0000000..81df1a5 --- /dev/null +++ b/src/assets/images/character/inactive_tired.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/inactive_worry.svg b/src/assets/images/character/inactive_worry.svg new file mode 100644 index 0000000..2b25edf --- /dev/null +++ b/src/assets/images/character/inactive_worry.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/miss.svg b/src/assets/images/character/miss.svg new file mode 100644 index 0000000..84b3488 --- /dev/null +++ b/src/assets/images/character/miss.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/images/character/sad.svg b/src/assets/images/character/sad.svg new file mode 100644 index 0000000..e251627 --- /dev/null +++ b/src/assets/images/character/sad.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/character/tired.svg b/src/assets/images/character/tired.svg new file mode 100644 index 0000000..7a036b4 --- /dev/null +++ b/src/assets/images/character/tired.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character/worry.svg b/src/assets/images/character/worry.svg new file mode 100644 index 0000000..7878723 --- /dev/null +++ b/src/assets/images/character/worry.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/character_default.svg b/src/assets/images/character_default.svg new file mode 100644 index 0000000..d297d6a --- /dev/null +++ b/src/assets/images/character_default.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/checkcircle.svg b/src/assets/images/checkcircle.svg new file mode 100644 index 0000000..dcca9ed --- /dev/null +++ b/src/assets/images/checkcircle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/checked.svg b/src/assets/images/checked.svg new file mode 100644 index 0000000..fb0004e --- /dev/null +++ b/src/assets/images/checked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/close.svg b/src/assets/images/close.svg new file mode 100644 index 0000000..56a280a --- /dev/null +++ b/src/assets/images/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/couple_heart.svg b/src/assets/images/couple_heart.svg new file mode 100644 index 0000000..dd3eb95 --- /dev/null +++ b/src/assets/images/couple_heart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/delete.svg b/src/assets/images/delete.svg new file mode 100644 index 0000000..d591778 --- /dev/null +++ b/src/assets/images/delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/heals.svg b/src/assets/images/heals.svg new file mode 100644 index 0000000..f7866cb --- /dev/null +++ b/src/assets/images/heals.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/heart.svg b/src/assets/images/heart.svg new file mode 100644 index 0000000..7a19991 --- /dev/null +++ b/src/assets/images/heart.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/home_black.svg b/src/assets/images/home_black.svg new file mode 100644 index 0000000..23aef47 --- /dev/null +++ b/src/assets/images/home_black.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/home_gray.svg b/src/assets/images/home_gray.svg new file mode 100644 index 0000000..2441401 --- /dev/null +++ b/src/assets/images/home_gray.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/initbg.svg b/src/assets/images/initbg.svg new file mode 100644 index 0000000..2f061f8 --- /dev/null +++ b/src/assets/images/initbg.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/letter.svg b/src/assets/images/letter.svg new file mode 100644 index 0000000..64c958e --- /dev/null +++ b/src/assets/images/letter.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/letter_green.svg b/src/assets/images/letter_green.svg new file mode 100644 index 0000000..ffd8dcf --- /dev/null +++ b/src/assets/images/letter_green.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/login.svg b/src/assets/images/login.svg new file mode 100644 index 0000000..842b821 --- /dev/null +++ b/src/assets/images/login.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/mailbox.svg b/src/assets/images/mailbox.svg new file mode 100644 index 0000000..350a16a --- /dev/null +++ b/src/assets/images/mailbox.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/marinebg.svg b/src/assets/images/marinebg.svg new file mode 100644 index 0000000..3807de7 --- /dev/null +++ b/src/assets/images/marinebg.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/my_setting.svg b/src/assets/images/my_setting.svg new file mode 100644 index 0000000..9c61ed7 --- /dev/null +++ b/src/assets/images/my_setting.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/mypage_black.svg b/src/assets/images/mypage_black.svg new file mode 100644 index 0000000..7f8b04d --- /dev/null +++ b/src/assets/images/mypage_black.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/mypage_gray.svg b/src/assets/images/mypage_gray.svg new file mode 100644 index 0000000..9e96f36 --- /dev/null +++ b/src/assets/images/mypage_gray.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/navybg.svg b/src/assets/images/navybg.svg new file mode 100644 index 0000000..a6bddcd --- /dev/null +++ b/src/assets/images/navybg.svg @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/assets/images/next_arrow.svg b/src/assets/images/next_arrow.svg new file mode 100644 index 0000000..60c3129 --- /dev/null +++ b/src/assets/images/next_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/images/noDday.svg b/src/assets/images/noDday.svg new file mode 100644 index 0000000..c7f851e --- /dev/null +++ b/src/assets/images/noDday.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/notification.svg b/src/assets/images/notification.svg new file mode 100644 index 0000000..36b4eac --- /dev/null +++ b/src/assets/images/notification.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/profile_image.svg b/src/assets/images/profile_image.svg new file mode 100644 index 0000000..12da117 --- /dev/null +++ b/src/assets/images/profile_image.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/images/shoes.svg b/src/assets/images/shoes.svg new file mode 100644 index 0000000..90361dc --- /dev/null +++ b/src/assets/images/shoes.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/unchecked.svg b/src/assets/images/unchecked.svg new file mode 100644 index 0000000..5208697 --- /dev/null +++ b/src/assets/images/unchecked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/json/coupleconnect.json b/src/assets/json/coupleconnect.json new file mode 100644 index 0000000..1c3c404 --- /dev/null +++ b/src/assets/json/coupleconnect.json @@ -0,0 +1 @@ +{"assets":[{"id":"el-23-Zdct","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"군화","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[186.721,412.381]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":4.8,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[1.412],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":15,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[186.977,20.38],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[186.721,92.381],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25},"ti":[0,0],"to":[0,0]},{"t":15,"s":[186.721,92.381],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25},"ti":[0,0],"to":[0,0]},{"t":30,"s":[186.721,179.381],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":1,"k":[{"t":0,"s":[50],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":15,"s":[50],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":30,"s":[0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":15,"s":[100,100],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":21.6,"s":[89,100],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":30,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-1.507],[0,0],[1.507,0],[0,0],[0,1.507],[0,0],[-1.507,0]],"o":[[0,0],[1.507,0],[0,0],[0,1.507],[0,0],[-1.507,0],[0,0],[0,-1.507],[0,0]],"v":[[159.497,401.801],[173.139,401.801],[175.868,404.529],[175.868,404.529],[173.139,407.258],[159.497,407.258],[156.769,404.529],[156.769,404.529],[159.497,401.801]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.137,0.486,0.38]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[156.769,401.801]},"o":{"a":0,"k":100},"p":{"a":0,"k":[156.769,401.801]},"r":{"a":0,"k":-23},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-1.507],[0,0],[1.507,0],[0,0],[0,1.507],[0,0],[-1.507,0]],"o":[[0,0],[1.507,0],[0,0],[0,1.507],[0,0],[-1.507,0],[0,0],[0,-1.507],[0,0]],"v":[[156.299,394.266],[169.941,394.266],[172.67,396.994],[172.67,396.994],[169.941,399.723],[156.299,399.723],[153.571,396.994],[153.571,396.994],[156.299,394.266]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.137,0.486,0.38]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[153.571,394.266]},"o":{"a":0,"k":100},"p":{"a":0,"k":[153.571,394.266]},"r":{"a":0,"k":-23},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-3.016,1.279],[0,0],[-1.279,-3.016],[0,0],[-6.785,2.879],[0,0],[-3.839,-9.046],[0,0],[2.261,-0.96],[0,0],[0.535,0.075],[0,0],[0.626,-0.985],[0,0],[0.554,-0.235],[0,0],[0.96,2.261],[0,0],[0.159,2.007],[0,0],[3.101,3.038],[0.748,1.766]],"o":[[-1.28,-3.016],[0,0],[3.015,-1.28],[0,0],[2.879,6.785],[0,0],[9.047,-3.838],[0,0],[0.959,2.262],[0,0],[-0.498,0.21],[0,0],[-1.155,-0.164],[0,0],[-0.323,0.508],[0,0],[-2.262,0.959],[0,0],[-0.787,-1.853],[0,0],[-0.347,-4.328],[-1.371,-1.341],[0,0]],"v":[[144.09,392.877],[147.234,385.1],[167.709,376.412],[175.486,379.555],[184.059,399.76],[201.557,406.833],[204.287,405.674],[227.618,415.104],[229.47,419.469],[227.113,425.302],[194.865,438.985],[193.286,439.191],[188.83,438.552],[185.905,439.9],[183.896,443.069],[182.55,444.211],[172.512,448.47],[166.679,446.112],[158.599,427.07],[157.171,421.242],[157.016,419.299],[151.669,407.877],[148.458,403.17]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.192,0.686,0.537]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]},{"ddd":0,"ind":5,"ty":4,"nm":"꽃신","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[208.671,340.956]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":13.2,"s":[0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":23.4,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[208.927,-37.045],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[208.671,34.956],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25},"ti":[0,0],"to":[0,0]},{"t":23.4,"s":[208.671,34.956],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25},"ti":[0,0],"to":[0,0]},{"t":38.4,"s":[208.671,107.956],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":23.4,"s":[-31],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":38.4,"s":[0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":23.4,"s":[100,100],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":28.8,"s":[100,89],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":38.4,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[]},{"ddd":0,"ind":9,"ty":0,"nm":"Mask Group","td":1,"parent":5,"hd":false,"sr":1,"ks":{"a":{"a":0,"k":[100000,100000]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"h":200000,"refId":"el-33-Zdct-mask","w":200000},{"ddd":0,"ind":14,"ty":0,"nm":"Mask Group","tt":1,"tp":9,"parent":5,"hd":false,"sr":1,"ks":{"a":{"a":0,"k":[100000,100000]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"h":200000,"refId":"el-33-Zdct-masked","w":200000},{"ddd":0,"ind":15,"ty":4,"nm":"Import from Figma","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"상자 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[137.643,384.905],[254.809,384.905],[261.143,459.095],[133.119,459.095]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.749,0.902,0.855]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[0.257,-72.001],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[0,0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"날개1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"날개1","d":1,"ks":{"a":1,"k":[{"t":0,"s":[{"c":true,"i":[[0,0],[2,-1],[0,0],[0,0],[0,0],[0.18,1.239]],"o":[[-0.142,-0.969],[0,0],[0,0],[0,0],[1.02,-0.427],[0,0]],"v":[[300.442,333.854],[298,332],[261.143,346],[273.81,459.095],[316.077,440.634],[318.226,438.6]]}],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23}},{"t":15,"s":[{"c":true,"i":[[0,0],[0.913,0.355],[0,0],[0,0],[0,0],[0.18,1.239]],"o":[[-0.142,-0.969],[0,0],[0,0],[0,0],[1.227,0.247],[0,0]],"v":[[303.442,363.854],[301.736,361.713],[261.143,346],[273.81,459.095],[316.077,467.634],[318.226,465.6]]}],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.749,0.902,0.855]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[0.257,-72.001],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[0,0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"날개2 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"날개2","d":1,"ks":{"a":1,"k":[{"t":0,"s":[{"c":true,"i":[[0,0],[-2,-1],[0,0],[0,0],[0,0],[-0.173,1.231]],"o":[[0.134,-0.956],[0,0],[0,0],[0,0],[-1.006,-0.426],[0,0]],"v":[[88.116,330.829],[91,329],[128.143,346],[120,459.095],[75.896,435.659],[73.759,433.63]]}],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23}},{"t":15,"s":[{"c":true,"i":[[0,0],[-0.894,0.365],[0,0],[0,0],[0,0],[-0.173,1.231]],"o":[[0.134,-0.956],[0,0],[0,0],[0,0],[-1.22,0.237],[0,0]],"v":[[88.116,363.829],[89.776,361.696],[128.143,346],[120,459.095],[75.896,467.659],[73.759,465.63]]}],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.749,0.902,0.855]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[0.257,-72.001],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[0,0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[1.176,0.001],[0,0],[0.372,1.104]],"o":[[0,0],[0,0],[-0.363,1.118],[0,0],[-1.165,0],[0,0]],"v":[[120,459.095],[273.81,459.095],[261.753,496.126],[259.172,498],[135.068,498],[132.496,496.153]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.459,0.788,0.69]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[0.257,-72.001],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[0,0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[128.143,346],[261.143,346],[254.81,384.905],[138.095,384.905]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.627,0.855,0.788]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[0.257,-72.001],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[0,0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[128.143,346],[261.143,346],[273.81,459.095],[120,459.095]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.353,0.749,0.631]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"p":{"a":1,"k":[{"t":0,"s":[0.257,-72.001],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23},"ti":[0,0],"to":[0,0]},{"t":6,"s":[0,0],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[100,92],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":6,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"화면 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"화면","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[393,0],[393,369],[0,369]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,130]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[196.5,314.5]},"o":{"a":0,"k":100},"p":{"a":0,"k":[196.5,81.5]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]}]},{"id":"el-33-Zdct-mask","layers":[{"ddd":0,"ind":6,"ty":4,"nm":"center","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[-100000,-100000]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[]},{"ddd":0,"ind":7,"ty":4,"nm":"Mask Group","parent":6,"hd":false,"sr":1,"ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Mask Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Mask","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[280.341,316.652],[179.799,271.001],[137,365.259],[237.543,410.911]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.85,0.85,0.85]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]}]},{"id":"el-33-Zdct-masked","layers":[{"ddd":0,"ind":10,"ty":4,"nm":"center","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[-100000,-100000]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[]},{"ddd":0,"ind":11,"ty":4,"nm":"Mask Group","parent":10,"hd":false,"sr":1,"ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Path 1 (2) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[4.453,0.737],[0,0],[5.889,-2.214],[0.477,-2.881],[0.736,-4.453],[-4.453,-0.737],[0,0],[-5.876,2.256],[-0.602,2.663],[0,0],[0,0],[-0.71,4.292]],"o":[[0.737,-4.453],[0,0],[1.027,-6.207],[-2.733,1.027],[-4.453,-0.736],[-0.737,4.453],[0,0],[-0.984,6.217],[2.549,-0.979],[0,0],[0,0],[4.323,0.488],[0,0]],"v":[[212.224,347.475],[205.496,338.077],[205.494,338.076],[194.554,329.091],[189.367,335.407],[179.971,342.137],[186.7,351.535],[186.699,351.536],[197.705,360.447],[202.749,354.618],[202.827,354.204],[203.243,354.262],[212.224,347.475]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[2.345,-0.26],[0.642,0.921],[-2.351,0.2],[-0.632,-0.86]],"o":[[1.398,1.901],[-1.116,0.124],[-1.349,-1.936],[1.063,-0.091],[0,0]],"v":[[198.061,342.933],[195.929,347.795],[193.077,346.501],[195.331,341.695],[198.061,342.933]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,0.259,0.69]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.079,4.72],[0,0],[1.607,-1.404],[0,0],[0,0],[3.576,1.046],[0,0],[2.793,0.129],[0,0],[4.333,-2.092],[-2.338,-1.232],[0,0],[-7.05,-1.773],[0,0],[-2.598,3.056],[0,0],[-3.76,2.059],[0,0],[1.336,-4.092],[0,0],[0,0],[-0.883,-0.401],[0,0],[-0.401,0.883],[0,0],[-1.427,1.799],[0,0]],"o":[[3.143,-4.678],[0,0],[-1.166,-1.787],[0,0],[0,0],[-3.267,1.79],[0,0],[-2.684,-0.784],[0,0],[-4.807,-0.22],[-2.38,1.149],[0,0],[6.431,3.389],[0,0],[3.89,0.978],[0,0],[2.776,-3.266],[0,0],[3.655,-2.274],[0,0],[0,0],[-0.401,0.883],[0,0],[0.883,0.4],[0,0],[0.95,-2.091],[0,0],[0,0]],"v":[[252.107,347.609],[252.212,332.108],[246.993,324.104],[241.742,323.378],[212.832,348.629],[210.236,350.051],[199.549,351.214],[197.258,350.544],[189.013,349.171],[181.653,348.835],[167.727,351.687],[167.626,357.436],[178.749,363.297],[199.044,371.068],[201.114,371.589],[211.709,368.195],[219.823,358.65],[229.709,350.595],[231.721,349.493],[238.541,354.84],[237.536,357.918],[225.923,383.494],[226.796,385.819],[228.394,386.545],[230.719,385.672],[240.902,363.244],[244.482,357.387],[251.335,348.759]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,0.502,0.792]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]}]}],"ddd":0,"fr":30,"h":266,"ip":0,"layers":[{"ddd":0,"ind":24,"ty":0,"nm":"Import from Figma","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[196.5,271]},"o":{"a":0,"k":100},"p":{"a":0,"k":[196.5,271]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"h":542,"refId":"el-23-Zdct","w":393},{"ddd":0,"ind":25,"ty":4,"nm":"Screen","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[196.5,133]},"o":{"a":0,"k":100},"p":{"a":0,"k":[196.5,133]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Screen Group","bm":0,"it":[{"ty":"rc","hd":false,"nm":"Screen","d":1,"p":{"a":0,"k":[196.5,133]},"r":{"a":0,"k":0},"s":{"a":0,"k":[393,266]}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]}],"meta":{"g":"@phase-software/lottie-exporter 0.7.0"},"nm":"","op":60,"v":"5.6.0","w":393} \ No newline at end of file diff --git a/src/assets/json/pushalarm.json b/src/assets/json/pushalarm.json new file mode 100644 index 0000000..179de7a --- /dev/null +++ b/src/assets/json/pushalarm.json @@ -0,0 +1 @@ +{"assets":[{"id":"el-35-aFnd","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"푸시1","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[202.733,224.211]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":15,"s":[110,110],"i":{"x":0.5,"y":1},"o":{"x":0.12,"y":0.23}},{"t":21,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Layer 1 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 (92) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[125.527,569.827],[125.638,570.698],[116.117,571.909],[116.006,571.037]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[124.544,571.759],[124.946,574.921],[123.819,575.064],[123.529,572.786],[117.426,573.562],[117.313,572.678]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[124.214,568.233],[124.322,569.082],[117.138,569.995],[116.588,565.671],[123.703,564.766],[123.813,565.638],[117.815,566.401],[117.923,567.249],[123.654,566.521],[123.76,567.358],[118.029,568.086],[118.146,569.005]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[134.294,563.148],[134.983,568.565],[133.89,568.704],[133.732,567.46],[131.453,567.75],[131.563,568.61],[126.761,569.221],[126.182,564.664],[127.286,564.523],[127.465,565.93],[130.069,565.599],[129.891,564.192],[130.983,564.053],[131.104,565.007],[133.383,564.717],[133.201,563.287]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[135.042,569.03],[135.367,571.588],[129.682,572.311],[129.805,573.276],[135.862,572.505],[135.974,573.389],[128.813,574.299],[128.473,571.626],[134.169,570.901],[134.058,570.03],[128.339,570.757],[128.229,569.896]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[127.754,568.197],[130.358,567.866],[130.177,566.447],[127.573,566.779]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[131.345,566.901],[133.624,566.612],[133.491,565.565],[131.212,565.855]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[144.096,561.914],[144.521,565.262],[146.032,565.07],[146.149,565.988],[144.638,566.18],[145.086,569.703],[143.981,569.843],[142.991,562.054]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[142.285,563.373],[142.398,564.268],[136.191,565.057],[136.077,564.162],[138.634,563.837],[138.479,562.616],[139.583,562.476],[139.739,563.696]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.15,-1.186],[1.5,-0.191],[0.151,1.186],[-1.511,0.192]],"o":[[1.5,-0.19],[0.151,1.186],[-1.511,0.192],[-0.151,-1.186],[0,0]],"v":[[139.358,565.162],[142.13,566.806],[139.856,569.08],[137.073,567.449],[139.358,565.162]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.099,-0.684],[-0.884,0.112],[0.074,0.675],[0.883,-0.113]],"o":[[-0.884,0.112],[0.074,0.676],[0.883,-0.113],[-0.099,-0.685],[0,0]],"v":[[139.466,566.011],[138.143,567.313],[139.747,568.22],[141.096,566.938],[139.466,566.011]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[145.718,571.146],[145.832,572.041],[138.787,572.937],[138.404,569.926],[139.509,569.786],[139.778,571.901]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[157.289,560.225],[157.555,562.317],[159.066,562.125],[159.184,563.055],[157.673,563.247],[157.952,565.444],[156.848,565.585],[156.184,560.365]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-1.558,0.523],[0,0],[1.534,-0.195],[0,0],[0,0]],"o":[[0,0],[1.4,-0.19],[0,0],[-1.711,0.571],[0,0],[0,0],[0,0]],"v":[[150.745,561.529],[151.176,564.924],[155.596,563.913],[155.852,564.814],[151.039,565.886],[150.19,565.994],[149.64,561.67]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[158.013,565.921],[158.35,568.572],[152.735,569.285],[152.868,570.332],[158.843,569.572],[158.957,570.467],[151.889,571.366],[151.534,568.576],[157.137,567.863],[157.019,566.933],[151.393,567.649],[151.282,566.777]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.148,-1.163],[2.348,-0.299],[0.147,1.162],[-2.348,0.299]],"o":[[2.348,-0.298],[0.147,1.162],[-2.349,0.298],[-0.148,-1.163],[0,0]],"v":[[164.158,559.528],[168.106,560.846],[164.615,563.121],[160.666,561.792],[164.158,559.528]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.09,-0.614],[-1.663,0.212],[0.082,0.639],[1.663,-0.211]],"o":[[-1.662,0.212],[0.07,0.641],[1.662,-0.211],[-0.078,-0.616],[0,0]],"v":[[164.261,560.342],[161.816,561.645],[164.51,562.295],[166.966,560.991],[164.261,560.342]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[169.451,563.156],[169.563,564.039],[160.065,565.247],[159.953,564.363]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[168.468,564.993],[168.778,567.435],[162.71,568.206],[162.828,569.136],[169.187,568.328],[169.295,569.176],[161.855,570.122],[161.526,567.542],[167.583,566.772],[167.48,565.958],[161.411,566.729],[161.306,565.904]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[180.771,557.239],[181.114,559.936],[182.626,559.744],[182.745,560.686],[181.234,560.878],[181.57,563.517],[180.465,563.657],[179.667,557.38]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[181.639,564.063],[182.079,567.527],[175.43,568.373],[174.989,564.909]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[176.181,565.643],[176.397,567.34],[180.873,566.771],[180.657,565.074]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[178.941,558.547],[179.054,559.43],[172.846,560.22],[172.733,559.336],[175.291,559.011],[175.146,557.872],[176.251,557.731],[176.395,558.87]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.141,-1.116],[1.498,-0.202],[0.143,1.127],[-1.523,0.194]],"o":[[1.5,-0.19],[0.144,1.127],[-1.525,0.182],[-0.142,-1.116],[0,0]],"v":[[176.007,560.278],[178.766,561.818],[176.482,564.01],[173.71,562.461],[176.007,560.278]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.091,-0.627],[-0.883,0.112],[0.071,0.653],[0.882,-0.124]],"o":[[-0.885,0.101],[0.071,0.652],[0.883,-0.112],[-0.092,-0.626],[0,0]],"v":[[176.115,561.127],[174.779,562.325],[176.375,563.173],[177.732,561.949],[176.115,561.127]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.193,-2.231],[0,0],[0.168,1.975],[0,0],[0,0]],"o":[[0.286,2.338],[0,0],[1.008,-1.782],[0,0],[0,0],[0,0]],"v":[[185.613,557.876],[184.721,564.888],[183.798,564.509],[184.775,558.904],[183.357,559.084],[183.242,558.177]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.012,-0.979],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.658,-1.241],[0,0],[0.209,2.017],[0,0],[0,0]],"o":[[0.112,0.877],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.074,1.327],[0,0],[1.119,-1.979],[0,0],[0,0],[0,0]],"v":[[187.926,557.582],[188.155,560.4],[189.375,560.244],[188.897,556.478],[189.943,556.345],[191.168,565.982],[190.122,566.115],[189.489,561.14],[188.141,561.311],[187.137,565.219],[186.213,564.828],[187.089,558.61],[186.042,558.743],[185.927,557.836]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[191.885,555.826],[193.209,566.242],[192.151,566.377],[190.827,555.961]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[201.437,555.321],[202.007,559.808],[197.136,560.427],[196.566,555.94]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[197.759,556.686],[198.105,559.406],[200.814,559.062],[200.468,556.342]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[204.254,554.254],[204.562,556.672],[206.073,556.48],[206.19,557.398],[204.678,557.59],[205.005,560.159],[203.901,560.3],[203.15,554.394]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-1.806,-0.036],[0,0],[0.731,0.917],[1.545,-0.433],[0,0],[-0.051,1.04],[0,0],[0,0]],"o":[[0,0],[0,0],[0.277,0.969],[0,0],[-1.612,-0.043],[-0.466,1.075],[0,0],[1.753,-0.477],[0,0],[0,0],[0,0]],"v":[[205.242,560.72],[205.354,561.603],[202.506,561.965],[206.059,563.711],[205.76,564.611],[202.023,563.09],[198.807,565.484],[198.292,564.687],[201.309,562.118],[198.437,562.483],[198.325,561.599]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[214.984,552.89],[216.312,563.329],[215.207,563.469],[213.88,553.03]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.283,-2.232],[1.546,-0.197],[0.285,2.243],[-1.569,0.2]],"o":[[1.546,-0.196],[0.286,2.244],[-1.57,0.199],[-0.284,-2.232],[0,0]],"v":[[209.515,554.376],[212.664,557.685],[210.445,561.689],[207.282,558.37],[209.515,554.376]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.208,-1.64],[-0.965,0.123],[0.21,1.651],[0.953,-0.122]],"o":[[-0.965,0.122],[0.21,1.65],[0.953,-0.121],[-0.208,-1.639],[0,0]],"v":[[209.641,555.365],[208.351,558.234],[210.319,560.7],[211.595,557.821],[209.641,555.365]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[224.761,551.647],[225.298,555.867],[226.972,555.654],[227.088,556.572],[225.414,556.785],[226.085,562.063],[224.993,562.202],[223.668,551.785]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[222.969,553.528],[223.084,554.435],[216.911,555.22],[216.796,554.313],[219.365,553.986],[219.176,552.498],[220.28,552.358],[220.469,553.846]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.192,-1.417],[1.486,-0.201],[0.181,1.43],[-1.5,0.19]],"o":[[1.488,-0.19],[0.171,1.431],[-1.501,0.179],[-0.181,-1.418],[0,0]],"v":[[220.136,555.59],[223.035,557.678],[220.752,560.437],[217.851,558.337],[220.136,555.59]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.125,-0.894],[-0.882,0.124],[0.116,0.906],[0.883,-0.112]],"o":[[-0.884,0.113],[0.104,0.908],[0.885,-0.1],[-0.113,-0.896],[0,0]],"v":[[220.251,556.496],[218.908,558.203],[220.634,559.507],[221.977,557.813],[220.251,556.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[235.886,550.232],[237.211,560.648],[236.164,560.781],[234.84,550.365]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[1.361,-1.048],[0,0],[0.081,2.17],[0,0],[0,0],[0,0],[0.205,-0.947],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.468,1.288],[0,0],[2.041,-1.595],[0,0],[0,0],[0,0],[0.124,1.018],[0,0],[0,0],[0,0]],"v":[[233.723,550.779],[234.948,560.416],[233.902,560.549],[233.287,555.713],[231.253,555.972],[228.57,559.491],[227.842,558.78],[230.644,553.131],[227.668,553.51],[227.552,552.603],[231.621,552.086],[231.524,555.039],[233.175,554.83],[232.677,550.912]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.834,0.129],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.674,0.164],[0,0],[1.394,-0.189]],"o":[[0.639,-0.087],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.685,-0.111],[0,0],[-1.672,0.508],[0,0]],"v":[[240.931,557.021],[243.205,556.697],[242.954,554.72],[241.199,554.944],[240.655,550.665],[245.107,550.099],[245.221,550.995],[241.85,551.423],[242.166,553.911],[245.63,553.471],[245.744,554.366],[244.012,554.586],[244.257,556.516],[246.296,556.103],[246.456,556.898],[241.199,557.92]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[249.081,548.555],[250.405,558.971],[249.347,559.105],[248.681,553.862],[247.542,554.007],[248.14,558.715],[247.117,558.845],[245.887,549.173],[246.91,549.043],[247.428,553.112],[248.567,552.967],[248.023,548.689]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-1.684,-0.519],[0,0],[0.64,1.366],[1.117,-0.78],[0,0],[0.245,1.93],[0,0],[0,0]],"o":[[0.242,1.906],[0,0],[-1.261,-0.442],[-0.268,1.558],[0,0],[1.519,-0.973],[0,0],[0,0],[0,0]],"v":[[254.51,550.558],[257.747,554.742],[257.185,555.711],[254.244,552.836],[252.107,556.557],[251.295,555.751],[253.394,550.7],[253.168,548.921],[254.284,548.779]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[259.102,547.281],[260.429,557.72],[259.336,557.859],[258.563,551.779],[256.238,552.075],[256.125,551.18],[258.45,550.884],[258.009,547.42]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[272.273,545.606],[273.597,556.022],[272.481,556.164],[271.157,545.748]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.351,-2.162],[0,0],[0.093,2.457],[0,0],[0,0]],"o":[[0.387,3.046],[0,0],[2.605,-1.672],[0,0],[0,0],[0,0]],"v":[[269.311,547.117],[265.382,555.141],[264.687,554.32],[268.308,548.142],[264.471,548.63],[264.359,547.746]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[275.15,546.209],[275.481,548.813],[276.573,548.674],[276.242,546.07],[277.172,545.952],[278.058,552.915],[275.128,553.288],[274.243,546.324]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[275.92,552.266],[277.012,552.127],[276.684,549.546],[275.592,549.685]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[278.73,545.754],[279.061,548.358],[280.142,548.221],[279.811,545.616],[280.73,545.5],[281.102,548.429],[282.241,548.284],[281.748,544.402],[282.806,544.267],[284.13,554.683],[283.072,554.818],[282.358,549.203],[281.219,549.348],[281.615,552.463],[278.685,552.836],[277.8,545.872]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[279.5,551.811],[280.581,551.673],[280.253,549.092],[279.172,549.23]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.118,0.93],[-2.232,0.284],[-0.209,-1.639],[0.777,-0.577],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.915,-0.362],[-0.209,-1.639],[2.244,-0.285],[0.117,0.918],[0,0],[0,0]],"v":[[294.764,551.075],[294.88,551.993],[285.348,553.205],[285.231,552.287],[287.51,551.997],[287.164,549.277],[285.519,547.301],[289.009,544.093],[293.203,546.324],[292.136,548.621],[292.485,551.365]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.143,-1.128],[-1.639,0.209],[0.142,1.116],[1.628,-0.207]],"o":[[-1.639,0.209],[0.142,1.116],[1.627,-0.206],[-0.143,-1.128],[0,0]],"v":[[289.121,544.976],[286.588,547.165],[289.59,548.661],[292.133,546.46],[289.121,544.976]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.471,-0.056],[0.431,0.046]],"o":[[0,0],[0,0],[-0.442,0.17],[-0.488,0.062],[0,0]],"v":[[288.602,551.858],[291.369,551.507],[291.074,549.182],[289.699,549.522],[288.308,549.545]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.046,0.455],[-0.453,0.058],[-0.064,-0.453],[0.453,-0.063]],"o":[[-0.453,0.058],[-0.07,-0.451],[0.454,-0.052],[0.052,0.454],[0,0]],"v":[[296.872,552.142],[295.942,551.421],[296.662,550.491],[297.593,551.212],[296.872,552.142]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.211,-1.662],[1.926,-0.41],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.199,1.564],[-2.219,0.294]],"o":[[2.234,-0.273],[0.199,1.564],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.956,0.083],[-0.212,-1.662],[0,0]],"v":[[122.426,583.44],[126.626,585.717],[123.675,588.892],[123.935,590.938],[128.178,590.399],[128.295,591.317],[118.762,592.529],[118.645,591.611],[122.842,591.077],[122.582,589.031],[118.942,586.694],[122.426,583.44]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.143,-1.128],[-1.606,0.192],[0.149,1.174],[1.614,-0.217]],"o":[[-1.606,0.193],[0.15,1.174],[1.614,-0.217],[-0.144,-1.127],[0,0]],"v":[[122.542,584.346],[120.011,586.558],[123.021,588.113],[125.557,585.853],[122.542,584.346]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[136.598,583.41],[136.712,584.305],[129.563,585.214],[129.166,582.098],[130.248,581.961],[130.53,584.181]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[137.945,585.081],[138.057,585.965],[128.525,587.177],[128.412,586.293]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[136.966,586.954],[137.29,589.5],[131.245,590.269],[131.367,591.234],[137.773,590.419],[137.884,591.291],[130.374,592.246],[130.037,589.595],[136.094,588.825],[135.983,587.953],[129.903,588.726],[129.793,587.866]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[149.747,579.328],[151.071,589.744],[149.955,589.886],[148.631,579.47]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.351,-2.162],[0,0],[0.094,2.457],[0,0],[0,0]],"o":[[0.387,3.046],[0,0],[2.604,-1.672],[0,0],[0,0],[0,0]],"v":[[146.785,580.839],[142.856,588.863],[142.161,588.042],[145.781,581.864],[141.945,582.352],[141.833,581.469]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[161.589,583.363],[161.701,584.247],[157.563,584.773],[157.806,586.691],[156.714,586.83],[156.47,584.912],[152.168,585.459],[152.056,584.575]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[161.02,587.346],[161.134,588.241],[153.845,589.167],[153.483,586.319],[154.576,586.18],[154.824,588.133]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[153.753,579.15],[153.914,580.417],[158.738,579.804],[158.577,578.536],[159.682,578.396],[160.217,582.604],[153.195,583.497],[152.66,579.289]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[154.175,582.475],[159,581.861],[158.843,580.629],[154.019,581.242]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[170.713,581.542],[170.826,582.425],[167.675,582.826],[167.999,585.372],[172.242,584.832],[172.357,585.739],[162.825,586.951],[162.709,586.044],[166.906,585.51],[166.582,582.965],[163.571,583.347],[162.951,578.465],[170.112,577.554],[170.226,578.449],[164.169,579.22],[164.563,582.323]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[185.431,583.108],[185.546,584.015],[176.013,585.227],[175.898,584.32],[180.071,583.789],[179.757,581.313],[180.849,581.174],[181.164,583.651]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.054,-0.081],[0,0],[0.875,1.348],[1.632,-0.538],[0,0],[0.21,1.651],[0,0],[0,0]],"o":[[0.21,1.65],[0,0],[-1.728,-0.123],[-0.504,1.517],[0,0],[1.957,-0.592],[0,0],[0,0],[0,0]],"v":[[180.332,576.917],[184.606,579.964],[184.244,580.932],[179.957,578.618],[176.421,581.926],[175.817,581.082],[179.169,577.064],[179.069,576.274],[180.231,576.126]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-0.138,-1.087],[2.245,-0.274],[0.151,1.185],[-1.923,0.35],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.926,-0.139],[0.151,1.186],[-2.265,0.3],[-0.138,-1.087],[0,0],[0,0],[0,0],[0,0]],"v":[[195.257,578.445],[195.371,579.34],[191.162,579.875],[191.289,580.875],[194.569,582.324],[191.21,584.618],[187.361,583.241],[190.197,581.014],[190.07,580.014],[185.873,580.548],[185.759,579.652]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.081,-0.64],[-1.591,0.214],[0.08,0.628],[1.569,-0.199]],"o":[[-1.593,0.203],[0.08,0.628],[1.571,-0.188],[-0.081,-0.64],[0,0]],"v":[[190.85,581.781],[188.477,583.099],[191.102,583.769],[193.464,582.465],[190.85,581.781]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-1.924,0.055],[0,0],[0.705,1.038],[1.775,-0.439],[0,0],[-0.029,1.025],[0,0],[0,0]],"o":[[0,0],[0,0],[0.285,0.986],[0,0],[-1.829,0.02],[-0.44,1.184],[0,0],[1.848,-0.424],[0,0],[0,0],[0,0]],"v":[[193.855,574.205],[193.968,575.088],[190.806,575.49],[194.588,577.089],[194.304,578.011],[190.18,576.421],[186.573,578.994],[186.079,578.171],[189.318,575.68],[186.191,576.077],[186.078,575.194]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[203.548,572.488],[204.085,576.708],[205.759,576.495],[205.876,577.414],[204.202,577.627],[204.873,582.904],[203.78,583.043],[202.456,572.627]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[201.756,574.37],[201.871,575.277],[195.698,576.062],[195.583,575.155],[198.152,574.828],[197.963,573.34],[199.067,573.2],[199.256,574.688]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.192,-1.417],[1.487,-0.201],[0.182,1.43],[-1.5,0.191]],"o":[[1.488,-0.189],[0.17,1.431],[-1.501,0.179],[-0.18,-1.418],[0,0]],"v":[[198.923,576.431],[201.823,578.52],[199.539,581.279],[196.638,579.179],[198.923,576.431]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.126,-0.893],[-0.882,0.124],[0.115,0.907],[0.884,-0.112]],"o":[[-0.883,0.112],[0.103,0.909],[0.885,-0.101],[-0.114,-0.895],[0,0]],"v":[[199.038,577.338],[197.696,579.044],[199.421,580.349],[200.765,578.654],[199.038,577.338]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[214.674,571.074],[215.998,581.49],[214.952,581.623],[213.627,571.207]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[1.361,-1.047],[0,0],[0.081,2.169],[0,0],[0,0],[0,0],[0.204,-0.947],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.468,1.289],[0,0],[2.042,-1.595],[0,0],[0,0],[0,0],[0.123,1.018],[0,0],[0,0],[0,0]],"v":[[212.511,571.621],[213.736,581.258],[212.69,581.391],[212.075,576.555],[210.04,576.813],[207.357,580.332],[206.629,579.622],[209.431,573.973],[206.455,574.351],[206.34,573.445],[210.409,572.927],[210.312,575.881],[211.962,575.671],[211.464,571.754]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[227.103,569.506],[227.397,571.819],[228.92,571.625],[229.036,572.544],[227.513,572.737],[227.849,575.376],[226.744,575.517],[225.998,569.646]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[227.918,575.923],[228.408,579.771],[221.735,580.619],[221.245,576.771]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[222.436,577.494],[222.704,579.598],[227.226,579.023],[226.958,576.919]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-1.441,0.481],[0,0],[1.533,-0.207],[0,0],[0,0]],"o":[[0,0],[1.506,-0.2],[0,0],[-1.709,0.584],[0,0],[0,0],[0,0]],"v":[[220.564,570.857],[221.039,574.588],[225.469,573.564],[225.723,574.453],[220.9,575.539],[220.051,575.647],[219.46,570.997]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0.031,-0.56],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[2.3,-1.515],[0,0],[0.091,2.434],[0,0],[0,0]],"o":[[0.073,0.576],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.346,2.01],[0,0],[2.518,-1.66],[0,0],[0,0],[0,0]],"v":[[234.648,569.669],[234.711,571.373],[237.141,571.065],[236.783,568.251],[237.876,568.112],[239.2,578.528],[238.108,578.667],[237.611,574.761],[234.809,575.118],[234.694,574.211],[237.496,573.855],[237.253,571.948],[234.614,572.284],[230.832,577.655],[230.138,576.845],[233.656,570.692],[229.901,571.17],[229.789,570.286]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[249.738,572.582],[249.851,573.477],[245.62,574.015],[246.082,577.653],[245.001,577.791],[244.539,574.152],[240.354,574.684],[240.24,573.789]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-2.004,-0.017],[0,0],[0.78,1.112],[1.651,-0.481],[0,0],[0.123,1.296],[0,0],[0,0]],"o":[[0,0],[0,0],[0.181,1.288],[0,0],[-1.743,-0.05],[-0.493,1.274],[0,0],[1.913,-0.515],[0,0],[0,0],[0,0]],"v":[[248.174,567.441],[248.287,568.324],[245.067,568.734],[249.003,570.986],[248.707,571.909],[244.601,570.092],[241.093,572.877],[240.563,572.059],[243.811,568.893],[240.568,569.306],[240.455,568.422]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-1.502,-0.671],[0,0],[0.502,1.165],[0.933,-0.745],[0,0],[0.226,1.778],[0,0],[0,0]],"o":[[0.211,1.663],[0,0],[-1.051,-0.463],[-0.221,1.375],[0,0],[1.364,-1.071],[0,0],[0,0],[0,0]],"v":[[253.318,569.055],[255.955,573.079],[255.447,574.006],[253.099,571.422],[251.373,574.76],[250.582,574.022],[252.254,569.238],[252.007,567.296],[253.077,567.16]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[258.745,565.471],[260.069,575.887],[259.011,576.022],[257.687,565.605]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[256.608,565.944],[257.842,575.651],[256.795,575.784],[256.119,570.459],[254.503,570.665],[254.386,569.746],[256.002,569.541],[255.561,566.077]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.119,0.93],[-2.232,0.284],[-0.209,-1.639],[0.777,-0.577],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.915,-0.362],[-0.208,-1.639],[2.244,-0.285],[0.116,0.918],[0,0],[0,0]],"v":[[270.645,572.286],[270.761,573.205],[261.229,574.417],[261.112,573.498],[263.391,573.209],[263.045,570.488],[261.399,568.512],[264.89,565.304],[269.084,567.535],[268.017,569.832],[268.366,572.576]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.143,-1.128],[-1.639,0.208],[0.142,1.116],[1.628,-0.207]],"o":[[-1.639,0.208],[0.142,1.116],[1.627,-0.207],[-0.143,-1.128],[0,0]],"v":[[265.002,566.188],[262.469,568.376],[265.471,569.873],[268.014,567.671],[265.002,566.188]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.5,-0.064],[0.431,0.046]],"o":[[0,0],[0,0],[-0.41,0.164],[-0.488,0.062],[0,0]],"v":[[264.483,573.07],[267.25,572.718],[266.954,570.393],[265.58,570.733],[264.189,570.756]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.046,0.455],[-0.453,0.058],[-0.062,-0.454],[0.453,-0.062]],"o":[[-0.453,0.058],[-0.07,-0.452],[0.455,-0.053],[0.053,0.454],[0,0]],"v":[[272.753,573.353],[271.823,572.633],[272.543,571.702],[273.473,572.423],[272.753,573.353]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.173,0.18,0.192]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 (41) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.233,-1.742],[1.873,-0.456],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.202,1.587],[-2.279,0.289]],"o":[[2.278,-0.29],[0.191,1.595],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.921,0.038],[-0.222,-1.744],[0,0]],"v":[[117.625,545.579],[121.98,547.966],[119.092,551.263],[119.321,553.065],[123.448,552.541],[123.603,553.761],[113.919,554.992],[113.764,553.772],[117.844,553.253],[117.614,551.439],[114.017,548.979],[117.625,545.579]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.135,-1.058],[-1.477,0.188],[0.131,1.117],[1.488,-0.19]],"o":[[-1.477,0.187],[0.142,1.116],[1.488,-0.189],[-0.146,-1.057],[0,0]],"v":[[117.776,546.765],[115.482,548.793],[118.215,550.217],[120.515,548.153],[117.776,546.765]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[131.847,545.389],[131.997,546.563],[124.638,547.499],[124.233,544.313],[125.709,544.126],[125.965,546.137]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[133.203,547.13],[133.352,548.305],[123.668,549.536],[123.519,548.362]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[132.271,549.092],[132.628,551.905],[126.723,552.656],[126.809,553.33],[133.04,552.538],[133.184,553.677],[125.465,554.659],[125.099,551.775],[131.016,551.023],[130.939,550.419],[124.999,551.174],[124.854,550.035]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[143.644,547.209],[143.794,548.395],[134.145,549.621],[133.995,548.435]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[143.034,551.149],[143.185,552.335],[135.791,553.275],[135.398,550.183],[136.886,549.993],[137.129,551.9]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.183,-1.347],[2.313,-0.294],[0.171,1.348],[-2.338,0.285]],"o":[[2.312,-0.306],[0.16,1.35],[-2.337,0.297],[-0.172,-1.349],[0,0]],"v":[[138.173,542.742],[142.296,544.415],[138.726,547.09],[134.589,545.395],[138.173,542.742]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.093,-0.638],[-1.465,0.187],[0.084,0.663],[1.466,-0.174]],"o":[[-1.463,0.198],[0.072,0.664],[1.465,-0.186],[-0.082,-0.639],[0,0]],"v":[[138.321,543.904],[136.135,545.198],[138.574,545.892],[140.762,544.61],[138.321,543.904]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[156.764,546.061],[156.917,547.27],[152.779,547.796],[153.219,551.26],[151.755,551.446],[151.314,547.982],[147.234,548.501],[147.08,547.292]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.186,-1.465],[2.267,-0.289],[0.172,1.443],[-2.267,0.289]],"o":[[2.267,-0.288],[0.184,1.442],[-2.267,0.288],[-0.197,-1.463],[0,0]],"v":[[151.185,541.111],[155.35,543.027],[151.791,545.878],[147.654,544.005],[151.185,541.111]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.11,-0.778],[-1.419,0.181],[0.096,0.756],[1.429,-0.182]],"o":[[-1.419,0.18],[0.085,0.757],[1.429,-0.181],[-0.099,-0.779],[0,0]],"v":[[151.336,542.297],[149.177,543.812],[151.642,544.703],[153.816,543.222],[151.336,542.297]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[165.498,538.937],[166.845,549.539],[165.369,549.727],[164.021,539.125]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-1.52,0.447],[0,0],[1.929,-0.245],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.609,-0.211],[0,0],[-1.705,0.524],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[162.332,540.238],[162.85,544.318],[159.363,544.761],[159.61,546.703],[164.099,545.778],[164.379,546.959],[159.184,547.997],[158.23,548.119],[157.679,543.782],[161.19,543.336],[160.973,541.627],[157.45,542.075],[157.298,540.878]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.193,-1.511],[1.674,-0.213],[0.193,1.523],[-1.675,0.201]],"o":[[1.673,-0.224],[0.193,1.523],[-1.674,0.212],[-0.192,-1.511],[0,0]],"v":[[170.435,539.03],[173.695,541.25],[171.096,544.227],[167.824,541.996],[170.435,539.03]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.116,-0.824],[-0.837,0.107],[0.095,0.839],[0.849,-0.108]],"o":[[-0.837,0.106],[0.095,0.838],[0.837,-0.107],[-0.117,-0.824],[0,0]],"v":[[170.598,540.309],[169.3,541.809],[170.932,542.936],[172.253,541.433],[170.598,540.309]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[175.809,537.626],[177.157,548.229],[175.681,548.416],[174.333,537.814]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.227,0.602],[0,0],[1.848,-0.235]],"o":[[1.884,-0.228],[0,0],[-2.291,0.752],[0,0]],"v":[[167.882,545.982],[174.605,544.785],[174.857,545.839],[168.21,547.169]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[184.062,537.687],[185.132,546.104],[183.377,546.327],[182.518,539.573],[182.472,539.579],[180.696,541.033],[180.499,539.487],[182.412,537.897]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.35,2.755],[-2.104,0.267],[-0.349,-2.743],[2.104,-0.268]],"o":[[-2.104,0.267],[-0.35,-2.755],[2.105,-0.268],[0.352,2.767],[0,0]],"v":[[190.367,545.557],[186.434,541.662],[189.267,536.908],[193.2,540.802],[190.367,545.557]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.258,1.94],[0.977,-0.125],[-0.243,-1.918],[-0.977,0.124]],"o":[[0.976,-0.124],[-0.244,-1.918],[-0.976,0.124],[0.236,1.943],[0,0]],"v":[[190.184,544.115],[191.41,541.03],[189.449,538.338],[188.224,541.435],[190.184,544.115]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.35,2.755],[-2.104,0.267],[-0.349,-2.744],[2.104,-0.268]],"o":[[-2.105,0.267],[-0.35,-2.755],[2.104,-0.268],[0.351,2.767],[0,0]],"v":[[198.226,544.558],[194.293,540.663],[197.126,535.909],[201.059,539.803],[198.226,544.558]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.259,1.94],[0.976,-0.124],[-0.244,-1.919],[-0.976,0.124]],"o":[[0.977,-0.124],[-0.243,-1.919],[-0.977,0.125],[0.235,1.942],[0,0]],"v":[[198.042,543.116],[199.268,540.031],[197.308,537.338],[196.083,540.436],[198.042,543.116]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[210.163,533.271],[211.155,541.071],[209.678,541.259],[209.194,537.446],[207.241,537.694],[207.512,539.833],[202.479,540.473],[201.787,535.032],[203.275,534.843],[203.482,536.471],[205.563,536.206],[205.356,534.579],[206.821,534.392],[207.09,536.508],[209.043,536.26],[208.687,533.458]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[211.553,542.438],[211.704,543.624],[204.438,544.548],[204.011,541.188],[205.51,540.997],[205.787,543.171]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[203.819,539.121],[205.9,538.857],[205.706,537.334],[203.625,537.598]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.312,0.735],[0.542,-0.571],[0.317,0.769],[0.493,-0.535],[0,0],[0.189,1.488],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.688,-1],[0.136,1.07],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.229,-0.883],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.616,-0.388],[-0.125,0.826],[-0.673,-0.423],[-0.124,0.784],[0,0],[1.082,-1.153],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.131,1.029],[0.412,-1.128],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.172,1.449],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[220.903,531.893],[222.248,542.472],[220.853,542.65],[220.184,537.383],[219.474,537.474],[220.082,542.252],[218.71,542.426],[218.363,539.694],[217.773,540.631],[216.406,538.891],[215.464,541.055],[214.011,539.196],[213.135,541.221],[212.172,540.339],[212.932,535.907],[212.856,535.314],[211.926,535.433],[211.776,534.247],[214.426,533.91],[214.577,535.096],[214.123,535.153],[214.199,535.746],[215.216,539.102],[215.338,535.601],[215.263,535.008],[214.833,535.063],[214.682,533.877],[217.17,533.561],[217.32,534.747],[216.542,534.846],[216.617,535.439],[218.332,539.45],[217.446,532.486],[218.818,532.312],[219.321,536.265],[220.03,536.174],[219.508,532.071]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[232.912,530.367],[233.438,534.505],[234.996,534.307],[235.151,535.528],[233.593,535.726],[234.257,540.946],[232.792,541.132],[231.447,530.553]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[230.927,532.226],[231.078,533.411],[224.859,534.202],[224.708,533.016],[227.103,532.712],[226.922,531.293],[228.41,531.104],[228.591,532.523]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.188,-1.477],[1.546,-0.196],[0.188,1.476],[-1.558,0.198]],"o":[[1.546,-0.197],[0.187,1.476],[-1.557,0.198],[-0.188,-1.477],[0,0]],"v":[[228.073,534.396],[231.091,536.576],[228.714,539.441],[225.685,537.263],[228.073,534.396]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.103,-0.814],[-0.742,0.107],[0.105,0.825],[0.746,-0.083]],"o":[[-0.742,0.106],[0.105,0.825],[0.746,-0.082],[-0.103,-0.814],[0,0]],"v":[[228.225,535.593],[227.103,537.083],[228.559,538.22],[229.672,536.756],[228.225,535.593]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[243.451,529.358],[243.851,532.508],[237.934,533.26],[238.047,534.144],[244.208,533.36],[244.359,534.546],[236.698,535.52],[236.293,532.335],[242.187,531.586],[242.08,530.749],[236.151,531.502],[235.999,530.305]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[245.331,535.226],[245.482,536.412],[241.366,536.935],[241.758,540.016],[240.27,540.205],[239.878,537.124],[235.798,537.643],[235.647,536.457]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[254.314,527.646],[255.659,538.225],[254.241,538.405],[252.896,527.826]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0.889,-0.113],[0.303,2.383],[-1.395,0.177],[-0.53,-0.966],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.265,1.08],[-1.395,0.177],[-0.302,-2.371],[0.883,-0.112],[0,0],[0,0],[0,0]],"v":[[252.171,528.072],[253.435,538.011],[252.04,538.189],[251.623,534.91],[250.379,535.068],[248.608,536.936],[245.817,533.38],[247.633,529.263],[249.811,530.604],[251.055,530.446],[250.776,528.249]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.218,-1.615],[-0.614,0.09],[0.207,1.628],[0.604,-0.077]],"o":[[-0.616,0.078],[0.195,1.629],[0.618,-0.067],[-0.206,-1.616],[0,0]],"v":[[247.81,530.658],[247.166,533.209],[248.426,535.506],[249.107,532.962],[247.81,530.658]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.047,-0.372],[0.006,-0.325],[0,0],[0,0]],"o":[[0.088,0.32],[0.047,0.366],[0,0],[0,0],[0,0]],"v":[[250.253,531.753],[250.455,532.791],[250.517,533.834],[251.47,533.713],[251.206,531.632]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.119,0.935],[-2.301,0.293],[-0.229,-1.707],[0.727,-0.594],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.882,-0.385],[-0.218,-1.709],[2.291,-0.291],[0.11,0.914],[0,0],[0,0]],"v":[[266.147,534.399],[266.302,535.619],[256.618,536.85],[256.463,535.63],[258.625,535.355],[258.296,532.763],[256.706,530.756],[260.319,527.402],[264.669,529.743],[263.664,532.056],[263.996,534.672]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.135,-1.069],[-1.511,0.192],[0.12,1.037],[1.499,-0.191]],"o":[[-1.512,0.192],[0.132,1.035],[1.5,-0.19],[-0.147,-1.068],[0,0]],"v":[[260.469,528.576],[258.17,530.569],[260.894,531.924],[263.204,529.929],[260.469,528.576]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.424,-0.054],[0.382,0.034]],"o":[[0,0],[0,0],[-0.368,0.124],[-0.425,0.054],[0,0]],"v":[[260.09,535.169],[262.497,534.863],[262.235,532.805],[261.041,533.075],[259.829,533.111]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (41)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.063,0.542],[-0.546,0.07],[-0.075,-0.529],[0.531,-0.079]],"o":[[-0.541,0.074],[-0.08,-0.533],[0.531,-0.06],[0.062,0.533],[0,0]],"v":[[268.312,535.635],[267.212,534.783],[268.065,533.694],[269.153,534.536],[268.312,535.635]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.173,0.18,0.192]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[205.681,559.939]},"o":{"a":0,"k":100},"p":{"a":0,"k":[3.449,0.228]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Layer 2 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 (2) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.147,-1.159],[0,0],[0,0],[0.241,-2.924],[-0.922,-0.796],[0,0],[-2.9,-0.441],[-0.854,1.025],[0,0],[-0.395,2.906],[0.172,0.539],[-0.412,-3.237],[0,0],[0.869,-0.11],[0,0],[0.176,0.079],[0,0],[0.31,-0.277],[0,0],[0.213,-0.027],[0,0],[0.111,0.869],[0,0],[-0.139,0.704],[0,0],[0.772,1.342],[0.087,0.678],[0,0],[-1.159,0.147]],"o":[[1.159,-0.148],[0,0],[0,0],[-2.411,-1.671],[-0.1,1.214],[0,0],[-1.832,2.291],[1.319,0.201],[0,0],[2.319,1.795],[0.076,-0.561],[3.262,-0.091],[0,0],[0.11,0.869],[0,0],[-0.191,0.024],[0,0],[-0.381,-0.168],[0,0],[-0.16,0.144],[0,0],[-0.869,0.11],[0,0],[-0.09,-0.712],[0,0],[0.301,-1.519],[-0.34,-0.593],[0,0],[-0.147,-1.159],[0,0]],"v":[[81.133,562.187],[83.498,564.018],[84.157,569.2],[83.998,569.084],[78.029,571.903],[79.338,575.102],[79.49,575.226],[81.893,581.372],[85.393,580.044],[85.516,579.891],[91.623,577.391],[91.478,575.721],[97.951,581.265],[98.164,582.943],[96.79,584.716],[84.397,586.292],[83.836,586.209],[82.369,585.559],[81.234,585.738],[80.238,586.631],[79.665,586.893],[75.807,587.384],[74.034,586.01],[73.104,578.692],[73.177,576.554],[73.312,575.871],[72.582,571.434],[71.936,569.508],[71.433,565.552],[73.265,563.187]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.633,-0.457],[0.791,0.763],[0.042,0.322],[-0.783,0.1],[-0.026,0.001]],"o":[[0.344,0.701],[-0.265,1.067],[-0.233,-0.225],[-0.099,-0.783],[0.025,-0.003],[0,0]],"v":[[84.932,573.276],[86.42,575.04],[84.043,575.724],[83.618,574.879],[84.855,573.281],[84.932,573.276]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.192,0.686,0.537]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-4.299],[0,0],[4.299,0],[0,0],[0,4.299],[0,0],[-4.299,0]],"o":[[0,0],[4.299,0],[0,0],[0,4.299],[0,0],[-4.299,0],[0,0],[0,-4.299],[0,0]],"v":[[72.423,558.399],[92.855,558.399],[100.639,566.183],[100.639,586.615],[92.855,594.399],[72.423,594.399],[64.639,586.615],[64.639,566.183],[72.423,558.399]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[64.639,558.399]},"o":{"a":0,"k":100},"p":{"a":0,"k":[64.639,558.399]},"r":{"a":0,"k":-7},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[84.698,574.071]},"o":{"a":0,"k":100},"p":{"a":0,"k":[-117.534,14.36]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Layer 3 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-8.56],[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0]],"o":[[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0],[0,0],[0,-8.56],[0,0]],"v":[[61.059,539.151],[336.059,539.151],[351.559,554.651],[351.559,602.651],[336.059,618.151],[61.059,618.151],[45.559,602.651],[45.559,554.651],[61.059,539.151]]}}},{"ty":"st","hd":false,"bm":0,"c":{"a":0,"k":[0.886,0.894,0.906]},"lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":1}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[45.56,539.151]},"o":{"a":0,"k":100},"p":{"a":0,"k":[45.56,539.151]},"r":{"a":0,"k":-7},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-8.56],[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0]],"o":[[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0],[0,0],[0,-8.56],[0,0]],"v":[[61.059,539.151],[336.059,539.151],[351.559,554.651],[351.559,602.651],[336.059,618.151],[61.059,618.151],[45.559,602.651],[45.559,554.651],[61.059,539.151]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[45.56,539.151]},"o":{"a":0,"k":100},"p":{"a":0,"k":[45.56,539.151]},"r":{"a":0,"k":-7},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[202.233,559.711]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]},{"ddd":0,"ind":11,"ty":4,"nm":"푸시3","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[197,45.5]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":12,"s":[0,0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":27,"s":[110,110],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":33,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Layer 4 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 (78) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-1.606,-0.539],[0,0],[0.457,1.031],[1.237,-0.434],[0,0],[-0.011,1.453],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,1.336],[0,0],[-1.189,-0.41],[-0.457,1.136],[0,0],[1.64,-0.562],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[113.055,378.383],[115.586,381.535],[115.023,382.402],[112.504,380.141],[109.902,382.602],[109.305,381.734],[111.941,378.371],[111.941,378.09],[109.633,378.09],[109.633,377.188],[115.316,377.188],[115.316,378.09],[113.055,378.09]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[117.637,376.496],[117.637,379.191],[119.16,379.191],[119.16,380.129],[117.637,380.129],[117.637,382.824],[116.523,382.824],[116.523,376.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[117.637,383.34],[117.637,386.996],[116.523,386.996],[116.523,384.242],[110.699,384.242],[110.699,383.34]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[129.332,381.98],[129.332,382.871],[119.758,382.871],[119.758,381.98]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[128.254,385.871],[128.254,386.773],[120.965,386.773],[120.965,383.727],[122.09,383.727],[122.09,385.871]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.312],[2.273,-0.012],[0,1.325],[-2.285,-0.012]],"o":[[2.273,-0.012],[0,1.325],[-2.285,-0.012],[0,-1.312],[0,0]],"v":[[124.539,376.848],[128.289,378.945],[124.539,381.078],[120.789,378.945],[124.539,376.848]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.012,-0.75],[-1.605,0],[0,0.774],[1.606,0]],"o":[[-1.605,0],[-0.012,0.774],[1.606,0],[0,-0.75],[0,0]],"v":[[124.539,377.738],[121.938,378.945],[124.539,380.164],[127.141,378.945],[124.539,377.738]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[142.633,381.535],[142.633,382.426],[133.059,382.426],[133.059,381.535]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.218],[2.262,0],[0,1.219],[-2.285,-0.012]],"o":[[2.262,-0.012],[0,1.219],[-2.285,0],[0,-1.219],[0,0]],"v":[[137.84,383.223],[141.461,385.109],[137.84,386.996],[134.195,385.109],[137.84,383.223]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-0.679],[-1.606,0],[0,0.657],[1.582,0]],"o":[[-1.606,0],[0,0.657],[1.582,0],[0,-0.679],[0,0]],"v":[[137.84,384.066],[135.32,385.109],[137.84,386.129],[140.348,385.109],[137.84,384.066]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.254],[2.297,0],[0,1.253],[-2.297,0.012]],"o":[[2.297,0.012],[0,1.253],[-2.297,0],[0,-1.253],[0,0]],"v":[[137.84,376.742],[141.59,378.77],[137.84,380.773],[134.09,378.77],[137.84,376.742]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.011,-0.727],[-1.617,0],[0,0.726],[1.605,0]],"o":[[-1.617,0],[-0.011,0.726],[1.605,0],[0,-0.727],[0,0]],"v":[[137.84,377.633],[135.238,378.77],[137.84,379.906],[140.441,378.77],[137.84,377.633]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[152.16,376.508],[152.16,384.465],[151.047,384.465],[151.047,383.457],[148.938,383.457],[148.938,382.672],[151.047,382.672],[151.047,376.508]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[152.418,385.871],[152.418,386.773],[144.836,386.773],[144.836,383.691],[145.938,383.691],[145.938,385.871]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.239,0.282],[0,0],[0.926,-0.059],[0,0],[0,0],[0,0],[0.95,0.009]],"o":[[1.945,-0.012],[0,0],[-0.896,0.147],[0,0],[0,0],[0,0],[-0.949,0.04],[0,0]],"v":[[143.383,381.301],[150.18,380.984],[150.25,381.781],[147.484,382.086],[147.484,384.137],[146.371,384.137],[146.371,382.145],[143.523,382.191]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.113],[1.536,0],[0,1.113],[-1.558,0]],"o":[[1.536,0],[0,1.113],[-1.558,0],[0,-1.113],[0,0]],"v":[[146.816,376.906],[149.418,378.758],[146.816,380.586],[144.203,378.758],[146.816,376.906]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.012,-0.633],[-0.937,0],[-0.011,0.621],[0.903,-0.011]],"o":[[-0.937,-0.011],[-0.012,0.621],[0.903,0],[-0.011,-0.633],[0,0]],"v":[[146.816,377.738],[145.258,378.758],[146.816,379.766],[148.363,378.758],[146.816,377.738]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.172],[2.367,0],[0,1.171],[-2.367,0]],"o":[[2.367,0],[0,1.172],[-2.367,0],[0,-1.171],[0,0]],"v":[[158.582,376.672],[162.332,378.477],[158.582,380.293],[154.832,378.477],[158.582,376.672]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.012,-0.622],[-1.676,0],[0,0.644],[1.676,0]],"o":[[-1.676,0],[-0.012,0.644],[1.676,0],[0,-0.622],[0,0]],"v":[[158.582,377.492],[155.992,378.477],[158.582,379.461],[161.184,378.477],[158.582,377.492]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[163.375,380.938],[163.375,381.828],[153.801,381.828],[153.801,380.938]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[162.168,382.637],[162.168,385.098],[156.051,385.098],[156.051,386.035],[162.461,386.035],[162.461,386.891],[154.961,386.891],[154.961,384.289],[161.066,384.289],[161.066,383.469],[154.949,383.469],[154.949,382.637]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[175.855,376.508],[175.855,384.242],[174.742,384.242],[174.742,380.598],[172.562,380.598],[172.562,379.672],[174.742,379.672],[174.742,376.508]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.011,-0.972],[0,0],[-0.234,1.775],[0,0],[0,0]],"o":[[-0.012,2.742],[0,0],[2.338,-0.756],[0,0],[0,0],[0,0]],"v":[[172.633,377.293],[167.723,383.07],[167.254,382.18],[171.414,378.219],[167.793,378.219],[167.793,377.293]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[176.125,385.871],[176.125,386.773],[169.094,386.773],[169.094,383.445],[170.219,383.445],[170.219,385.871]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-1.16,0.24],[0,0],[1.3,0],[0,0],[0,0]],"o":[[0,0],[1.079,-0.018],[0,0],[-1.372,0.281],[0,0],[0,0],[0,0]],"v":[[179.066,377.586],[179.066,383.422],[182.324,383.094],[182.477,384.043],[178.645,384.383],[177.953,384.383],[177.953,377.586]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[186.496,376.496],[186.496,386.996],[185.441,386.996],[185.441,376.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[184.246,376.73],[184.246,386.48],[183.191,386.48],[183.191,380.867],[180.895,380.867],[180.895,379.953],[183.191,379.953],[183.191,376.73]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[190.199,376.66],[190.199,377.574],[195.062,377.574],[195.062,376.66],[196.176,376.66],[196.176,380.141],[193.152,380.141],[193.152,381.055],[197.418,381.055],[197.418,381.945],[187.844,381.945],[187.844,381.055],[192.062,381.055],[192.062,380.141],[189.098,380.141],[189.098,376.66]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[190.199,379.297],[195.062,379.297],[195.062,378.395],[190.199,378.395]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[196.211,382.707],[196.211,385.156],[190.094,385.156],[190.094,386.035],[196.504,386.035],[196.504,386.891],[189.004,386.891],[189.004,384.359],[195.109,384.359],[195.109,383.539],[188.992,383.539],[188.992,382.707]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[206.559,376.496],[206.559,380.762],[208.082,380.762],[208.082,381.676],[206.559,381.676],[206.559,386.996],[205.445,386.996],[205.445,376.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.898,-2.027],[0,0],[-0.111,2.104],[0,0],[0,0]],"o":[[0,2.625],[0,0],[1.535,-1.594],[0,0],[0,0],[0,0]],"v":[[201.379,377.621],[199,384.664],[198.121,384.043],[200.324,378.535],[198.496,378.535],[198.496,377.621]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.933,-2.285],[0,0],[-0.082,2.244],[0,0],[0,0]],"o":[[0,2.66],[0,0],[1.559,-1.822],[0,0],[0,0],[0,0]],"v":[[204.273,377.621],[202.012,385.355],[201.121,384.746],[203.23,378.535],[201.719,378.535],[201.719,377.621]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.937],[-2.25,0],[0,-1.653],[0.844,-0.474],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.862,-0.475],[0,-1.653],[2.262,0],[0,0.925],[0,0],[0,0]],"v":[[218.195,384.758],[218.195,385.684],[208.586,385.684],[208.586,384.758],[210.883,384.758],[210.883,382.016],[209.5,379.848],[213.367,377.105],[217.246,379.848],[215.898,381.992],[215.898,384.758]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.137],[-1.652,0],[0,1.125],[1.641,0]],"o":[[-1.652,0],[0,1.125],[1.641,0],[0,-1.137],[0,0]],"v":[[213.367,377.996],[210.578,379.848],[213.367,381.711],[216.168,379.848],[213.367,377.996]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.474,0.005],[0.422,0.099]],"o":[[0,0],[0,0],[-0.46,0.114],[-0.492,0],[0,0]],"v":[[211.984,384.758],[214.773,384.758],[214.773,382.414],[213.367,382.578],[211.984,382.426]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.774,0.481],[0,0.622],[0.704,0],[0.058,-0.867],[0,0],[-1.394,0],[0,-1.336],[0.75,-0.457],[0.023,-0.949],[0,0],[0,0]],"o":[[0.011,-1.535],[0.492,-0.305],[0,-0.738],[-0.632,0],[0,0],[0.047,-1.488],[1.524,0],[0,0.938],[-0.703,0.422],[0,0],[0,0],[0,0]],"v":[[220.68,383.48],[221.922,380.996],[222.789,379.648],[221.523,378.453],[220.223,379.707],[218.957,379.707],[221.523,377.398],[224.066,379.648],[222.871,381.676],[221.875,383.48],[221.875,383.551],[220.68,383.551]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.012,0.457],[-0.457,0],[0,-0.457],[0.458,-0.004]],"o":[[-0.457,0],[-0.012,-0.457],[0.446,0],[-0.004,0.458],[0,0]],"v":[[221.324,386.082],[220.492,385.25],[221.324,384.418],[222.156,385.25],[221.324,386.082]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[117.637,394.496],[117.637,396.688],[119.16,396.688],[119.16,397.613],[117.637,397.613],[117.637,399.805],[116.523,399.805],[116.523,394.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[114.707,395.059],[114.707,399.312],[109.797,399.312],[109.797,395.059]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[110.887,395.949],[110.887,398.422],[113.617,398.422],[113.617,395.949]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[117.637,400.285],[117.637,402.945],[111.965,402.945],[111.965,403.977],[118,403.977],[118,404.867],[110.875,404.867],[110.875,402.113],[116.535,402.113],[116.535,401.152],[110.852,401.152],[110.852,400.285]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[130.938,394.508],[130.938,397.883],[132.461,397.883],[132.461,398.809],[130.938,398.809],[130.938,402.359],[129.824,402.359],[129.824,394.508]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[128.957,395.727],[128.957,396.629],[122.699,396.629],[122.699,395.727],[125.277,395.727],[125.277,394.496],[126.391,394.496],[126.391,395.727]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.195],[1.512,0],[0,1.196],[-1.523,0]],"o":[[1.512,0],[0,1.196],[-1.523,0],[0,-1.195],[0,0]],"v":[[125.828,397.133],[128.371,399.113],[125.828,401.082],[123.273,399.113],[125.828,397.133]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.012,-0.691],[-0.89,0],[-0.012,0.68],[0.891,0]],"o":[[-0.89,0],[-0.012,0.68],[0.891,0],[-0.012,-0.691],[0,0]],"v":[[125.828,397.988],[124.352,399.113],[125.828,400.215],[127.328,399.113],[125.828,397.988]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[131.383,403.871],[131.383,404.773],[124.281,404.773],[124.281,401.738],[125.395,401.738],[125.395,403.871]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[138.367,395.539],[138.367,402.359],[133.457,402.359],[133.457,395.539]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[134.547,396.418],[134.547,401.457],[137.266,401.457],[137.266,396.418]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[141.238,394.496],[141.238,398.609],[142.926,398.609],[142.926,399.547],[141.238,399.547],[141.238,404.996],[140.125,404.996],[140.125,394.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[152.125,394.496],[152.125,405.02],[151.012,405.02],[151.012,394.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-1.483,0.27],[0,0],[2.18,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.992,-0.006],[0,0],[-1.57,0.281],[0,0],[0,0],[0,0]],"v":[[149.125,395.469],[149.125,396.395],[145.223,396.395],[145.223,401.492],[149.969,401.164],[150.086,402.09],[144.965,402.441],[144.098,402.441],[144.098,395.469]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[161.98,394.496],[161.98,398.68],[163.609,398.68],[163.609,399.605],[161.98,399.605],[161.98,404.984],[160.867,404.984],[160.867,394.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.457,-1.711],[0,0],[-0.229,2.45],[0,0],[0,0]],"o":[[-0.011,3.035],[0,0],[2.631,-1.313],[0,0],[0,0],[0,0]],"v":[[159.238,395.598],[154.434,403.051],[153.812,402.184],[158.102,396.523],[154.34,396.523],[154.34,395.598]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.293,-1.547],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.041,0.51],[0,0],[0,0],[0,0],[0,0.369],[0,0],[0,0],[0,0]],"o":[[0,0],[0,1.014],[0,0],[0,0],[0,0],[0,0],[0,0],[0.129,-0.609],[0,0],[0,0],[0,0],[0.012,-0.422],[0,0],[0,0],[0,0],[0,0]],"v":[[175.492,395.023],[175.492,395.949],[175.199,399.617],[176.699,399.617],[176.699,400.52],[167.102,400.52],[167.102,399.617],[174.074,399.617],[174.32,397.953],[168.18,398.234],[168.039,397.309],[174.379,397.133],[174.391,395.949],[174.391,395.938],[168.309,395.938],[168.309,395.023]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[175.703,403.871],[175.703,404.773],[168.285,404.773],[168.285,401.48],[169.398,401.48],[169.398,403.871]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.301],[1.582,0.012],[0,1.289],[-1.582,0]],"o":[[1.582,0],[0,1.289],[-1.582,0.012],[0,-1.301],[0,0]],"v":[[183.848,394.977],[186.578,397.156],[183.848,399.324],[181.141,397.156],[183.848,394.977]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.012,-0.773],[-0.95,0.012],[0,0.762],[0.972,0]],"o":[[-0.95,0],[-0.012,0.762],[0.972,0.012],[0,-0.773],[0,0]],"v":[[183.848,395.879],[182.219,397.156],[183.848,398.41],[185.512,397.156],[183.848,395.879]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[189.133,394.508],[189.133,404.996],[188.031,404.996],[188.031,394.508]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-2.297,0.34],[0,0],[0.979,-0.066],[0,0],[0,0],[0,0],[0.832,-0.006]],"o":[[1.933,0],[0,0],[-0.965,0.176],[0,0],[0,0],[0,0],[-1.019,0.047],[0,0]],"v":[[180.391,400.145],[187.305,399.758],[187.387,400.59],[184.469,400.953],[184.469,404.668],[183.355,404.668],[183.355,401.012],[180.543,401.07]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[200.383,402.805],[200.383,403.742],[190.773,403.742],[190.773,402.805],[195.004,402.805],[195.004,400.965],[191.945,400.965],[191.945,397.625],[198.109,397.625],[198.109,396.148],[191.922,396.148],[191.922,395.234],[199.211,395.234],[199.211,398.516],[193.047,398.516],[193.047,400.051],[199.457,400.051],[199.457,400.965],[196.105,400.965],[196.105,402.805]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[209.324,394.496],[209.324,398.68],[210.953,398.68],[210.953,399.605],[209.324,399.605],[209.324,404.984],[208.211,404.984],[208.211,394.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.457,-1.711],[0,0],[-0.228,2.45],[0,0],[0,0]],"o":[[-0.012,3.035],[0,0],[2.631,-1.313],[0,0],[0,0],[0,0]],"v":[[206.582,395.598],[201.777,403.051],[201.156,402.184],[205.445,396.523],[201.684,396.523],[201.684,395.598]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-0.923,0.099],[0,0],[1.992,0],[0,0],[-1.014,0.035],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0.928,-0.042],[0,0],[-2.226,0.34],[0,0],[0.902,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[220.562,397.156],[220.562,398.023],[218.535,398.023],[218.535,398.961],[221.312,398.75],[221.359,399.512],[214.645,399.91],[214.504,399.043],[217.41,398.996],[217.41,398.023],[215.453,398.023],[215.453,394.941],[220.445,394.941],[220.445,395.785],[216.602,395.785],[216.602,397.156]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[223.176,394.508],[223.176,400.109],[222.074,400.109],[222.074,394.508]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[223.176,400.555],[223.176,403.098],[217.246,403.098],[217.246,404],[223.504,404],[223.504,404.891],[216.156,404.891],[216.156,402.266],[222.074,402.266],[222.074,401.434],[216.133,401.434],[216.133,400.555]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-1.617,-0.691],[0,0],[0.486,1.406],[1.218,-0.597],[0,0],[-0.012,1.805],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,1.758],[0,0],[-1.236,-0.545],[-0.487,1.5],[0,0],[1.582,-0.738],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[228.684,397.59],[231.449,401.855],[230.84,402.723],[228.133,399.617],[225.438,402.992],[224.793,402.113],[227.559,397.59],[227.559,396.477],[225.156,396.477],[225.156,395.551],[231.074,395.551],[231.074,396.477],[228.684,396.477]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[233.512,394.496],[233.512,404.996],[232.398,404.996],[232.398,394.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[243.695,399.336],[243.695,400.227],[240.52,400.227],[240.52,402.793],[244.797,402.793],[244.797,403.707],[235.188,403.707],[235.188,402.793],[239.418,402.793],[239.418,400.227],[236.383,400.227],[236.383,395.305],[243.602,395.305],[243.602,396.207],[237.496,396.207],[237.496,399.336]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[258.062,398.984],[258.062,399.887],[248.488,399.887],[248.488,398.984],[252.707,398.984],[252.707,398.07],[249.719,398.07],[249.719,394.836],[256.832,394.836],[256.832,398.07],[253.797,398.07],[253.797,398.984]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[250.809,395.715],[250.809,397.191],[255.719,397.191],[255.719,395.715]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[256.855,400.648],[256.855,403.109],[250.738,403.109],[250.738,404.035],[257.148,404.035],[257.148,404.891],[249.648,404.891],[249.648,402.301],[255.754,402.301],[255.754,401.504],[249.637,401.504],[249.637,400.648]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[267.039,394.496],[267.039,398.598],[268.727,398.598],[268.727,399.535],[267.039,399.535],[267.039,405.02],[265.938,405.02],[265.938,394.496]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-1.535,0.281],[0,0],[1.969,-0.012],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.804,-0.006],[0,0],[-1.641,0.305],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[264.074,395.445],[264.074,399.301],[260.395,399.301],[260.395,401.574],[265.07,401.223],[265.176,402.125],[260.148,402.512],[259.293,402.512],[259.293,398.398],[262.973,398.398],[262.973,396.348],[259.27,396.348],[259.27,395.445]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.937],[-2.25,0],[0,-1.653],[0.844,-0.474],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.861,-0.475],[0,-1.653],[2.261,0],[0,0.925],[0,0],[0,0]],"v":[[278.84,402.758],[278.84,403.684],[269.23,403.684],[269.23,402.758],[271.527,402.758],[271.527,400.016],[270.145,397.848],[274.012,395.105],[277.891,397.848],[276.543,399.992],[276.543,402.758]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.137],[-1.653,0],[0,1.125],[1.64,0]],"o":[[-1.653,0],[0,1.125],[1.64,0],[0,-1.137],[0,0]],"v":[[274.012,395.996],[271.223,397.848],[274.012,399.711],[276.812,397.848],[274.012,395.996]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.474,0.005],[0.422,0.099]],"o":[[0,0],[0,0],[-0.46,0.114],[-0.492,0],[0,0]],"v":[[272.629,402.758],[275.418,402.758],[275.418,400.414],[274.012,400.578],[272.629,400.426]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (78)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.012,0.457],[-0.457,0],[0,-0.457],[0.457,-0.006]],"o":[[-0.457,0],[-0.012,-0.457],[0.445,0],[-0.006,0.457],[0,0]],"v":[[280.797,404.082],[279.965,403.25],[280.797,402.418],[281.629,403.25],[280.797,404.082]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.173,0.18,0.192]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 (32) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.011,-1.758],[1.916,-0.217],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,1.599],[-2.297,0]],"o":[[2.297,0],[-0.011,1.605],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.91,-0.205],[0,-1.758],[0,0]],"v":[[114.18,356.965],[118.199,359.883],[114.918,362.789],[114.918,364.605],[119.078,364.605],[119.078,365.836],[109.316,365.836],[109.316,364.605],[113.43,364.605],[113.43,362.777],[110.172,359.883],[114.18,356.965]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.067],[-1.489,0],[-0.012,1.125],[1.5,0]],"o":[[-1.489,0],[0,1.125],[1.5,0],[-0.012,-1.067],[0,0]],"v":[[114.18,358.16],[111.648,359.883],[114.18,361.641],[116.723,359.883],[114.18,358.16]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[128.312,358.57],[128.312,359.754],[120.895,359.754],[120.895,356.543],[122.383,356.543],[122.383,358.57]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[129.438,360.469],[129.438,361.652],[119.676,361.652],[119.676,360.469]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[128.266,362.297],[128.266,365.133],[122.312,365.133],[122.312,365.812],[128.594,365.812],[128.594,366.961],[120.812,366.961],[120.812,364.055],[126.777,364.055],[126.777,363.445],[120.789,363.445],[120.789,362.297]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[141.285,356.414],[141.285,358.652],[142.727,358.652],[142.727,359.883],[141.285,359.883],[141.285,361.734],[139.785,361.734],[139.785,356.414]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[138.262,357.082],[138.262,361.523],[133.141,361.523],[133.141,357.082]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[134.617,358.242],[134.617,360.352],[136.785,360.352],[136.785,358.242]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-0.551,0.176],[0,0],[1.02,0],[0,0],[0,0]],"o":[[0,0],[0.578,-0.027],[0,0],[-0.902,0.328],[0,0],[0,0],[0,0]],"v":[[135.238,362.625],[135.238,365.578],[136.938,365.273],[137.148,366.434],[134.371,366.797],[133.785,366.797],[133.785,362.625]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[142.152,362.73],[142.152,363.809],[136.785,363.809],[136.785,362.73],[138.754,362.73],[138.754,361.957],[140.207,361.957],[140.207,362.73]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-0.926],[1.219,0],[-0.011,0.914],[-1.23,0]],"o":[[1.219,0],[0,0.914],[-1.23,0],[-0.011,-0.926],[0,0]],"v":[[139.457,364.078],[141.531,365.578],[139.457,367.066],[137.406,365.578],[139.457,364.078]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.011,-0.328],[-0.422,0],[0,0.328],[0.422,0]],"o":[[-0.422,0],[-0.011,0.328],[0.422,0],[0,-0.328],[0,0]],"v":[[139.457,365.086],[138.73,365.578],[139.457,366.07],[140.195,365.578],[139.457,365.086]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[152.125,356.414],[152.125,367.102],[150.613,367.102],[150.613,356.414]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-2.32],[1.605,0],[-0.012,2.344],[-1.641,0]],"o":[[1.605,0],[0,2.344],[-1.641,0],[-0.012,-2.32],[0,0]],"v":[[146.336,357.164],[149.137,360.961],[146.336,364.77],[143.512,360.961],[146.336,357.164]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.582],[-0.832,0],[0,1.594],[0.809,0]],"o":[[-0.832,0],[0,1.594],[0.809,0],[0,-1.582],[0,0]],"v":[[146.336,358.512],[144.953,360.961],[146.336,363.41],[147.695,360.961],[146.336,358.512]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[165.297,356.414],[165.297,367.078],[163.785,367.078],[163.785,356.414]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-0.451,0.052],[0,0],[1.957,-0.012],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0.468,-0.03],[0,0],[-2.274,0.375],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[162.637,357.398],[162.637,358.594],[161.688,358.594],[161.688,363.223],[163.07,363.094],[163.141,364.207],[156.449,364.629],[156.309,363.41],[157.539,363.398],[157.539,358.594],[156.602,358.594],[156.602,357.398]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[158.992,363.363],[160.234,363.316],[160.234,358.594],[158.992,358.594]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.293,-1.313],[0,0],[-0.018,0.714],[0,0],[0,0]],"o":[[0,0],[0,0.82],[0,0],[0.234,-1.072],[0,0],[0,0],[0,0]],"v":[[175.258,357.012],[175.258,357.762],[174.965,360.926],[173.477,360.773],[173.77,358.184],[167.816,358.184],[167.816,357.012]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[176.406,361.5],[176.406,362.707],[166.727,362.707],[166.727,361.5],[170.359,361.5],[170.359,359.496],[171.836,359.496],[171.836,361.5]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[175.492,365.695],[175.492,366.891],[167.852,366.891],[167.852,363.598],[169.352,363.598],[169.352,365.695]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[186.238,356.426],[186.238,362.988],[184.82,362.988],[184.82,360.363],[183.988,360.363],[183.988,362.871],[182.594,362.871],[182.594,356.566],[183.988,356.566],[183.988,359.156],[184.82,359.156],[184.82,356.426]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[182.254,357.434],[182.254,358.617],[177.016,358.617],[177.016,357.434],[178.902,357.434],[178.902,356.473],[180.391,356.473],[180.391,357.434]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.011,-1.113],[1.36,0],[0,1.09],[-1.336,0]],"o":[[1.36,0],[-0.011,1.09],[-1.336,0],[0,-1.113],[0,0]],"v":[[179.652,358.957],[181.984,360.82],[179.652,362.684],[177.344,360.82],[179.652,358.957]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-0.527],[-0.586,0],[-0.012,0.504],[0.586,0]],"o":[[-0.586,0],[0,0.504],[0.586,0],[-0.012,-0.527],[0,0]],"v":[[179.652,360.023],[178.68,360.82],[179.652,361.605],[180.637,360.82],[179.652,360.023]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.85,-0.527],[-0.012,0.709],[0,0],[0,0],[0,0],[-1.418,-0.363],[0,0],[0.363,0.791],[0.967,-0.352],[0.334,0.786],[0.979,-0.316],[0,0],[0,0.938],[0,0],[0,0]],"o":[[-0.012,0.779],[0.843,-0.556],[0,0],[0,0],[0,0],[-0.011,0.996],[0,0],[-1.031,-0.31],[-0.352,0.785],[-0.996,-0.346],[-0.393,0.75],[0,0],[1.383,-0.398],[0,0],[0,0],[0,0]],"v":[[181.164,363.539],[182.348,365.648],[183.578,363.539],[183.578,363.316],[185.066,363.316],[185.066,363.539],[187.07,365.836],[186.379,366.949],[184.305,365.227],[182.371,367.055],[180.414,365.273],[178.375,366.949],[177.672,365.836],[179.676,363.539],[179.676,363.316],[181.164,363.316]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[196.668,356.414],[196.668,367.078],[195.25,367.078],[195.25,361.723],[194.219,361.723],[194.219,366.562],[192.848,366.562],[192.848,356.59],[194.219,356.59],[194.219,360.527],[195.25,360.527],[195.25,356.414]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-1.032,0.188],[0,0],[1.407,-0.012],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[1.031,-0.005],[0,0],[-1.301,0.246],[0,0],[0,0],[0,0]],"v":[[191.723,357.645],[191.723,358.852],[189.25,358.852],[189.25,363.398],[192.227,363.152],[192.332,364.371],[188.488,364.664],[187.75,364.664],[187.75,357.645]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.943],[-2.321,0],[-0.011,-1.723],[0.797,-0.498],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.826,-0.492],[0,-1.723],[2.308,0],[-0.006,0.92],[0,0],[0,0]],"v":[[207.578,364.605],[207.578,365.836],[197.816,365.836],[197.816,364.605],[199.996,364.605],[199.996,361.992],[198.672,359.801],[202.68,356.93],[206.699,359.801],[205.41,361.969],[205.41,364.605]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,-1.078],[-1.524,0],[-0.012,1.043],[1.511,0]],"o":[[-1.524,0],[0,1.043],[1.511,0],[-0.012,-1.078],[0,0]],"v":[[202.68,358.113],[200.148,359.801],[202.68,361.488],[205.223,359.801],[202.68,358.113]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.427,0],[0.375,0.082]],"o":[[0,0],[0,0],[-0.38,0.076],[-0.428,0],[0,0]],"v":[[201.473,364.605],[203.898,364.605],[203.898,362.531],[202.68,362.648],[201.473,362.531]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (32)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.005,0.546],[-0.55,0],[0,-0.539],[0.536,-0.012]],"o":[[-0.546,0.005],[-0.012,-0.539],[0.516,0],[-0.006,0.537],[0,0]],"v":[[209.57,366.105],[208.586,365.121],[209.57,364.148],[210.543,365.121],[209.57,366.105]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.173,0.18,0.192]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[195.467,380.717]},"o":{"a":0,"k":100},"p":{"a":0,"k":[-1.033,-0.283]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Layer 5 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 (2) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,-1.168],[0,0],[0,0],[0.623,-2.866],[-0.828,-0.912],[0,0],[-2.822,-0.798],[-0.974,0.904],[0,0],[-0.758,2.833],[0.102,0.556],[-0.001,-3.263],[0,0],[0.876,0],[0,0],[0.165,0.099],[0,0],[0.343,-0.236],[0,0],[0.215,0],[0,0],[0,0.876],[0,0],[-0.227,0.681],[0,0],[0.595,1.429],[0,0.684],[0,0],[-1.168,0]],"o":[[1.168,0],[0,0],[0,0],[-2.171,-1.972],[-0.262,1.204],[0,0],[-2.102,2.045],[1.279,0.361],[0,0],[2.075,2.073],[0.146,-0.546],[3.247,0.323],[0,0],[0,0.876],[0,0],[-0.193,0],[0,0],[-0.356,-0.215],[0,0],[-0.177,0.122],[0,0],[-0.876,0],[0,0],[0,-0.718],[0,0],[0.489,-1.469],[-0.262,-0.631],[0,0],[0,-1.168],[0,0]],"v":[[75.885,368.838],[78,370.953],[78,376.177],[77.857,376.042],[71.572,378.053],[72.475,381.424],[72.61,381.566],[74.231,387.963],[77.858,387.09],[78,386.954],[84.374,385.243],[84.44,383.569],[90.162,389.885],[90.162,391.576],[88.575,393.162],[76.083,393.162],[75.536,393.01],[74.163,392.18],[73.015,392.214],[71.914,392.974],[71.312,393.162],[67.424,393.162],[65.838,391.576],[65.838,384.199],[66.181,382.087],[66.401,381.427],[66.236,376.932],[65.838,374.94],[65.838,370.953],[67.953,368.838]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.564,-0.528],[0.693,0.853],[-0.001,0.329],[-0.789,0]],"o":[[0.255,0.747],[-0.392,1.026],[-0.208,-0.256],[0,-0.789],[0,0]],"v":[[78.255,380.317],[79.509,382.256],[77.068,382.646],[76.749,381.742],[78.178,380.313]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.192,0.686,0.537]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-4.299],[0,0],[4.299,0],[0,0],[0,4.299],[0,0],[-4.299,0]],"o":[[0,0],[4.299,0],[0,0],[0,4.299],[0,0],[-4.299,0],[0,0],[0,-4.299],[0,0]],"v":[[67.784,363],[88.216,363],[96,370.784],[96,391.216],[88.216,399],[67.784,399],[60,391.216],[60,370.784],[67.784,363]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[78,381]},"o":{"a":0,"k":100},"p":{"a":0,"k":[-118.5,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Layer 6 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-8.56],[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0]],"o":[[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0],[0,0],[0,-8.56],[0,0]],"v":[[59,341.5],[334,341.5],[349.5,357],[349.5,405],[334,420.5],[59,420.5],[43.5,405],[43.5,357],[59,341.5]]}}},{"ty":"st","hd":false,"bm":0,"c":{"a":0,"k":[0.886,0.894,0.906]},"lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":1}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-8.56],[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0]],"o":[[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0],[0,0],[0,-8.56],[0,0]],"v":[[59,341.5],[334,341.5],[349.5,357],[349.5,405],[334,420.5],[59,420.5],[43.5,405],[43.5,357],[59,341.5]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[196.5,381]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]},{"ddd":0,"ind":21,"ty":4,"nm":"푸시2","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[200.725,133.328]},"r":{"a":0,"k":0},"s":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":6,"s":[0,0],"i":{"x":0.88,"y":0.77},"o":{"x":0.5,"y":0}},{"t":21,"s":[110,110],"i":{"x":0.75,"y":0.75},"o":{"x":0.25,"y":0.25}},{"t":27,"s":[100,100],"i":{"x":0,"y":0},"o":{"x":1,"y":1}}]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Layer 7 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 (92) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[122.769,462.078],[122.673,462.951],[113.133,461.902],[113.229,461.028]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[121.362,463.727],[121.013,466.895],[119.883,466.771],[120.134,464.488],[114.019,463.815],[114.116,462.929]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[121.865,460.222],[121.772,461.072],[114.573,460.28],[115.05,455.947],[122.178,456.731],[122.082,457.605],[116.072,456.943],[115.978,457.794],[121.721,458.426],[121.629,459.264],[115.886,458.632],[115.785,459.553]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[132.855,457.635],[132.257,463.063],[131.162,462.942],[131.3,461.696],[129.016,461.445],[128.922,462.307],[124.111,461.777],[124.613,457.211],[125.72,457.333],[125.565,458.742],[128.174,459.03],[128.329,457.62],[129.424,457.741],[129.319,458.696],[131.602,458.947],[131.76,457.514]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[132.206,463.529],[131.924,466.091],[126.228,465.465],[126.122,466.431],[132.19,467.099],[132.093,467.985],[124.918,467.195],[125.212,464.516],[130.92,465.144],[131.016,464.27],[125.285,463.64],[125.38,462.778]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[125.315,461.014],[127.924,461.301],[128.08,459.88],[125.471,459.593]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[129.11,460.594],[131.393,460.846],[131.508,459.797],[129.225,459.546]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[142.673,458.727],[142.304,462.082],[143.818,462.248],[143.717,463.168],[142.203,463.002],[141.814,466.531],[140.708,466.41],[141.566,458.605]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[140.571,459.722],[140.472,460.619],[134.252,459.934],[134.351,459.037],[136.913,459.319],[137.048,458.096],[138.155,458.218],[138.02,459.441]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.131,-1.188],[1.503,0.165],[-0.131,1.189],[-1.514,-0.166]],"o":[[1.503,0.166],[-0.13,1.188],[-1.514,-0.167],[0.131,-1.188],[0,0]],"v":[[137.307,460.777],[139.618,463.024],[136.875,464.703],[134.551,462.466],[137.307,460.777]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.064,-0.688],[-0.885,-0.098],[-0.086,0.674],[0.885,0.097]],"o":[[-0.886,-0.098],[-0.086,0.675],[0.885,0.098],[0.064,-0.689],[0,0]],"v":[[137.214,461.628],[135.623,462.584],[136.97,463.841],[138.582,462.91],[137.214,461.628]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[142.092,468.083],[141.993,468.98],[134.934,468.203],[135.266,465.186],[136.372,465.308],[136.139,467.428]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.138,-1.364],[1.573,0.173],[-0.151,1.375],[-1.585,-0.163]],"o":[[1.571,0.184],[-0.163,1.373],[-1.584,-0.175],[0.15,-1.362],[0,0]],"v":[[150.615,459.943],[153.095,462.585],[150.101,464.614],[147.608,461.981],[150.615,459.943]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.082,-0.852],[-0.967,-0.107],[-0.095,0.862],[0.957,0.094]],"o":[[-0.965,-0.118],[-0.107,0.86],[0.955,0.105],[0.094,-0.85],[0,0]],"v":[[150.512,460.874],[148.692,462.101],[150.2,463.717],[152.023,462.467],[150.512,460.874]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[156.35,460.22],[155.765,465.532],[154.658,465.41],[155.243,460.098]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[155.713,466.009],[155.423,468.642],[149.669,468.009],[149.558,469.01],[155.662,469.682],[155.565,470.567],[148.389,469.778],[148.688,467.064],[154.419,467.694],[154.52,466.774],[148.754,466.14],[148.852,465.254]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[166.647,461.353],[165.496,471.813],[164.389,471.692],[165.54,461.231]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.246,-2.236],[1.549,0.171],[-0.247,2.248],[-1.572,-0.173]],"o":[[1.55,0.171],[-0.248,2.248],[-1.572,-0.173],[0.246,-2.237],[0,0]],"v":[[160.981,461.519],[163.27,465.473],[160.175,468.846],[157.876,464.88],[160.981,461.519]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.181,-1.643],[-0.967,-0.106],[-0.182,1.654],[0.956,0.105]],"o":[[-0.966,-0.107],[-0.182,1.654],[0.955,0.105],[0.181,-1.642],[0,0]],"v":[[160.872,462.51],[158.948,464.998],[160.284,467.856],[162.198,465.355],[160.872,462.51]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[172.777,468.217],[172.643,469.428],[174.274,469.608],[174.407,468.396],[175.432,468.509],[174.971,472.703],[171.278,472.296],[171.74,468.103]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[172.41,471.548],[174.041,471.728],[174.182,470.447],[172.551,470.267]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-1.243,-0.597],[0,0],[0.227,0.904],[0.938,-0.274],[0,0],[-0.114,1.037],[0,0],[0,0]],"o":[[-0.12,1.095],[0,0],[-0.833,-0.418],[-0.439,0.777],[0,0],[1.314,-0.374],[0,0],[0,0],[0,0]],"v":[[178.375,469.623],[179.982,472.488],[179.319,473.264],[177.649,471.182],[175.579,472.852],[175.113,471.952],[177.28,469.502],[177.374,468.652],[178.469,468.773]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.105,-1.19],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.386,0.153],[-0.159,1.445],[-1.596,-0.175]],"o":[[1.374,0.151],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.359,1.175],[-1.596,-0.175],[0.156,-1.421],[0,0]],"v":[[174.065,462.617],[176.518,464.856],[178.557,465.08],[178.819,462.692],[179.926,462.814],[179.317,468.347],[178.211,468.225],[178.457,465.989],[176.43,465.766],[173.533,467.451],[171.062,464.727],[174.065,462.617]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.097,-0.885],[-0.988,-0.12],[-0.098,0.897],[0.967,0.107]],"o":[[-0.99,-0.109],[-0.099,0.897],[0.969,0.095],[0.098,-0.885],[0,0]],"v":[[173.963,463.537],[172.122,464.844],[173.631,466.554],[175.453,465.21],[173.963,463.537]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.044,-1.952],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.45,0.159],[-0.26,2.246],[-1.561,-0.172]],"o":[[1.415,0.156],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.346,2.019],[-1.561,-0.172],[0.234,-2.238],[0,0]],"v":[[184.278,464.083],[186.554,467.505],[188.709,467.742],[189.14,463.828],[190.235,463.948],[189.084,474.409],[187.989,474.288],[188.611,468.639],[186.467,468.403],[183.472,471.41],[181.232,467.45],[184.278,464.083]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.181,-1.642],[-0.944,-0.104],[-0.182,1.654],[0.944,0.104]],"o":[[-0.943,-0.104],[-0.182,1.654],[0.943,0.104],[0.18,-1.642],[0,0]],"v":[[184.169,465.073],[182.28,467.565],[183.581,470.42],[185.472,467.916],[184.169,465.073]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[199.77,469.867],[199.672,470.752],[196.516,470.405],[196.235,472.956],[200.487,473.423],[200.387,474.332],[190.835,473.281],[190.935,472.372],[195.14,472.835],[195.421,470.284],[192.404,469.952],[192.942,465.06],[200.117,465.849],[200.019,466.746],[193.95,466.079],[193.608,469.189]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.37,-1.221],[0,0],[-0.075,0.681],[0,0],[0,0]],"o":[[0,0],[-0.094,0.744],[0,0],[0.331,-1.083],[0,0],[0,0],[0,0]],"v":[[209.832,466.918],[209.757,467.606],[209.189,470.514],[208.164,470.295],[208.685,467.7],[205.319,467.33],[205.418,466.433]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-0.802,0.006],[0,0],[1.409,0.155],[0,0],[-0.637,-0.052],[0,0]],"o":[[0,0],[0.912,0.065],[0,0],[-1.734,0.116],[0,0],[0.489,0.054],[0,0],[0,0]],"v":[[207.346,469.05],[207.117,471.135],[209.758,471.237],[209.729,472.035],[204.379,471.8],[204.373,470.892],[206.088,471.057],[206.321,468.937]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[214.008,466.576],[213.139,474.474],[212.067,474.356],[212.479,470.617],[211.372,470.495],[210.992,473.955],[209.955,473.84],[210.774,466.397],[211.811,466.511],[211.473,469.575],[212.58,469.696],[212.936,466.458]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[213.252,475.913],[213.153,476.81],[205.663,475.986],[206.007,472.864],[207.137,472.988],[206.892,475.213]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[223.573,467.617],[223.319,469.923],[224.833,470.09],[224.732,471.01],[223.218,470.843],[222.982,472.987],[221.875,472.865],[222.466,467.495]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-0.688,0.148],[0,0],[0.781,0.086],[0,0],[0,0]],"o":[[0,0],[0.614,0.044],[0,0],[-1.001,0.208],[0,0],[0,0],[0,0]],"v":[[216.81,473.251],[216.481,476.244],[218.497,476.136],[218.564,477.028],[215.832,477.104],[215.296,477.046],[215.727,473.132]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[223.841,474.178],[223.751,474.993],[218.486,474.414],[218.576,473.598],[220.684,473.83],[220.781,472.957],[221.864,473.076],[221.768,473.95]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.095,-0.862],[1.143,0.114],[-0.106,0.849],[-1.154,-0.127]],"o":[[1.141,0.126],[-0.094,0.85],[-1.152,-0.139],[0.083,-0.864],[0,0]],"v":[[221.082,475.041],[222.894,476.679],[220.77,477.872],[218.957,476.246],[221.082,475.041]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.045,-0.408],[-0.559,-0.062],[-0.043,0.396],[0.548,0.061]],"o":[[-0.559,-0.061],[-0.044,0.396],[0.547,0.06],[0.045,-0.408],[0,0]],"v":[[220.998,475.798],[219.947,476.355],[220.855,477.103],[221.892,476.569],[220.998,475.798]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-1.521,-0.533],[0,0],[0.385,0.898],[1.33,-0.19],[0,0],[-0.132,1.2],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[-0.114,1.036],[0,0],[-1.186,-0.419],[-0.57,0.946],[0,0],[1.65,-0.207],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[218.807,469.144],[221.112,471.767],[220.552,472.566],[218.138,470.508],[215.207,472.285],[214.814,471.357],[217.712,469.023],[217.725,468.907],[215.453,468.657],[215.551,467.772],[217.822,468.022],[217.939,466.961],[219.045,467.083],[218.929,468.143],[221.188,468.392],[221.091,469.277],[218.82,469.027]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.234,-2.238],[1.561,0.171],[-0.259,2.247],[-1.561,-0.172]],"o":[[1.561,0.172],[-0.26,2.247],[-1.561,-0.172],[0.234,-2.238],[0,0]],"v":[[228.391,468.937],[230.668,472.889],[227.585,476.264],[225.321,472.301],[228.391,468.937]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.181,-1.643],[-0.956,-0.105],[-0.182,1.654],[0.967,0.106]],"o":[[-0.955,-0.105],[-0.182,1.654],[0.966,0.106],[0.18,-1.643],[0,0]],"v":[[228.282,469.927],[226.381,472.418],[227.694,475.274],[229.608,472.773],[228.282,469.927]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[233.812,468.743],[233.362,472.832],[235.039,473.017],[234.937,473.948],[233.259,473.764],[232.663,479.18],[231.557,479.059],[232.705,468.622]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.103,0.931],[-2.237,-0.246],[0.18,-1.643],[0.891,-0.379],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.804,-0.566],[0.181,-1.643],[2.248,0.247],[-0.102,0.92],[0,0],[0,0]],"v":[[244.638,478.246],[244.537,479.167],[234.985,478.116],[235.086,477.195],[237.369,477.447],[237.669,474.721],[236.532,472.415],[240.676,470.112],[244.232,473.262],[242.657,475.246],[242.355,477.995]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.124,-1.129],[-1.642,-0.181],[-0.123,1.118],[1.631,0.18]],"o":[[-1.642,-0.181],[-0.123,1.119],[1.631,0.179],[0.124,-1.13],[0,0]],"v":[[240.578,470.997],[237.604,472.532],[240.172,474.69],[243.16,473.144],[240.578,470.997]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.471,0.057],[0.439,0.153]],"o":[[0,0],[0,0],[-0.47,0.063],[-0.463,-0.048],[0,0]],"v":[[238.464,477.567],[241.237,477.872],[241.493,475.542],[240.077,475.552],[238.719,475.249]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.061,0.453],[-0.455,-0.05],[0.046,-0.455],[0.455,0.044]],"o":[[-0.455,-0.05],[0.039,-0.456],[0.454,0.054],[-0.056,0.453],[0,0]],"v":[[246.439,479.777],[245.702,478.859],[246.621,478.123],[247.357,479.041],[246.439,479.777]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0.867,0.096],[-0.169,1.538],[-1.574,-0.162],[-0.431,-0.637],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-0.56,0.534],[-1.573,-0.173],[0.17,-1.549],[0.861,0.1],[0,0],[0,0],[0,0]],"v":[[120.587,474.405],[119.741,482.093],[118.635,481.971],[118.933,479.257],[116.348,478.973],[114.124,479.683],[111.676,476.749],[114.706,474.395],[116.71,475.57],[119.308,475.856],[119.481,474.283]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[119.843,483.743],[119.744,484.64],[112.685,483.863],[113.05,480.544],[114.157,480.665],[113.89,483.088]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.109,-0.99],[-0.978,-0.108],[-0.109,0.99],[0.943,0.104]],"o":[[-0.979,-0.108],[-0.109,0.99],[0.944,0.103],[0.109,-0.991],[0,0]],"v":[[114.597,475.385],[112.736,476.866],[114.231,478.705],[116.067,477.233],[114.597,475.385]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0.032,-0.291],[0.102,-0.236],[0,0],[0,0]],"o":[[0.042,0.258],[-0.03,0.28],[0,0],[0,0],[0,0]],"v":[[117.101,476.521],[117.127,477.349],[116.924,478.128],[119.032,478.36],[119.209,476.753]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[130.85,475.534],[130.015,483.118],[128.909,482.996],[129.743,475.413]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[130.14,484.876],[130.041,485.773],[122.901,484.987],[123.274,481.598],[124.392,481.721],[124.118,484.214]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.167,-1.514],[1.573,0.173],[-0.169,1.538],[-1.573,-0.173]],"o":[[1.572,0.173],[-0.169,1.538],[-1.573,-0.173],[0.167,-1.514],[0,0]],"v":[[125.112,475.61],[127.599,478.501],[124.541,480.794],[122.043,477.89],[125.112,475.61]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.105,-0.955],[-0.979,-0.107],[-0.108,0.979],[0.955,0.105]],"o":[[-0.978,-0.107],[-0.107,0.979],[0.955,0.105],[0.105,-0.955],[0,0]],"v":[[125.005,476.577],[123.126,478.009],[124.648,479.827],[126.516,478.382],[125.005,476.577]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0.367,-1.328],[0,0],[-0.108,0.872],[0,0],[0,0]],"o":[[0,0],[-0.134,1.371],[0,0],[0.446,-1.643],[0,0],[0,0],[0,0]],"v":[[138.195,477.463],[138.124,478.103],[137.371,482.159],[136.285,481.957],[137.001,478.239],[132.761,477.773],[132.86,476.876]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[-1.105,0.014],[0,0],[1.851,0.216],[0,0],[-0.766,-0.061],[0,0]],"o":[[0,0],[1.102,0.091],[0,0],[-2.217,0.11],[0,0],[0.653,0.066],[0,0],[0,0]],"v":[[135.187,480.15],[134.844,483.272],[138.156,483.388],[138.123,484.222],[131.627,483.896],[131.598,482.985],[133.745,483.186],[134.092,480.029]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[140.636,476.599],[140.161,480.909],[141.757,481.085],[141.653,482.029],[140.058,481.853],[139.487,487.036],[138.369,486.913],[139.517,476.476]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[153.927,478.062],[153.629,480.764],[155.143,480.931],[155.04,481.875],[153.525,481.708],[153.234,484.352],[152.128,484.23],[152.82,477.94]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[153.174,484.9],[152.792,488.371],[146.129,487.638],[146.511,484.166]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[147.498,485.159],[147.311,486.86],[151.796,487.353],[151.983,485.653]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[151.841,478.905],[151.744,479.791],[145.524,479.106],[145.621,478.221],[148.184,478.503],[148.309,477.361],[149.416,477.483],[149.29,478.625]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.123,-1.119],[1.504,0.154],[-0.124,1.13],[-1.526,-0.168]],"o":[[1.502,0.165],[-0.124,1.129],[-1.524,-0.18],[0.123,-1.118],[0,0]],"v":[[148.584,479.903],[150.906,482.045],[148.172,483.642],[145.839,481.487],[148.584,479.903]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.058,-0.63],[-0.886,-0.097],[-0.084,0.652],[0.887,0.086]],"o":[[-0.884,-0.109],[-0.083,0.651],[0.885,0.098],[0.057,-0.63],[0,0]],"v":[[148.49,480.753],[146.911,481.605],[148.265,482.803],[149.87,481.93],[148.49,480.753]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[1.681,-1.89],[0,0],[-0.298,1.959],[0,0],[0,0]],"o":[[-0.269,2.34],[0,0],[1.397,-1.497],[0,0],[0,0],[0,0]],"v":[[158.485,479.813],[155.978,486.422],[155.169,485.838],[157.43,480.617],[156.009,480.46],[156.109,479.552]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0.217,-0.954],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.929,-1.053],[0,0],[-0.268,2.01],[0,0],[0,0]],"o":[[-0.097,0.88],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.382,1.273],[0,0],[1.55,-1.662],[0,0],[0,0],[0,0]],"v":[[160.803,480.068],[160.366,482.861],[161.589,482.996],[162.004,479.222],[163.053,479.337],[161.99,488.994],[160.942,488.879],[161.49,483.893],[160.139,483.744],[158.25,487.309],[157.443,486.713],[159.748,480.872],[158.7,480.756],[158.799,479.848]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[165.062,479.287],[163.914,489.724],[162.854,489.608],[164.002,479.171]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.183,-1.665],[1.969,0.052],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.172,1.567],[-2.226,-0.233]],"o":[[2.235,0.257],[-0.173,1.567],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.922,-0.376],[0.183,-1.666],[0,0]],"v":[[173.939,480.901],[177.49,484.097],[173.878,486.494],[173.652,488.544],[177.904,489.012],[177.803,489.932],[168.251,488.881],[168.352,487.961],[172.557,488.424],[172.783,486.373],[169.79,483.25],[173.939,480.901]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.124,-1.13],[-1.606,-0.188],[-0.129,1.177],[1.621,0.167]],"o":[[-1.606,-0.188],[-0.13,1.176],[1.62,0.167],[0.124,-1.13],[0,0]],"v":[[173.839,481.809],[170.862,483.368],[173.424,485.583],[176.418,483.979],[173.839,481.809]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[187.725,484.186],[187.626,485.083],[180.463,484.295],[180.806,481.173],[181.889,481.292],[181.645,483.517]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[188.643,486.126],[188.546,487.011],[178.994,485.96],[179.092,485.075]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[187.254,487.718],[186.973,490.269],[180.916,489.603],[180.81,490.569],[187.228,491.276],[187.132,492.149],[179.607,491.321],[179.899,488.666],[185.968,489.333],[186.064,488.46],[179.972,487.789],[180.067,486.927]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.128,-1.165],[2.353,0.259],[-0.128,1.165],[-2.353,-0.259]],"o":[[2.353,0.259],[-0.128,1.165],[-2.353,-0.259],[0.128,-1.165],[0,0]],"v":[[194.607,482.715],[198.137,484.919],[194.211,486.314],[190.682,484.099],[194.607,482.715]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.057,-0.619],[-1.666,-0.183],[-0.071,0.641],[1.666,0.184]],"o":[[-1.665,-0.183],[-0.082,0.639],[1.666,0.184],[0.067,-0.617],[0,0]],"v":[[194.517,483.53],[191.835,484.226],[194.302,485.487],[196.996,484.793],[194.517,483.53]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[198.905,487.479],[198.807,488.365],[189.29,487.317],[189.388,486.432]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[197.519,489.036],[197.25,491.482],[191.169,490.813],[191.067,491.745],[197.438,492.446],[197.345,493.297],[189.89,492.476],[190.174,489.89],[196.243,490.558],[196.333,489.743],[190.253,489.074],[190.344,488.247]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[211.773,484.427],[210.624,494.864],[209.506,494.741],[210.654,484.304]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[3.765,-1.319],[0,0],[-0.484,2.411],[0,0],[0,0]],"o":[[-0.336,3.052],[0,0],[2.923,-1.016],[0,0],[0,0],[0,0]],"v":[[208.54,485.203],[202.842,492.086],[202.359,491.125],[207.324,485.965],[203.48,485.542],[203.577,484.657]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[222.317,491.352],[222.218,492.249],[212.666,491.198],[212.765,490.301],[216.993,490.767],[217.102,489.776],[214.097,489.446],[214.389,486.79],[220.412,487.453],[220.514,486.521],[214.469,485.855],[214.565,484.982],[221.717,485.769],[221.428,488.39],[215.395,487.726],[215.287,488.704],[221.53,489.391],[221.436,490.253],[218.197,489.897],[218.088,490.887]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[220.996,492.857],[220.663,495.886],[219.544,495.763],[219.78,493.62],[213.56,492.935],[213.657,492.05]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[228.683,488.033],[228.584,488.93],[223.401,488.359],[223.499,487.462],[225.549,487.688],[225.706,486.267],[226.801,486.387],[226.644,487.808]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.144,-1.411],[1.328,0.147],[-0.168,1.42],[-1.305,-0.144]],"o":[[1.328,0.146],[-0.168,1.419],[-1.304,-0.143],[0.144,-1.411],[0,0]],"v":[[225.929,489.274],[227.936,491.924],[225.398,494.096],[223.405,491.425],[225.929,489.274]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.095,-0.862],[-0.757,-0.083],[-0.097,0.885],[0.745,0.082]],"o":[[-0.757,-0.083],[-0.098,0.885],[0.746,0.082],[0.095,-0.862],[0,0]],"v":[[225.828,490.194],[224.384,491.533],[225.502,493.153],[226.958,491.816],[225.828,490.194]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[232.647,486.724],[231.498,497.161],[230.45,497.046],[231.02,491.862],[229.82,491.73],[229.304,496.424],[228.256,496.309],[229.325,486.594],[230.373,486.709],[229.92,490.821],[231.12,490.953],[231.598,486.609]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[236.345,487.296],[236.245,488.204],[241.079,488.736],[241.179,487.828],[242.285,487.95],[241.905,491.409],[238.899,491.078],[238.799,491.987],[243.039,492.454],[242.942,493.339],[233.425,492.292],[233.523,491.406],[237.716,491.868],[237.816,490.959],[234.869,490.635],[235.25,487.175]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[236.056,489.917],[240.89,490.449],[240.989,489.552],[236.155,489.02]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[241.659,493.964],[241.391,496.398],[235.311,495.729],[235.214,496.603],[241.586,497.304],[241.493,498.155],[234.038,497.334],[234.314,494.818],[240.383,495.486],[240.473,494.671],[234.392,494.001],[234.483,493.174]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[252.624,488.922],[252.157,493.162],[253.672,493.329],[253.572,494.237],[252.057,494.071],[251.475,499.359],[250.369,499.237],[251.517,488.8]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[2.109,-1.807],[0,0],[-0.341,2.079],[0,0],[0,0]],"o":[[-0.287,2.609],[0,0],[1.701,-1.416],[0,0],[0,0],[0,0]],"v":[[247.352,489.474],[244.217,496.214],[243.411,495.501],[246.204,490.267],[244.387,490.067],[244.487,489.158]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[2.172,-2.06],[0,0],[-0.327,2.222],[0,0],[0,0]],"o":[[-0.291,2.645],[0,0],[1.748,-1.641],[0,0],[0,0],[0,0]],"v":[[250.229,489.79],[247.135,497.231],[246.317,496.528],[249.093,490.585],[247.59,490.42],[247.69,489.511]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.103,0.932],[-2.237,-0.246],[0.18,-1.642],[0.891,-0.38],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.804,-0.566],[0.181,-1.642],[2.248,0.248],[-0.102,0.921],[0,0],[0,0]],"v":[[263.287,498.407],[263.186,499.327],[253.634,498.276],[253.735,497.356],[256.018,497.607],[256.318,494.881],[255.181,492.575],[259.325,490.272],[262.881,493.422],[261.306,495.407],[261.004,498.156]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.124,-1.13],[-1.642,-0.18],[-0.123,1.118],[1.631,0.179]],"o":[[-1.642,-0.181],[-0.123,1.118],[1.631,0.18],[0.124,-1.13],[0,0]],"v":[[259.227,491.158],[256.253,492.693],[258.821,494.85],[261.809,493.305],[259.227,491.158]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.47,0.057],[0.439,0.153]],"o":[[0,0],[0,0],[-0.47,0.063],[-0.463,-0.048],[0,0]],"v":[[257.113,497.728],[259.886,498.033],[260.142,495.703],[258.726,495.712],[257.368,495.41]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.822,0.393],[-0.068,0.617],[0.699,0.077],[0.153,-0.855],[0,0],[-1.386,-0.153],[0.146,-1.328],[0.795,-0.372],[0.128,-0.941],[0,0],[0,0]],"o":[[0.18,-1.525],[0.522,-0.249],[0.081,-0.734],[-0.629,-0.069],[0,0],[0.209,-1.474],[1.514,0.166],[-0.103,0.932],[-0.745,0.342],[0,0],[0,0],[0,0]],"v":[[265.896,497.409],[267.403,495.075],[268.412,493.831],[267.285,492.504],[265.855,493.608],[264.597,493.47],[267.4,491.456],[269.682,493.97],[268.272,495.855],[267.084,497.54],[267.077,497.61],[265.889,497.479]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (92)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.061,0.453],[-0.454,-0.05],[0.044,-0.455],[0.455,0.046]],"o":[[-0.454,-0.05],[0.039,-0.455],[0.454,0.056],[-0.054,0.454],[0,0]],"v":[[266.252,500.065],[265.516,499.147],[266.434,498.411],[267.17,499.329],[266.252,500.065]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.173,0.18,0.192]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 (27) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.18,-1.748],[1.929,-0.006],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.175,1.59],[-2.283,-0.251]],"o":[[2.284,0.252],[-0.188,1.595],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.876,-0.413],[0.192,-1.747],[0,0]],"v":[[120.756,436.654],[124.433,439.994],[120.853,442.524],[120.655,444.33],[124.79,444.785],[124.655,446.008],[114.952,444.94],[115.087,443.717],[119.175,444.167],[119.375,442.35],[116.454,439.116],[120.756,436.654]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.117,-1.06],[-1.479,-0.163],[-0.135,1.117],[1.491,0.165]],"o":[[-1.48,-0.162],[-0.123,1.118],[1.491,0.164],[0.105,-1.061],[0,0]],"v":[[120.626,437.842],[117.921,439.278],[120.245,441.302],[122.965,439.833],[120.626,437.842]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[134.629,439.796],[134.499,440.972],[127.126,440.161],[127.477,436.969],[128.957,437.132],[128.735,439.147]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[135.539,441.806],[135.41,442.983],[125.707,441.915],[125.836,440.738]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[134.175,443.495],[133.865,446.314],[127.947,445.663],[127.873,446.338],[134.116,447.025],[133.991,448.167],[126.256,447.316],[126.574,444.427],[132.503,445.079],[132.57,444.474],[126.617,443.819],[126.743,442.677]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[147.713,439.066],[147.257,443.213],[148.818,443.385],[148.683,444.608],[147.122,444.436],[146.547,449.666],[145.079,449.505],[146.245,438.905]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[145.349,440.41],[145.218,441.598],[138.986,440.912],[139.117,439.724],[141.516,439.988],[141.673,438.567],[143.164,438.731],[143.007,440.152]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.163,-1.479],[1.549,0.17],[-0.163,1.48],[-1.561,-0.172]],"o":[[1.549,0.171],[-0.163,1.479],[-1.561,-0.172],[0.162,-1.479],[0,0]],"v":[[142.066,441.852],[144.49,444.677],[141.51,446.908],[139.074,444.081],[142.066,441.852]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.089,-0.816],[-0.747,-0.07],[-0.091,0.827],[0.744,0.094]],"o":[[-0.747,-0.07],[-0.091,0.827],[0.744,0.094],[0.09,-0.816],[0,0]],"v":[[141.934,443.052],[140.495,444.238],[141.644,445.684],[143.069,444.521],[141.934,443.052]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[158.196,440.55],[157.848,443.707],[151.919,443.054],[151.822,443.94],[157.995,444.619],[157.865,445.807],[150.188,444.962],[150.54,441.771],[156.445,442.42],[156.538,441.582],[150.597,440.928],[150.729,439.728]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[158.651,446.695],[158.52,447.883],[154.397,447.43],[154.057,450.516],[152.566,450.352],[152.906,447.266],[148.817,446.816],[148.948,445.628]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[168.257,444.251],[168.129,445.416],[160.721,444.6],[161.126,440.92],[162.605,441.082],[162.328,443.598]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[169.087,446.676],[168.959,447.841],[159.256,446.774],[159.384,445.609]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[167.635,450.549],[167.504,451.737],[159.933,450.904],[160.279,447.759],[161.77,447.923],[161.555,449.88]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.006,-1.928],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.479,0.162],[-0.268,2.329],[-1.608,-0.177]],"o":[[1.433,0.157],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.381,2.021],[-1.608,-0.177],[0.243,-2.307],[0,0]],"v":[[175.867,442.919],[178.241,446.304],[180.082,446.507],[180.503,442.674],[181.971,442.836],[180.802,453.459],[179.334,453.298],[179.951,447.695],[178.122,447.494],[175.035,450.479],[172.702,446.39],[175.867,442.919]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.161,-1.574],[-0.792,-0.087],[-0.174,1.584],[0.804,0.089]],"o":[[-0.792,-0.087],[-0.186,1.583],[0.803,0.089],[0.173,-1.573],[0,0]],"v":[[175.719,444.258],[174.124,446.547],[175.184,449.127],[176.779,446.839],[175.719,444.258]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[190.464,443.971],[190.214,446.242],[190.96,446.324],[191.232,443.855],[192.641,444.01],[191.972,450.09],[190.562,449.935],[190.829,447.513],[190.084,447.43],[189.826,449.772],[188.463,449.622],[189.101,443.821]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-0.347,0.038],[0,0],[0.558,0.073],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0.288,0.008],[0,0],[-0.799,0.077],[0,0],[0,0],[0,0]],"v":[[185.688,443.988],[185.557,445.176],[184.683,445.08],[184.41,447.561],[185.358,447.524],[185.332,448.723],[183.381,448.662],[182.915,448.611],[183.451,443.742]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[-0.399,0.039],[0,0],[0.616,0.079],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0.323,0.012],[0,0],[-0.832,0.061],[0,0],[0,0],[0,0]],"v":[[188.483,444.295],[188.353,445.483],[187.374,445.376],[187.101,447.857],[188.178,447.822],[188.173,449.048],[186.107,448.962],[185.618,448.908],[186.154,444.039]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.719,-0.605],[-0.086,0.781],[0,0],[0,0],[0,0],[-1.363,-0.574],[0,0],[0.276,0.862],[1.008,-0.266],[0.247,0.864],[1.004,-0.231],[0,0],[-0.115,1.049],[0,0],[0,0]],"o":[[-0.108,0.934],[0.931,-0.534],[0,0],[0,0],[0,0],[-0.122,1.107],[0,0],[-0.971,-0.448],[-0.44,0.783],[-0.944,-0.475],[-0.461,0.757],[0,0],[1.436,-0.302],[0,0],[0,0],[0,0]],"v":[[186.6,450.266],[187.579,452.731],[189.058,450.536],[189.098,450.175],[190.589,450.339],[190.549,450.7],[192.259,453.482],[191.405,454.496],[189.565,452.466],[187.421,454.164],[185.695,452.064],[183.507,453.627],[182.894,452.452],[185.179,450.109],[185.219,449.748],[186.64,449.905]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.006,-1.928],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[1.479,0.163],[-0.268,2.328],[-1.608,-0.176]],"o":[[1.432,0.158],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.382,2.022],[-1.608,-0.177],[0.242,-2.308],[0,0]],"v":[[196.485,445.187],[198.859,448.573],[200.699,448.775],[201.121,444.943],[202.589,445.105],[201.42,455.728],[199.952,455.566],[200.569,449.964],[198.74,449.762],[195.653,452.747],[193.32,448.659],[196.485,445.187]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.162,-1.573],[-0.792,-0.087],[-0.174,1.584],[0.804,0.088]],"o":[[-0.792,-0.087],[-0.186,1.583],[0.804,0.089],[0.173,-1.573],[0,0]],"v":[[196.337,446.527],[194.741,448.815],[195.801,451.396],[197.397,449.108],[196.337,446.527]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.104,0.937],[-2.306,-0.254],[0.177,-1.714],[0.847,-0.407],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.767,-0.58],[0.188,-1.713],[2.295,0.253],[-0.107,0.913],[0,0],[0,0]],"v":[[212.759,454.465],[212.624,455.688],[202.921,454.62],[203.056,453.397],[205.222,453.635],[205.508,451.038],[204.432,448.715],[208.729,446.299],[212.411,449.593],[210.892,451.606],[210.604,454.227]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0.118,-1.072],[-1.515,-0.166],[-0.126,1.035],[1.503,0.165]],"o":[[-1.514,-0.167],[-0.114,1.037],[1.502,0.166],[0.106,-1.073],[0,0]],"v":[[208.6,447.476],[205.899,448.876],[208.231,450.83],[210.943,449.431],[208.6,447.476]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0.406,0.046],[0.386,0.125]],"o":[[0,0],[0,0],[-0.408,0.035],[-0.403,-0.039],[0,0]],"v":[[206.69,453.797],[209.101,454.062],[209.328,452],[208.104,451.983],[206.917,451.735]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.747,0.354],[-0.059,0.536],[0.559,0.062],[0.098,-0.685],[0,0],[-1.491,-0.164],[0.157,-1.433],[0.819,-0.369],[0.101,-0.814],[0,0],[0,0]],"o":[[0.171,-1.443],[0.536,-0.271],[0.064,-0.582],[-0.548,-0.06],[0,0],[0.216,-1.639],[1.62,0.178],[-0.106,0.955],[-0.695,0.325],[0,0],[0,0],[0,0]],"v":[[215.356,453.465],[216.708,451.256],[217.728,450.13],[216.821,449.052],[215.634,449.983],[213.979,449.801],[216.983,447.679],[219.505,450.267],[218.023,452.155],[216.894,453.634],[216.88,453.763],[215.342,453.593]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (27)","d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[-0.065,0.542],[-0.547,-0.06],[0.059,-0.536],[0.535,0.047]],"o":[[-0.543,-0.054],[0.047,-0.537],[0.513,0.057],[-0.064,0.533],[0,0]],"v":[[215.856,456.314],[214.986,455.228],[216.07,454.369],[216.931,455.442],[215.856,456.314]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.173,0.18,0.192]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[190.678,468.342]},"o":{"a":0,"k":100},"p":{"a":0,"k":[-9.548,-0.487]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Layer 8 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 (2) Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0.128,-1.161],[0,0],[0,0],[0.922,-2.785],[-0.713,-0.991],[0,0],[-2.726,-1.081],[-1.057,0.772],[0,0],[-1.064,2.733],[0.041,0.564],[0.355,-3.243],[0,0],[0.871,0.095],[0,0],[0.153,0.117],[0,0],[0.367,-0.197],[0,0],[0.214,0.023],[0,0],[-0.096,0.87],[0,0],[-0.3,0.652],[0,0],[0.435,1.486],[-0.074,0.679],[0,0],[-1.161,-0.128]],"o":[[1.161,0.128],[0,0],[0,0],[-1.951,-2.191],[-0.384,1.159],[0,0],[-2.3,1.82],[1.216,0.482],[0,0],[1.835,2.288],[0.205,-0.527],[3.192,0.676],[0,0],[-0.096,0.87],[0,0],[-0.192,-0.022],[0,0],[-0.331,-0.253],[0,0],[-0.189,0.102],[0,0],[-0.871,-0.095],[0,0],[0.078,-0.714],[0,0],[0.647,-1.407],[-0.192,-0.656],[0,0],[0.128,-1.161],[0,0]],"v":[[81.393,444.268],[83.263,446.601],[82.693,451.794],[82.566,451.644],[76.102,452.981],[76.627,456.405],[76.746,456.562],[77.706,463.091],[81.358,462.626],[81.514,462.506],[88.037,461.504],[88.286,459.846],[93.282,466.75],[93.097,468.431],[91.347,469.834],[78.929,468.468],[78.402,468.256],[77.128,467.281],[75.983,467.189],[74.806,467.825],[74.187,467.946],[70.322,467.52],[68.919,465.771],[69.726,458.438],[70.298,456.376],[70.588,455.744],[70.917,451.258],[70.739,449.235],[71.175,445.271],[73.509,443.4]]}}},{"ty":"sh","hd":false,"nm":"Path 1 (2)","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[-0.509,-0.593],[0.604,0.067],[-0.683,0.864],[-0.473,-0.035]],"o":[[0.17,0.762],[-0.263,0.51],[-1.089,-0.159],[0.294,-0.372],[0,0]],"v":[[82.493,455.937],[83.527,458.001],[82.104,458.766],[81.189,456.464],[82.417,455.925]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[0.192,0.686,0.537]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-4.299],[0,0],[4.299,0],[0,0],[0,4.299],[0,0],[-4.299,0]],"o":[[0,0],[4.299,0],[0,0],[0,4.299],[0,0],[-4.299,0],[0,0],[0,-4.299],[0,0]],"v":[[74.026,436.727],[94.458,436.727],[102.242,444.511],[102.242,464.943],[94.458,472.727],[74.026,472.727],[66.242,464.943],[66.242,444.511],[74.026,436.727]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[66.242,436.727]},"o":{"a":0,"k":100},"p":{"a":0,"k":[66.242,436.727]},"r":{"a":0,"k":6},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[82.262,456.51]},"o":{"a":0,"k":100},"p":{"a":0,"k":[-117.964,-12.319]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Layer 9 Group","bm":0,"it":[{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-8.56],[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0]],"o":[[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0],[0,0],[0,-8.56],[0,0]],"v":[[67.692,413.552],[342.692,413.552],[358.192,429.052],[358.192,477.052],[342.692,492.552],[67.692,492.552],[52.192,477.052],[52.192,429.052],[67.692,413.552]]}}},{"ty":"st","hd":false,"bm":0,"c":{"a":0,"k":[0.886,0.894,0.906]},"lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":1}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[52.192,413.552]},"o":{"a":0,"k":100},"p":{"a":0,"k":[52.192,413.552]},"r":{"a":0,"k":6},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,-8.56],[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0]],"o":[[0,0],[8.56,0],[0,0],[0,8.56],[0,0],[-8.56,0],[0,0],[0,-8.56],[0,0]],"v":[[67.692,413.552],[342.692,413.552],[358.192,429.052],[358.192,477.052],[342.692,492.552],[67.692,492.552],[52.192,477.052],[52.192,429.052],[67.692,413.552]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[52.192,413.552]},"o":{"a":0,"k":100},"p":{"a":0,"k":[52.192,413.552]},"r":{"a":0,"k":6},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[200.225,468.828]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]},{"ddd":0,"ind":31,"ty":4,"nm":"화면","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[196.5,426]},"o":{"a":0,"k":100},"p":{"a":0,"k":[196.5,426]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Path 1 Group","bm":0,"it":[{"ty":"sh","hd":false,"nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0,0],[393,0],[393,852],[0,852]]}}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]}]}],"ddd":0,"fr":30,"h":287,"ip":0,"layers":[{"ddd":0,"ind":33,"ty":0,"nm":"Import from Figma","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[196.5,143.5]},"o":{"a":0,"k":100},"p":{"a":0,"k":[196.5,143.5]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"h":287,"refId":"el-35-aFnd","w":393},{"ddd":0,"ind":34,"ty":4,"nm":"Screen","hd":false,"sr":1,"ks":{"a":{"a":0,"k":[196.5,143.5]},"o":{"a":0,"k":100},"p":{"a":0,"k":[196.5,143.5]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}},"ao":0,"ip":0,"op":61,"st":0,"bm":0,"shapes":[{"ty":"gr","hd":false,"nm":"Screen Group","bm":0,"it":[{"ty":"rc","hd":false,"nm":"Screen","d":1,"p":{"a":0,"k":[196.5,143.5]},"r":{"a":0,"k":0},"s":{"a":0,"k":[393,287]}},{"ty":"fl","hd":false,"bm":0,"c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","nm":"Transform","a":{"a":0,"k":[0,0]},"o":{"a":0,"k":100},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0}}],"np":0}]}],"meta":{"g":"@phase-software/lottie-exporter 0.7.0"},"nm":"","op":60,"v":"5.6.0","w":393} \ No newline at end of file diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/entities/axios/HTTPError.ts b/src/entities/axios/HTTPError.ts new file mode 100644 index 0000000..f1cddf6 --- /dev/null +++ b/src/entities/axios/HTTPError.ts @@ -0,0 +1,36 @@ +import { HTTP_STATUS_CODE } from "../../shared/constants/api"; + +/** HTTP 통신 시 발생하는 API Error를 별도의 객체로 나타내기 위한 에러 객체입니다. */ +export class HTTPError extends Error { + statusCode: number; + code?: number; + + constructor(statusCode: number, message?: string, code?: number) { + super(message); + let name = "HTTPError"; + + switch (statusCode) { + case HTTP_STATUS_CODE.BAD_REQUEST: { + name += ": BAD_REQUESET"; + break; + } + case HTTP_STATUS_CODE.UNAUTHORIZED: { + name += ": UNAUTHORIZED"; + break; + } + case HTTP_STATUS_CODE.NOT_FOUND: { + name += ": NOT_FOUND"; + break; + } + + case HTTP_STATUS_CODE.INTERNAL_SERVER_ERROR: { + name += ": INTERNAL_SERVER_ERROR"; + break; + } + } + + this.name = name; + this.statusCode = statusCode; + this.code = code; + } +} diff --git a/src/entities/axios/api.ts b/src/entities/axios/api.ts new file mode 100644 index 0000000..58a06f3 --- /dev/null +++ b/src/entities/axios/api.ts @@ -0,0 +1,12 @@ +export const HTTP_STATUS_CODE = { + SUCCESS: 200, + CREATED: 201, + BAD_REQUEST: 400, + UNAUTHORIZED: 401, + NOT_FOUND: 404, + CONFLICT: 409, + INTERNAL_SERVER_ERROR: 500, +}; + +export const USER_ID_KEY = "access_token"; +export const REFRESH_TOKEN_KEY = "refresh_token"; diff --git a/src/entities/axios/index.d.ts b/src/entities/axios/index.d.ts new file mode 100644 index 0000000..6e8816a --- /dev/null +++ b/src/entities/axios/index.d.ts @@ -0,0 +1,10 @@ +import { AxiosError } from "axios"; + +declare module "@tanstack/react-query" { + interface Register { + defaultError: AxiosError; + } +} +/** + * Query 에서 발생하는 기본적인 에러를 AxiosError 타입으로 설정함 + */ diff --git a/src/entities/axios/instance.ts b/src/entities/axios/instance.ts new file mode 100644 index 0000000..229a03c --- /dev/null +++ b/src/entities/axios/instance.ts @@ -0,0 +1,35 @@ +import axios from "axios"; +import { handleAPIError } from "./interceptor"; + +// Axios 인스턴스 생성 +export const api = axios.create({ + baseURL: `${import.meta.env.VITE_BASE_URL}/v1`, + withCredentials: true, + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, +}); + +// Response 인터셉터 설정 +api.interceptors.response.use(res => res, handleAPIError); + +export function get(...args: Parameters) { + return api.get(...args).then(res => res.data); +} + +export function post(...args: Parameters) { + return api.post(...args).then(res => res.data); +} + +export function put(...args: Parameters) { + return api.put(...args).then(res => res.data); +} + +export function patch(...args: Parameters) { + return api.patch(...args).then(res => res.data); +} + +export function del(...args: Parameters) { + return api.delete(...args).then(res => res.data); +} diff --git a/src/entities/axios/interceptor.ts b/src/entities/axios/interceptor.ts new file mode 100644 index 0000000..bd9e3e4 --- /dev/null +++ b/src/entities/axios/interceptor.ts @@ -0,0 +1,54 @@ +import { HTTP_STATUS_CODE } from "../../shared/constants/api"; +import { AxiosError, InternalAxiosRequestConfig } from "axios"; +import { api } from "./instance"; + +/** + * 요청 인터셉터 - Access Token을 헤더에 추가 + */ + +export const handleCheckAndSetToken = (config: InternalAxiosRequestConfig) => { + return config; +}; + +/** + * 응답 인터셉터 - 401 발생 시 Refresh Token을 사용하여 기존 요청 재시도 + */ +export const handleAPIError = async (error: AxiosError) => { + if (!error.response) { + return Promise.reject(new Error("서버 응답이 없습니다. 네트워크 상태를 확인해주세요.")); + } + + const { response, config } = error; + const { status } = response; + + // 무한루프 방지: 재발급 시도 여부 플래그 + if ((config as any)?._retry) { + window.location.href = "/login"; + return Promise.reject(error); + } + + if (status === HTTP_STATUS_CODE.UNAUTHORIZED || status === HTTP_STATUS_CODE.FORBIDDEN) { + try { + // 토큰 재발급 요청 + const reissueRes = await api.post("/auth/reissue"); + // result가 true이거나, 서버에서 200 OK로 응답하면 성공으로 간주 + if (reissueRes && (reissueRes.status === 200 || (reissueRes.data && reissueRes.data.result === true))) { + if (config) { + (config as any)._retry = true; // 재발급 시도 플래그 + return api.request(config as any); + } else { + return Promise.reject(error); + } + } else { + window.location.href = "/login"; + return Promise.reject(error); + } + } catch (e) { + console.log("reissue error:", e); + window.location.href = "/login"; + return Promise.reject(error); + } + } + + return Promise.reject(error); +}; diff --git a/src/entities/comment/index.ts b/src/entities/comment/index.ts new file mode 100644 index 0000000..27761ed --- /dev/null +++ b/src/entities/comment/index.ts @@ -0,0 +1,2 @@ +export * from "./type"; +export * from "./service"; diff --git a/src/entities/comment/mutaion.ts b/src/entities/comment/mutaion.ts new file mode 100644 index 0000000..71049c9 --- /dev/null +++ b/src/entities/comment/mutaion.ts @@ -0,0 +1,23 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { createComment } from "./service"; +import { CommentRequest } from "./type"; +import { letterQueryKey } from "../letter/queryKey"; + +export const useCommentMutation = (letterId = "", scheduleId = "") => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async (data: CommentRequest) => { + return await createComment(letterId, data); + }, + onSuccess: () => { + if (scheduleId) { + queryClient.invalidateQueries({ + queryKey: letterQueryKey.detail(scheduleId, letterId).queryKey, + }); + } + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; diff --git a/src/entities/comment/service.ts b/src/entities/comment/service.ts new file mode 100644 index 0000000..028d3a0 --- /dev/null +++ b/src/entities/comment/service.ts @@ -0,0 +1,7 @@ +import { api } from "../axios/instance"; +import { CommentRequest, CommentResponse } from "./type"; + +export const createComment = async (letterId: string, data: CommentRequest): Promise => { + const response = await api.post(`/schedules/letters/${letterId}/comments`, data); + return response.data; +}; diff --git a/src/entities/comment/type.ts b/src/entities/comment/type.ts new file mode 100644 index 0000000..f2d8e37 --- /dev/null +++ b/src/entities/comment/type.ts @@ -0,0 +1,16 @@ +export interface Comment { + id: string; + author: string; + content: string; + createdAt: Date; +} + +// API 요청에서 사용하는 타입 +export interface CommentRequest { + commentId: string | null; + content: string; +} + +export interface CommentResponse { + result: boolean; +} diff --git a/src/entities/couple_birthday/index.ts b/src/entities/couple_birthday/index.ts new file mode 100644 index 0000000..0eae758 --- /dev/null +++ b/src/entities/couple_birthday/index.ts @@ -0,0 +1,3 @@ +export * from "./service"; +export * from "./queries"; +export * from "./types"; diff --git a/src/entities/couple_birthday/queries.ts b/src/entities/couple_birthday/queries.ts new file mode 100644 index 0000000..8f6541f --- /dev/null +++ b/src/entities/couple_birthday/queries.ts @@ -0,0 +1,12 @@ +import { useQuery } from "@tanstack/react-query"; +import { getCoupleBirthDay } from "./service"; + +export const useCoupleBirthDay = () => { + return useQuery({ + queryKey: ["coupleBirthDay"], + queryFn: getCoupleBirthDay, + refetchInterval: 1000 * 60, + staleTime: 0, + gcTime: 0, + }); +}; \ No newline at end of file diff --git a/src/entities/couple_birthday/service.ts b/src/entities/couple_birthday/service.ts new file mode 100644 index 0000000..3ccea20 --- /dev/null +++ b/src/entities/couple_birthday/service.ts @@ -0,0 +1,7 @@ +import { CoupleBirthDayResponse } from "./types"; +import { api } from "@/entities/axios/instance"; + +export const getCoupleBirthDay = async (): Promise => { + const response = await api.get("/couple/birthday"); + return response.data; +}; \ No newline at end of file diff --git a/src/entities/couple_birthday/types.ts b/src/entities/couple_birthday/types.ts new file mode 100644 index 0000000..1ae93b7 --- /dev/null +++ b/src/entities/couple_birthday/types.ts @@ -0,0 +1,6 @@ +export interface CoupleBirthDayResponse { + result: { + partnerBirthday: string; + myBirthDay: string; + }; +} \ No newline at end of file diff --git a/src/entities/couple_connect/index.ts b/src/entities/couple_connect/index.ts new file mode 100644 index 0000000..96b79c7 --- /dev/null +++ b/src/entities/couple_connect/index.ts @@ -0,0 +1,4 @@ +export * from "./service"; + export * from "./mutation"; + export * from "./types"; + diff --git a/src/entities/couple_connect/mutation.ts b/src/entities/couple_connect/mutation.ts new file mode 100644 index 0000000..1516137 --- /dev/null +++ b/src/entities/couple_connect/mutation.ts @@ -0,0 +1,26 @@ +import { useMutation } from "@tanstack/react-query"; +import { ConnectCoupleRequest } from "./types"; +import { coupleConnectQueries } from "./service"; + +export const useGenerateCoupleCode = () => { + return useMutation({ + mutationFn: async () => { + return await coupleConnectQueries.generateCoupleCode(); + }, + onError: error => { + console.error("커플 코드 생성 API 에러:", error); + }, + }); +}; + +export const useConnectCouple = () => { + return useMutation({ + mutationFn: async (data: ConnectCoupleRequest) => { + return await coupleConnectQueries.connectCouple(data); + }, + + onError: error => { + console.error("커플 연결 API 에러:", error); + }, + }); +}; diff --git a/src/entities/couple_connect/service.ts b/src/entities/couple_connect/service.ts new file mode 100644 index 0000000..e51c180 --- /dev/null +++ b/src/entities/couple_connect/service.ts @@ -0,0 +1,15 @@ +import { ConnectCoupleRequest, ConnectCoupleResponse, GenerateCoupleCodeResponse } from "./types"; +import { api } from "../axios/instance"; + +export const coupleConnectQueries = { + generateCoupleCode: async (): Promise => { + const response = await api.post("/couple/code-generate"); + console.log("코드 생성 응답:", response.data); + return response.data; + }, + + connectCouple: async (data: ConnectCoupleRequest): Promise => { + const response = await api.post("/couple/connect", data); + return response.data; + }, +}; \ No newline at end of file diff --git a/src/entities/couple_connect/types.ts b/src/entities/couple_connect/types.ts new file mode 100644 index 0000000..63c2c70 --- /dev/null +++ b/src/entities/couple_connect/types.ts @@ -0,0 +1,22 @@ +export interface ConnectCoupleRequest { + coupleCode: string; +} + +export interface ConnectCoupleResponse { + result: { + id: number; + invitorId: number; + inviteeId: number; + relationshipStartDate: string; + militaryStartDate: string; + militaryEndDate: string; + military: string; + createdAt: string; + updatedAt: string; + isDeleted: boolean; + }; +} + +export interface GenerateCoupleCodeResponse { + result: string; +} \ No newline at end of file diff --git a/src/entities/couple_nickname/index.ts b/src/entities/couple_nickname/index.ts new file mode 100644 index 0000000..6e22960 --- /dev/null +++ b/src/entities/couple_nickname/index.ts @@ -0,0 +1,5 @@ +export * from "./service"; +export * from "./queries"; +export * from "./types"; + + diff --git a/src/entities/couple_nickname/queries.ts b/src/entities/couple_nickname/queries.ts new file mode 100644 index 0000000..6af7e79 --- /dev/null +++ b/src/entities/couple_nickname/queries.ts @@ -0,0 +1,16 @@ +import { useQuery } from "@tanstack/react-query"; +import { coupleNicknameQueries } from "./service"; + +export const useCoupleNickname = (enabled?: boolean) => { + const getNickName = useQuery({ + queryKey: ["coupleNickname"], + queryFn: () => coupleNicknameQueries.getNickName(), + enabled: enabled, + staleTime: 0, + gcTime: 0, + }); + + return { + getNickName, + }; +}; diff --git a/src/entities/couple_nickname/service.ts b/src/entities/couple_nickname/service.ts new file mode 100644 index 0000000..e80ead4 --- /dev/null +++ b/src/entities/couple_nickname/service.ts @@ -0,0 +1,9 @@ +import { CoupleNicknameResponse } from "./types"; +import { api } from "../axios/instance"; + +export const coupleNicknameQueries = { + getNickName: async (): Promise => { + const response = await api.get("/couple/nick-name"); + return response.data; + }, +}; \ No newline at end of file diff --git a/src/entities/couple_nickname/types.ts b/src/entities/couple_nickname/types.ts new file mode 100644 index 0000000..a912d27 --- /dev/null +++ b/src/entities/couple_nickname/types.ts @@ -0,0 +1,6 @@ +export interface CoupleNicknameResponse { + result: { + userNickname: string; + coupleNickname: string; + }; +} \ No newline at end of file diff --git a/src/entities/d-day/index.ts b/src/entities/d-day/index.ts new file mode 100644 index 0000000..ab60a1c --- /dev/null +++ b/src/entities/d-day/index.ts @@ -0,0 +1,5 @@ +export * from "./model"; +export * from "./mutation"; +export * from "./service"; +export * from "./queryKey"; +export * from "./query"; diff --git a/src/entities/d-day/model/index.ts b/src/entities/d-day/model/index.ts new file mode 100644 index 0000000..eea524d --- /dev/null +++ b/src/entities/d-day/model/index.ts @@ -0,0 +1 @@ +export * from "./types"; diff --git a/src/entities/d-day/model/types.ts b/src/entities/d-day/model/types.ts new file mode 100644 index 0000000..2568eef --- /dev/null +++ b/src/entities/d-day/model/types.ts @@ -0,0 +1,39 @@ +export enum Emoji { + HEART = "HEART", + CALENDAR = "CALENDAR", + CAKE = "CAKE", + TRAVEL = "TRAVEL", +} + +export interface Dday { + id: string; + emoji: Emoji; + title: string; + anniversaryDate: string; +} + +// API 함수에 필요한 타입 +export interface DdayRequst { + id: string | null; + title: string; + date: string; +} + +export interface NewDdayResponse { + result: boolean; +} + +export interface DeleteDdayResponse { + result: boolean; +} + +export interface DDayListResponse { + data: Dday[]; + after: number; + count: number; + isLastPage: boolean; +} + +export interface MainDdayListResponse { + result: Dday[]; +} diff --git a/src/entities/d-day/mutation.ts b/src/entities/d-day/mutation.ts new file mode 100644 index 0000000..2fa83dc --- /dev/null +++ b/src/entities/d-day/mutation.ts @@ -0,0 +1,73 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { createDday, deleteDday, updateDday } from "./service"; +import { DdayRequst } from "./model"; +import { ddayQueryKey } from "./queryKey"; +import { scheduleQueryKey } from "../schedule/queryKey"; + +export const useCreateDdayMutation = (data: DdayRequst) => { + const queryClient = useQueryClient(); + + if (!data) { + throw new Error("디데이 생성에 필요한 데이터가 없습니다."); + } + + const date = new Date(data.date); + + return useMutation({ + mutationFn: () => createDday(data), + onSuccess: () => { + queryClient.refetchQueries({ queryKey: ddayQueryKey.list().queryKey }); + queryClient.invalidateQueries({ queryKey: ddayQueryKey.main().queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.week().queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.list(date).queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.calendar(date).queryKey }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; + +export const useUpdateDdayMutation = (data: DdayRequst) => { + const queryClient = useQueryClient(); + + if (!data) { + throw new Error("디데이 수정에 필요한 데이터가 없습니다."); + } + + const date = new Date(data.date); + + return useMutation({ + mutationFn: () => updateDday(data), + onSuccess: () => { + queryClient.refetchQueries({ queryKey: ddayQueryKey.list().queryKey }); + queryClient.invalidateQueries({ queryKey: ddayQueryKey.main().queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.week().queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.list(date).queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.calendar(date).queryKey }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; + +export const useDeleteDdayMutation = (ddayId: string, date: string) => { + const queryClient = useQueryClient(); + + const newDate = new Date(date); + + return useMutation({ + mutationFn: () => deleteDday(ddayId), + onSuccess: () => { + queryClient.refetchQueries({ queryKey: ddayQueryKey.list().queryKey }); + queryClient.invalidateQueries({ queryKey: ddayQueryKey.main().queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.week().queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.list(newDate).queryKey }); + queryClient.invalidateQueries({ queryKey: scheduleQueryKey.calendar(newDate).queryKey }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; diff --git a/src/entities/d-day/query.ts b/src/entities/d-day/query.ts new file mode 100644 index 0000000..5d35007 --- /dev/null +++ b/src/entities/d-day/query.ts @@ -0,0 +1,24 @@ +import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; +import { ddayQueryKey } from "./queryKey"; +import { getDdayList } from "./service"; + +export const useGetDdayList = () => { + return useInfiniteQuery({ + queryKey: ddayQueryKey.list().queryKey, + queryFn: async ({ pageParam = 1 }) => { + return getDdayList({ + page: pageParam, + size: 10, + }); + }, + initialPageParam: 1, + getNextPageParam: (lastPage, allPages) => { + if (lastPage.isLastPage) return undefined; + return allPages.length + 1; + }, + }); +}; + +export const useGetMainDdayList = (enabled: boolean) => { + return useQuery({ ...ddayQueryKey.main(), enabled: enabled }); +}; diff --git a/src/entities/d-day/queryKey.ts b/src/entities/d-day/queryKey.ts new file mode 100644 index 0000000..591f3ae --- /dev/null +++ b/src/entities/d-day/queryKey.ts @@ -0,0 +1,12 @@ +import { createQueryKeys } from "@lukemorales/query-key-factory"; +import { getMainDdayList } from "./service"; + +export const ddayQueryKey = createQueryKeys("dday", { + list: () => ({ + queryKey: ["all"], + }), + main: () => ({ + queryKey: ["top3"], + queryFn: () => getMainDdayList(), + }), +}); diff --git a/src/entities/d-day/service.ts b/src/entities/d-day/service.ts new file mode 100644 index 0000000..a9aca43 --- /dev/null +++ b/src/entities/d-day/service.ts @@ -0,0 +1,29 @@ +import { api } from "../axios/instance"; +import { DDayListResponse, DdayRequst, DeleteDdayResponse, MainDdayListResponse, NewDdayResponse } from "./model"; + +export const createDday = async (data: DdayRequst): Promise => { + const response = await api.post("/couple/new-anniversary", data); + return response.data; +}; + +export const getDdayList = async ({ page, size }: { page: number; size: number }): Promise => { + const response = await api.get("/anniversaries", { + params: { page: page, size: size }, + }); + return response.data; +}; + +export const getMainDdayList = async (): Promise => { + const response = await api.get("anniversary/main"); + return response.data; +}; + +export const updateDday = async (data: DdayRequst): Promise => { + const response = await api.put(`/anniversary/${data.id}`, data); + return response.data; +}; + +export const deleteDday = async (ddayId: string): Promise => { + const response = await api.delete(`/anniversary/${ddayId}`); + return response.data; +}; diff --git a/src/entities/delete_couple/index.ts b/src/entities/delete_couple/index.ts new file mode 100644 index 0000000..6613902 --- /dev/null +++ b/src/entities/delete_couple/index.ts @@ -0,0 +1,4 @@ +export * from "./service"; +export * from "./types"; +export * from "./mutation"; + diff --git a/src/entities/delete_couple/mutation.ts b/src/entities/delete_couple/mutation.ts new file mode 100644 index 0000000..7d4ebbb --- /dev/null +++ b/src/entities/delete_couple/mutation.ts @@ -0,0 +1,8 @@ +import { useMutation } from "@tanstack/react-query"; +import { deleteMyData } from "./service"; + +export const useDeleteMyData = () => { + return useMutation({ + mutationFn: deleteMyData, + }); +}; \ No newline at end of file diff --git a/src/entities/delete_couple/service.ts b/src/entities/delete_couple/service.ts new file mode 100644 index 0000000..8105d52 --- /dev/null +++ b/src/entities/delete_couple/service.ts @@ -0,0 +1,7 @@ +import { DeleteMyDataResponse } from "./types"; +import { api } from "../axios/instance"; + +export const deleteMyData = async (): Promise => { + const response = await api.delete("/member/all-my-data"); + return response.data; +}; \ No newline at end of file diff --git a/src/entities/delete_couple/types.ts b/src/entities/delete_couple/types.ts new file mode 100644 index 0000000..767f591 --- /dev/null +++ b/src/entities/delete_couple/types.ts @@ -0,0 +1,3 @@ +export interface DeleteMyDataResponse { + result: boolean; +} diff --git a/src/entities/edit_info/index.ts b/src/entities/edit_info/index.ts new file mode 100644 index 0000000..c0ae70a --- /dev/null +++ b/src/entities/edit_info/index.ts @@ -0,0 +1,3 @@ +export * from "./service"; +export * from "./types"; +export * from "./mutation"; diff --git a/src/entities/edit_info/mutation.ts b/src/entities/edit_info/mutation.ts new file mode 100644 index 0000000..721c2ca --- /dev/null +++ b/src/entities/edit_info/mutation.ts @@ -0,0 +1,54 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { + updateMyNickname, + updateMyBirthDate, + updateRelationshipStartDate, + updateMilitaryDate, +} from "./service"; +import { + UpdateMyNicknameRequest, + UpdateMyBirthDateRequest, + UpdateRelationshipStartDateRequest, + UpdateMilitaryDateRequest, +} from "./types"; + +export const useUpdateMyNickname = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: (data: UpdateMyNicknameRequest) => updateMyNickname(data), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["coupleNickname"] }); + queryClient.invalidateQueries({ queryKey: ["myInfo"] }); + }, + }); +}; + +export const useUpdateMyBirthDate = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: (data: UpdateMyBirthDateRequest) => updateMyBirthDate(data), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["coupleBirthDay"] }); + }, + }); +}; + +export const useUpdateRelationshipStartDate = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: (data: UpdateRelationshipStartDateRequest) => updateRelationshipStartDate(data), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["relationshipStartDate"] }); + }, + }); +}; + +export const useUpdateMilitaryDate = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: (data: UpdateMilitaryDateRequest) => updateMilitaryDate(data), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["militaryDate"] }); + }, + }); +}; \ No newline at end of file diff --git a/src/entities/edit_info/service.ts b/src/entities/edit_info/service.ts new file mode 100644 index 0000000..0c9d950 --- /dev/null +++ b/src/entities/edit_info/service.ts @@ -0,0 +1,28 @@ +import { api } from "@/entities/axios/instance"; +import { + UpdateMyNicknameRequest, + UpdateMyBirthDateRequest, + UpdateRelationshipStartDateRequest, + UpdateMilitaryDateRequest, + UpdateResponse, +} from "./types"; + +export const updateMyNickname = async (data: UpdateMyNicknameRequest): Promise => { + const response = await api.post("/member/my-nickname", data); + return response.data; +}; + +export const updateMyBirthDate = async (data: UpdateMyBirthDateRequest): Promise => { + const response = await api.post("/member/my-birthday", data); + return response.data; +}; + +export const updateRelationshipStartDate = async (data: UpdateRelationshipStartDateRequest): Promise => { + const response = await api.post("/couple/relationship-start-date", data); + return response.data; +}; + +export const updateMilitaryDate = async (data: UpdateMilitaryDateRequest): Promise => { + const response = await api.post("/couple/military-date", data); + return response.data; +}; \ No newline at end of file diff --git a/src/entities/edit_info/types.ts b/src/entities/edit_info/types.ts new file mode 100644 index 0000000..f4d3357 --- /dev/null +++ b/src/entities/edit_info/types.ts @@ -0,0 +1,20 @@ +export interface UpdateMyNicknameRequest { + nickname: string; +} + +export interface UpdateMyBirthDateRequest { + birthDate: string; +} + +export interface UpdateRelationshipStartDateRequest { + relationshipStartDate: string; +} + +export interface UpdateMilitaryDateRequest { + militaryStartDate: string; + militaryEndDate: string; +} + +export interface UpdateResponse { + result: boolean; +} \ No newline at end of file diff --git a/src/entities/init_setting/index.ts b/src/entities/init_setting/index.ts new file mode 100644 index 0000000..ab16b0f --- /dev/null +++ b/src/entities/init_setting/index.ts @@ -0,0 +1,7 @@ +export * from "./service"; +export * from "./queries"; +export * from "./types"; +export * from "./mutation"; + + + diff --git a/src/entities/init_setting/mutation.ts b/src/entities/init_setting/mutation.ts new file mode 100644 index 0000000..f9cdc33 --- /dev/null +++ b/src/entities/init_setting/mutation.ts @@ -0,0 +1,23 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { RegisterAnniversaryRequest } from "./types.ts"; +import { initSettingQueries } from "./service.ts"; + +export const useInitSettingMutation = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async (data: RegisterAnniversaryRequest) => { + return await initSettingQueries.registerAnniversary(data); + }, + onSuccess: () => { + queryClient.refetchQueries({ + queryKey: ["getCoupleInfo"], + }); + queryClient.refetchQueries({ + queryKey: ["dday"], + }); + }, + onError: error => { + console.error("기념일 등록 API 에러:", error); + }, + }); +}; diff --git a/src/entities/init_setting/queries.ts b/src/entities/init_setting/queries.ts new file mode 100644 index 0000000..36bdb7a --- /dev/null +++ b/src/entities/init_setting/queries.ts @@ -0,0 +1,14 @@ +import { useQuery } from "@tanstack/react-query"; +import { initSettingQueries } from "./service"; +import { GetCoupleInfoResponse } from "./types"; + +export const useInitSettingQueries = () => { + const getCoupleInfo = useQuery({ + queryKey: ["getCoupleInfo"], + queryFn: () => initSettingQueries.getCoupleInfo(), + }); + + return { + getCoupleInfo, + }; +}; diff --git a/src/entities/init_setting/service.ts b/src/entities/init_setting/service.ts new file mode 100644 index 0000000..145da75 --- /dev/null +++ b/src/entities/init_setting/service.ts @@ -0,0 +1,14 @@ +import { RegisterAnniversaryRequest, RegisterAnniversaryResponse, GetCoupleInfoResponse } from "./types"; +import { api } from "../axios/instance"; + +export const initSettingQueries = { + registerAnniversary: async (data: RegisterAnniversaryRequest): Promise => { + const response = await api.post("/couple/anniversary", data); + return response.data; + }, + + getCoupleInfo: async (): Promise => { + const response = await api.get("/couple"); + return response.data; + }, +}; \ No newline at end of file diff --git a/src/entities/init_setting/types.ts b/src/entities/init_setting/types.ts new file mode 100644 index 0000000..6ea6603 --- /dev/null +++ b/src/entities/init_setting/types.ts @@ -0,0 +1,19 @@ +export interface RegisterAnniversaryRequest { + coupleId: number; + relationshipStartDate: string; + militaryStartDate: string; + militaryEndDate: string; + military: "ARMY" | "NAVY" | "AIR_FORCE" | "MARINE"; +} + +export interface RegisterAnniversaryResponse { + result: boolean; +} + +export interface GetCoupleInfoResponse { + result: { + coupleId: number; + military: "ARMY" | "NAVY" | "AIR_FORCE" | "MARINE"; + isAnniversariesRegistered: boolean; + }; +} diff --git a/src/entities/iscouple/index.ts b/src/entities/iscouple/index.ts new file mode 100644 index 0000000..e798544 --- /dev/null +++ b/src/entities/iscouple/index.ts @@ -0,0 +1,6 @@ +export * from "./service"; +export * from "./queries"; +export * from "./types"; + + + diff --git a/src/entities/iscouple/queries.ts b/src/entities/iscouple/queries.ts new file mode 100644 index 0000000..a27e8e3 --- /dev/null +++ b/src/entities/iscouple/queries.ts @@ -0,0 +1,15 @@ +import { useQuery } from "@tanstack/react-query"; +import { iscoupleQueries } from "./service"; + +export const useIscouple = () => { + const checkCoupleConnect = useQuery({ + queryKey: ["checkCoupleConnect"], + queryFn: () => iscoupleQueries.checkCoupleConnect(), + retry: false, + gcTime: Infinity, + }); + + return { + checkCoupleConnect, + }; +}; diff --git a/src/entities/iscouple/service.ts b/src/entities/iscouple/service.ts new file mode 100644 index 0000000..7847b78 --- /dev/null +++ b/src/entities/iscouple/service.ts @@ -0,0 +1,9 @@ +import { CoupleConnectCheckResponse } from "./types"; +import { api } from "../axios/instance"; + +export const iscoupleQueries = { + checkCoupleConnect: async (): Promise => { + const response = await api.get("/couple/check-connect"); + return response.data; + }, +}; \ No newline at end of file diff --git a/src/entities/iscouple/types.ts b/src/entities/iscouple/types.ts new file mode 100644 index 0000000..7c67f8a --- /dev/null +++ b/src/entities/iscouple/types.ts @@ -0,0 +1,3 @@ +export interface CoupleConnectCheckResponse { + result: boolean; +} \ No newline at end of file diff --git a/src/entities/letter/index.ts b/src/entities/letter/index.ts new file mode 100644 index 0000000..f0971ca --- /dev/null +++ b/src/entities/letter/index.ts @@ -0,0 +1,5 @@ +export * from "./type"; +export * from "./query"; +export * from "./queryKey"; +export * from "./service"; +export * from "./mutation"; diff --git a/src/entities/letter/mutation.ts b/src/entities/letter/mutation.ts new file mode 100644 index 0000000..486fa29 --- /dev/null +++ b/src/entities/letter/mutation.ts @@ -0,0 +1,72 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { createLetter, deleteLetter, updateLetter } from "./service"; +import { scheduleQueryKey } from "../schedule/queryKey"; +import { letterQueryKey } from "./queryKey"; + +export const useCreateLetterMutation = (scheduleId: string) => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async (data: FormData) => await createLetter(data), + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.detail(scheduleId).queryKey, + }); + queryClient.refetchQueries({ + queryKey: letterQueryKey.list().queryKey, + }); + queryClient.invalidateQueries({ + queryKey: letterQueryKey.main().queryKey, + }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; + +export const useDeleteLetterMutation = (scheduleId: string, letterId: string) => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async () => await deleteLetter(scheduleId, letterId), + onSuccess: () => { + queryClient.refetchQueries({ + queryKey: letterQueryKey.list().queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.detail(scheduleId).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: letterQueryKey.main().queryKey, + }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; + +export const useUpdateLetterMutation = (scheduleId: string, letterId: string) => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async (data: FormData) => await updateLetter(data), + onSuccess: () => { + queryClient.refetchQueries({ + queryKey: letterQueryKey.list().queryKey, + }); + queryClient.invalidateQueries({ + queryKey: letterQueryKey.detail(scheduleId, letterId).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.detail(scheduleId).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: letterQueryKey.main().queryKey, + }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; diff --git a/src/entities/letter/query.ts b/src/entities/letter/query.ts new file mode 100644 index 0000000..a11b861 --- /dev/null +++ b/src/entities/letter/query.ts @@ -0,0 +1,31 @@ +import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; +import { letterQueryKey } from "./queryKey"; +import { getLetterList } from "./service"; + +export const useGetLetterDetail = (scheduleId: string, letterId: string) => { + return useQuery({ ...letterQueryKey.detail(scheduleId, letterId) }); +}; + +export const useGetLetterList = () => { + return useInfiniteQuery({ + queryKey: letterQueryKey.list().queryKey, + queryFn: async ({ pageParam = 1 }) => { + return getLetterList({ + page: pageParam, + size: 10, + }); + }, + initialPageParam: 1, + getNextPageParam: lastPage => { + const { isLastPage, after } = lastPage; + return isLastPage ? undefined : after; + }, + }); +}; + +export const useGetLetterListMain = (enabled: boolean) => { + return useQuery({ + ...letterQueryKey.main(), + enabled: enabled, + }); +}; diff --git a/src/entities/letter/queryKey.ts b/src/entities/letter/queryKey.ts new file mode 100644 index 0000000..f6f9f64 --- /dev/null +++ b/src/entities/letter/queryKey.ts @@ -0,0 +1,16 @@ +import { createQueryKeys } from "@lukemorales/query-key-factory"; +import { getLetterDetail, getLetterListMain } from "./service"; + +export const letterQueryKey = createQueryKeys("letter", { + detail: (scheduleId: string, letterId: string) => ({ + queryKey: [scheduleId, letterId], + queryFn: () => getLetterDetail(scheduleId, letterId), + }), + list: () => ({ + queryKey: ["all"], + }), + main: () => ({ + queryKey: ["list"], + queryFn: () => getLetterListMain(), + }), +}); diff --git a/src/entities/letter/service.ts b/src/entities/letter/service.ts new file mode 100644 index 0000000..84263b0 --- /dev/null +++ b/src/entities/letter/service.ts @@ -0,0 +1,42 @@ +import { api } from "../axios/instance"; +import { LetterDetailResponse, LetterListResponse, WriteLetterResponse, LetterListMainResponse } from "./type"; + +export const createLetter = async (data: FormData): Promise => { + const response = await api.post("/schedules/letters", data, { + headers: { + "Content-Type": "multipart/form-data", + }, + }); + return response.data; +}; + +export const getLetterDetail = async (scheduleId: string, letterId: string): Promise => { + const response = await api.get(`/schedules/${scheduleId}/letters/${letterId}`); + return response.data; +}; + +export const getLetterList = async ({ page, size }: { page: number; size: number }): Promise => { + const response = await api.get("/schedules/letters", { + params: { page: page, size: size }, + }); + return response.data; +}; + +export const deleteLetter = async (scheduleId: string, letterId: string) => { + const response = await api.delete(`/schedules/${scheduleId}/letters/${letterId}`); + return response.data; +}; + +export const updateLetter = async (data: FormData) => { + const response = await api.post("/schedules/letters", data, { + headers: { + "Content-Type": "multipart/form-data", + }, + }); + return response.data; +}; + +export const getLetterListMain = async () => { + const response = await api.get("/schedules/letters/main"); + return response.data; +}; diff --git a/src/entities/letter/type.ts b/src/entities/letter/type.ts new file mode 100644 index 0000000..03762c0 --- /dev/null +++ b/src/entities/letter/type.ts @@ -0,0 +1,65 @@ +import { Comment } from "../comment"; + +export interface Letter { + letterId: string; + scheduleId: string; + scheduleTitle?: string; + title: string; + content: string; + pictureUrl: string; + createdAt: string; + isWrittenByMe: boolean; + comments: Comment[]; +} + +export type LetterList = Omit[]; + +// API 통신에 필요한 타입 +export interface WriteLetterResponse { + result: string; +} + +export interface LetterDetailResponse { + result: { + letter: { + id: string; + title: string; + content: string; + author: string; + createdAt: string; + }; + pictures: { + id: string; + pictureUrl: string; + letterId: number; + }[]; + comments: { + id: string; + content: string; + author: string; + createdAt: string; + }[]; + }; +} + +export interface LetterListResponse { + data: LetterList; + after: number; + count: number; + isLastPage: boolean; +} + +export interface UpdateLetterRequest { + upsertLetterRequest: { + letterId: string | null; + scheduleId: string; + title: string; + content: string; + pictureUrls?: string[]; + }; + pictures?: string[]; +} + +export interface LetterListMainResponse { + result: LetterList; +} diff --git a/src/entities/main_anniversary/index.ts b/src/entities/main_anniversary/index.ts new file mode 100644 index 0000000..e798544 --- /dev/null +++ b/src/entities/main_anniversary/index.ts @@ -0,0 +1,6 @@ +export * from "./service"; +export * from "./queries"; +export * from "./types"; + + + diff --git a/src/entities/main_anniversary/queries.ts b/src/entities/main_anniversary/queries.ts new file mode 100644 index 0000000..5bfef79 --- /dev/null +++ b/src/entities/main_anniversary/queries.ts @@ -0,0 +1,20 @@ +import { useQuery } from "@tanstack/react-query"; +import { anniversaryQueries } from "./service"; + +interface UseAnniversaryOptions { + enabled?: boolean; +} + +export const useAnniversary = (options?: UseAnniversaryOptions) => { + const getDdayQuery = useQuery({ + queryKey: ["dday"], + queryFn: () => anniversaryQueries.getDday(), + enabled: options?.enabled, + staleTime: 0, + gcTime: 0, + }); + + return { + getDday: getDdayQuery, + }; +}; \ No newline at end of file diff --git a/src/entities/main_anniversary/service.ts b/src/entities/main_anniversary/service.ts new file mode 100644 index 0000000..bfa19b4 --- /dev/null +++ b/src/entities/main_anniversary/service.ts @@ -0,0 +1,9 @@ +import { DdayResponse } from "./types"; +import { api } from "../axios/instance"; + +export const anniversaryQueries = { + getDday: async (): Promise => { + const response = await api.get("/couple/d-day"); + return response.data; + }, +}; \ No newline at end of file diff --git a/src/entities/main_anniversary/types.ts b/src/entities/main_anniversary/types.ts new file mode 100644 index 0000000..916bd0a --- /dev/null +++ b/src/entities/main_anniversary/types.ts @@ -0,0 +1,7 @@ +export interface DdayResponse { + result: { + sinceLove: number; + sinceMilitaryStart: number; + militaryEndLeft: number; + }; +} \ No newline at end of file diff --git a/src/entities/main_status/index.ts b/src/entities/main_status/index.ts new file mode 100644 index 0000000..aae7c36 --- /dev/null +++ b/src/entities/main_status/index.ts @@ -0,0 +1,6 @@ +export * from "./service"; +export * from "./queries"; +export * from "./types"; +export * from "./mutation"; + + diff --git a/src/entities/main_status/mutation.ts b/src/entities/main_status/mutation.ts new file mode 100644 index 0000000..40c6e23 --- /dev/null +++ b/src/entities/main_status/mutation.ts @@ -0,0 +1,35 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { updateEmotionAndStatusMessage } from "./service"; +import type { UpdateEmotionAndStatusMessageRequest } from "./types"; + +export const useCreateEmotionStatusMutation = () => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async (data: UpdateEmotionAndStatusMessageRequest) => { + return await updateEmotionAndStatusMessage(data); + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["coupleEmotion"] }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; + +export const useUpdateEmotionStatusMutation = () => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async (data: UpdateEmotionAndStatusMessageRequest) => { + return await updateEmotionAndStatusMessage(data); + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["coupleEmotion"] }); + }, + onError: error => { + console.error("Error:", error); + }, + }); +}; diff --git a/src/entities/main_status/queries.ts b/src/entities/main_status/queries.ts new file mode 100644 index 0000000..a4adcc3 --- /dev/null +++ b/src/entities/main_status/queries.ts @@ -0,0 +1,29 @@ +import { useQuery } from "@tanstack/react-query"; +import { getCoupleEmotion, getStatusMessage } from "./service"; + +interface UseEmotionStatusQueriesOptions { + enabled?: boolean; +} + +export const useEmotionStatusQueries = (options?: UseEmotionStatusQueriesOptions) => { + const getCoupleEmotionQuery = useQuery({ + queryKey: ["coupleEmotion"], + queryFn: getCoupleEmotion, + enabled: options?.enabled, + staleTime: 0, + gcTime: 0, + }); + + const getStatusMessageQuery = useQuery({ + queryKey: ["statusMessage"], + queryFn: getStatusMessage, + enabled: options?.enabled, + staleTime: 0, + gcTime: 0, + }); + + return { + getCoupleEmotion: getCoupleEmotionQuery, + getStatusMessage: getStatusMessageQuery, + }; +}; \ No newline at end of file diff --git a/src/entities/main_status/service.ts b/src/entities/main_status/service.ts new file mode 100644 index 0000000..ec08c0e --- /dev/null +++ b/src/entities/main_status/service.ts @@ -0,0 +1,14 @@ +import { GetCoupleEmotionResponse, GetStatusMessageResponse, UpdateEmotionAndStatusMessageRequest, UpdateEmotionAndStatusMessageResponse } from "./types"; +import { api } from "../axios/instance"; + +export const getCoupleEmotion = () => { + return api.get("/couple/emotion"); +}; + +export const getStatusMessage = () => { + return api.get("/couple/status-message"); +}; + +export const updateEmotionAndStatusMessage = (data: UpdateEmotionAndStatusMessageRequest) => { + return api.post("/member/my-emotion-and-status-message", data); +}; \ No newline at end of file diff --git a/src/entities/main_status/types.ts b/src/entities/main_status/types.ts new file mode 100644 index 0000000..b22042a --- /dev/null +++ b/src/entities/main_status/types.ts @@ -0,0 +1,20 @@ +export interface GetCoupleEmotionResponse { + result: { + emotion: "MISS" | "HAPPY" | "COMMON" | "TIRED" | "SAD" | "WORRY" | "ANGRY"; + }; +} + +export interface GetStatusMessageResponse { + result: { + statusMessage: string; + }; +} + +export interface UpdateEmotionAndStatusMessageRequest { + emotion: "MISS" | "HAPPY" | "COMMON" | "TIRED" | "SAD" | "WORRY" | "ANGRY"; + statusMessage: string; +} + +export interface UpdateEmotionAndStatusMessageResponse { + result: boolean; +} \ No newline at end of file diff --git a/src/entities/mypage_info/index.ts b/src/entities/mypage_info/index.ts new file mode 100644 index 0000000..e798544 --- /dev/null +++ b/src/entities/mypage_info/index.ts @@ -0,0 +1,6 @@ +export * from "./service"; +export * from "./queries"; +export * from "./types"; + + + diff --git a/src/entities/mypage_info/queries.ts b/src/entities/mypage_info/queries.ts new file mode 100644 index 0000000..aa2588a --- /dev/null +++ b/src/entities/mypage_info/queries.ts @@ -0,0 +1,30 @@ +import { useQuery } from "@tanstack/react-query"; +import { getMyEmotion, getMyStatusMessage, getMyInfo } from "./service"; +import { MyEmotionResponse, MyStatusMessageResponse, MyInfoResponse } from "./types"; + +export const useMyEmotion = () => { + return useQuery({ + queryKey: ["myEmotion"], + queryFn: getMyEmotion, + retry: false, + gcTime: Infinity, + }); +}; + +export const useMyStatusMessage = () => { + return useQuery({ + queryKey: ["myStatusMessage"], + queryFn: getMyStatusMessage, + retry: false, + gcTime: Infinity, + }); +}; + +export const useMyInfo = () => { + return useQuery({ + queryKey: ["myInfo"], + queryFn: getMyInfo, + retry: false, + gcTime: Infinity, + }); +}; \ No newline at end of file diff --git a/src/entities/mypage_info/service.ts b/src/entities/mypage_info/service.ts new file mode 100644 index 0000000..53eb513 --- /dev/null +++ b/src/entities/mypage_info/service.ts @@ -0,0 +1,17 @@ +import { api } from "../axios/instance"; +import { MyEmotionResponse, MyStatusMessageResponse, MyInfoResponse } from "./types"; + +export const getMyEmotion = async (): Promise => { + const { data } = await api.get("/member/my-emotion"); + return data; +}; + +export const getMyStatusMessage = async (): Promise => { + const { data } = await api.get("/member/my-status-message"); + return data; +}; + +export const getMyInfo = async (): Promise => { + const { data } = await api.get("/member/my-info"); + return data; +}; \ No newline at end of file diff --git a/src/entities/mypage_info/types.ts b/src/entities/mypage_info/types.ts new file mode 100644 index 0000000..abd2fd1 --- /dev/null +++ b/src/entities/mypage_info/types.ts @@ -0,0 +1,22 @@ +export type Emotion = "MISS" | "HAPPY" | "COMMON" | "TIRED" | "SAD" | "WORRY" | "ANGRY"; + + +export interface MyEmotionResponse { + result: { + emotion: Emotion; + }; +} + +export interface MyStatusMessageResponse { + result: { + statusMessage: string; + }; +} + +export interface MyInfoResponse { + result: { + nickname: string; + isCouple: boolean; + role: "MEMBER" | "GUEST"; + }; +} \ No newline at end of file diff --git a/src/entities/onboarding/index.ts b/src/entities/onboarding/index.ts new file mode 100644 index 0000000..c0ae70a --- /dev/null +++ b/src/entities/onboarding/index.ts @@ -0,0 +1,3 @@ +export * from "./service"; +export * from "./types"; +export * from "./mutation"; diff --git a/src/entities/onboarding/mutation.ts b/src/entities/onboarding/mutation.ts new file mode 100644 index 0000000..2d6d92d --- /dev/null +++ b/src/entities/onboarding/mutation.ts @@ -0,0 +1,16 @@ +import { useMutation } from "@tanstack/react-query"; +import { OnboardingRequest } from "./types"; +import { onboardingQueries } from "./service"; + +export const useOnboarding = () => { + const postOnboarding = useMutation({ + mutationFn: (data: OnboardingRequest) => onboardingQueries.postOnboarding(data), + onError: (error) => { + console.error("온보딩 API 에러:", error); + }, + }); + + return { + postOnboarding, + }; +}; \ No newline at end of file diff --git a/src/entities/onboarding/service.ts b/src/entities/onboarding/service.ts new file mode 100644 index 0000000..c99c0e2 --- /dev/null +++ b/src/entities/onboarding/service.ts @@ -0,0 +1,26 @@ +import { OnboardingRequest, OnboardingResponse } from "./types"; +import { api } from "../axios/instance"; + +function parseKoreanDateString(dateStr: string): string { + return dateStr + .replace("년", "-") + .replace("월", "-") + .replace("일", "") + .replace(/\s/g, "") + .replace(/-+/g, "-"); +} + +export const onboardingQueries = { + postOnboarding: async (data: OnboardingRequest): Promise => { + let birthDate = data.birthDate; + if (birthDate.includes("년")) { + birthDate = parseKoreanDateString(birthDate); + } + const formattedData = { + ...data, + birthDate: new Date(birthDate).toISOString().slice(0, 10), + }; + const response = await api.post("/member/onboarding", formattedData); + return response.data; + }, +}; \ No newline at end of file diff --git a/src/entities/onboarding/types.ts b/src/entities/onboarding/types.ts new file mode 100644 index 0000000..c0a0f48 --- /dev/null +++ b/src/entities/onboarding/types.ts @@ -0,0 +1,13 @@ +export interface OnboardingRequest { + nickname: string; + birthDate: string; + fcmToken: string; + isNotification: boolean; +} + +export interface OnboardingResponse { + // API 응답 타입 정의 + success: boolean; + data?: any; + message?: string; +} \ No newline at end of file diff --git a/src/entities/push_alarm/index.ts b/src/entities/push_alarm/index.ts new file mode 100644 index 0000000..dc574ad --- /dev/null +++ b/src/entities/push_alarm/index.ts @@ -0,0 +1,5 @@ +export * from "./service"; +export * from "./types"; +export * from "./mutation"; +export * from "./queries"; +export * from "./queryKey"; diff --git a/src/entities/push_alarm/mutation.ts b/src/entities/push_alarm/mutation.ts new file mode 100644 index 0000000..c3ad68c --- /dev/null +++ b/src/entities/push_alarm/mutation.ts @@ -0,0 +1,17 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { updateMyNotification } from "./service"; +import type { UpdateNotificationRequest } from "./types"; + +export const useNotificationMutation = () => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async (data: UpdateNotificationRequest) => { + return await updateMyNotification(data); + }, + + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["myNotification"] }); + }, + }); +}; diff --git a/src/entities/push_alarm/queries.ts b/src/entities/push_alarm/queries.ts new file mode 100644 index 0000000..bc88811 --- /dev/null +++ b/src/entities/push_alarm/queries.ts @@ -0,0 +1,11 @@ +import { useQuery } from "@tanstack/react-query"; +import { notificationQueryKey } from "./queryKey"; + +export const useNotificationQuery = () => { + return useQuery({ + ...notificationQueryKey.my(), + refetchInterval: 1000 * 60, + staleTime: 0, + gcTime: 0, + }); +}; diff --git a/src/entities/push_alarm/queryKey.ts b/src/entities/push_alarm/queryKey.ts new file mode 100644 index 0000000..5ec50a2 --- /dev/null +++ b/src/entities/push_alarm/queryKey.ts @@ -0,0 +1,9 @@ +import { createQueryKeys } from "@lukemorales/query-key-factory"; +import { getMyNotification } from "./service"; + +export const notificationQueryKey = createQueryKeys("notification", { + my: () => ({ + queryKey: ["myNotification"], + queryFn: () => getMyNotification(), + }), +}); diff --git a/src/entities/push_alarm/service.ts b/src/entities/push_alarm/service.ts new file mode 100644 index 0000000..3a2dab5 --- /dev/null +++ b/src/entities/push_alarm/service.ts @@ -0,0 +1,14 @@ +import { NotificationResponse, UpdateNotificationRequest, UpdateNotificationResponse } from "./types"; +import { api } from "../axios/instance"; + +export const getMyNotification = async (): Promise => { + const response = await api.get("/member/my-notification"); + return response.data; +}; + +export const updateMyNotification = async ( + data: UpdateNotificationRequest +): Promise => { + const response = await api.post("/member/my-notification", data); + return response.data; +}; \ No newline at end of file diff --git a/src/entities/push_alarm/types.ts b/src/entities/push_alarm/types.ts new file mode 100644 index 0000000..b05b408 --- /dev/null +++ b/src/entities/push_alarm/types.ts @@ -0,0 +1,17 @@ +export interface NotificationPolicy { + dday: boolean; + partnerStatus: boolean; +} + +export interface NotificationResponse { + result: NotificationPolicy; +} + +export interface UpdateNotificationRequest { + dday: boolean; + partnerStatus: boolean; +} + +export interface UpdateNotificationResponse { + result: boolean; +} \ No newline at end of file diff --git a/src/entities/schedule/index.ts b/src/entities/schedule/index.ts new file mode 100644 index 0000000..018095d --- /dev/null +++ b/src/entities/schedule/index.ts @@ -0,0 +1,6 @@ +export * from "./type"; +export * from "./store"; +export * from "./mutation"; +export * from "./query"; +export * from "./queryKey"; +export * from "./service"; diff --git a/src/entities/schedule/mutation.ts b/src/entities/schedule/mutation.ts new file mode 100644 index 0000000..0c07b7f --- /dev/null +++ b/src/entities/schedule/mutation.ts @@ -0,0 +1,89 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { createSchedule, deleteSchedule, updateSchedule } from "./service"; +import { ScheduleRequst } from "./type"; +import { scheduleQueryKey } from "./queryKey"; + +// 일정 생성 훅 +export const useCreateScheduleMutation = (data: ScheduleRequst) => { + const queryClient = useQueryClient(); + + const startDate = new Date(data.startDate); + const endDate = new Date(data.endDate); + + return useMutation({ + mutationFn: () => createSchedule(data), + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.calendar(startDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.list(startDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.list(endDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.week().queryKey, + }); + }, + onError: error => { + console.error("Error creating schedule:", error); + }, + }); +}; + +export const useDeleteScheduleMutation = (scheduleId: string, data: ScheduleRequst) => { + const queryClient = useQueryClient(); + + const startDate = new Date(data.startDate); + const endDate = new Date(data.endDate); + + return useMutation({ + mutationFn: () => deleteSchedule(scheduleId), + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.calendar(startDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.list(startDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.list(endDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.week().queryKey, + }); + }, + onError: error => { + console.error("Error creating schedule:", error); + }, + }); +}; + +export const useUpdateScheduleMutation = (data: ScheduleRequst) => { + const queryClient = useQueryClient(); + + const startDate = new Date(data.startDate); + const endDate = new Date(data.endDate); + + return useMutation({ + mutationFn: () => updateSchedule(data), + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.calendar(startDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.list(startDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.list(endDate).queryKey, + }); + queryClient.invalidateQueries({ + queryKey: scheduleQueryKey.week().queryKey, + }); + }, + onError: error => { + console.error("Error updating schedule:", error); + }, + }); +}; diff --git a/src/entities/schedule/query.ts b/src/entities/schedule/query.ts new file mode 100644 index 0000000..822fa95 --- /dev/null +++ b/src/entities/schedule/query.ts @@ -0,0 +1,18 @@ +import { useQuery, useSuspenseQuery } from "@tanstack/react-query"; +import { scheduleQueryKey } from "./queryKey"; + +export const useGetCalendarSchedule = (date: Date) => { + return useSuspenseQuery(scheduleQueryKey.calendar(date)); +}; + +export const useGetScheduleList = (date: Date | null) => { + return useSuspenseQuery(scheduleQueryKey.list(date || new Date())); +}; + +export const useGetScheduleDetail = (scheduleId: string) => { + return useQuery(scheduleQueryKey.detail(scheduleId)); +}; + +export const useGetWeekSchedule = () => { + return useSuspenseQuery({ ...scheduleQueryKey.week() }); +}; diff --git a/src/entities/schedule/queryKey.ts b/src/entities/schedule/queryKey.ts new file mode 100644 index 0000000..7ab4c34 --- /dev/null +++ b/src/entities/schedule/queryKey.ts @@ -0,0 +1,21 @@ +import { createQueryKeys } from "@lukemorales/query-key-factory"; +import { getCalendarSchedule, getScheduleDetail, getScheduleList, getWeekSchedule } from "./service"; + +export const scheduleQueryKey = createQueryKeys("schedule", { + calendar: (date: Date) => ({ + queryKey: [date.getMonth()], + queryFn: () => getCalendarSchedule(date), + }), + list: (date: Date) => ({ + queryKey: [date.getMonth(), date.getDate()], + queryFn: () => getScheduleList(date), + }), + detail: (scheduleId: string) => ({ + queryKey: [scheduleId], + queryFn: () => getScheduleDetail(scheduleId), + }), + week: () => ({ + queryKey: ["main"], + queryFn: () => getWeekSchedule(), + }), +}); diff --git a/src/entities/schedule/service.ts b/src/entities/schedule/service.ts new file mode 100644 index 0000000..617306e --- /dev/null +++ b/src/entities/schedule/service.ts @@ -0,0 +1,49 @@ +import { api } from "../axios/instance"; +import { ScheduleRequst, NewScheduleResponse, ScheduleListResponse, ScheduleDetailResponse } from "./type"; + +export const createSchedule = async (data: ScheduleRequst): Promise => { + const response = await api.post("/schedules", data); + return response.data; +}; + +export const getCalendarSchedule = async (date: Date): Promise => { + const year = date.getFullYear(); + const month = date.getMonth() + 1; + + const response = await api.get(`/schedules?year=${year}&month=${month}`); + return response.data; +}; + +export const getScheduleList = async (date: Date): Promise => { + const formattedDate = date + .toLocaleDateString("ko-KR", { + year: "numeric", + month: "2-digit", + day: "2-digit", + }) + .replace(/\. /g, "-") + .replace(".", ""); + + const response = await api.get(`/schedules/date?date=${formattedDate}`); + return response.data; +}; + +export const getScheduleDetail = async (scheduleId: string): Promise => { + const response = await api.get(`/schedules/detail/${scheduleId}`); + return response.data; +}; + +export const getWeekSchedule = async (): Promise => { + const response = await api.get("/schedules/week"); + return response.data; +}; + +export const deleteSchedule = async (scheduleId: string): Promise => { + const response = await api.delete(`/schedules/${scheduleId}`); + return response.data; +}; + +export const updateSchedule = async (data: ScheduleRequst): Promise => { + const response = await api.post("/schedules", data); + return response.data; +}; diff --git a/src/entities/schedule/store.ts b/src/entities/schedule/store.ts new file mode 100644 index 0000000..5e3181d --- /dev/null +++ b/src/entities/schedule/store.ts @@ -0,0 +1,35 @@ +import { create } from "zustand"; +import { InitialSchedule, ScheduleStore } from "./type"; + +const initialSchedule: InitialSchedule = { + id: null, + title: "", + startDate: "", + endDate: "", + fatigue: "", + isAllDay: false, +}; + +export const useScheduleStore = create(set => ({ + schedule: initialSchedule, + setTitle: title => set(state => ({ schedule: { ...state.schedule, title } })), + setStartDate: date => set(state => ({ schedule: { ...state.schedule, startDate: date } })), + setEndDate: date => set(state => ({ schedule: { ...state.schedule, endDate: date } })), + setFatigue: fatigue => set(state => ({ schedule: { ...state.schedule, fatigue } })), + setIsAllDay: isAllDay => set(state => ({ schedule: { ...state.schedule, isAllDay } })), + reset: () => set({ schedule: initialSchedule }), +})); + +interface SelectedDateState { + selectedMonth: Date; + selectedDay: Date; + setSelectedMonth: (date: Date) => void; + setSelectedDay: (date: Date) => void; +} + +export const useSelectedDateStore = create(set => ({ + selectedMonth: new Date(), + selectedDay: new Date(), + setSelectedMonth: date => set({ selectedMonth: date }), + setSelectedDay: date => set({ selectedDay: date }), +})); diff --git a/src/entities/schedule/type.ts b/src/entities/schedule/type.ts new file mode 100644 index 0000000..45548e5 --- /dev/null +++ b/src/entities/schedule/type.ts @@ -0,0 +1,74 @@ +import { Dday } from "@/entities/d-day"; +import { Letter } from "../letter"; + +export enum Fatigue { + VERY_TIRED = "VERY_TIRED", + TIRED = "TIRED", + GOOD = "GOOD", +} + +export interface Schedule { + id: number; + title: string; + fatigue: Fatigue; + startDate: string; + endDate: string; + isAllDay: boolean; + letter: Omit[]; +} + +export interface CalendarSchedule { + schedule: Omit[]; +} + +// API 통신에서 쓰는 타입들 +export interface ScheduleRequst { + id?: number | null; + title: string; + startDate: string; + endDate: string; + fatigue: Fatigue | string; + isAllDay: boolean; +} + +export interface ScheduleListResponse { + result: { + schedules: Omit[]; + anniversaries: Omit; + }; +} + +export interface NewScheduleResponse { + result: boolean; +} + +export interface ScheduleDetailResponse { + result: { + id: number; + title: string; + fatigue: Fatigue; + startDate: string; + endDate: string; + letters: Omit[]; + }; +} + +// 전역 상태에서 쓰는 타입들 +export interface InitialSchedule { + id: number | null; + title: string; + startDate: string; + endDate: string; + fatigue: Fatigue | string; + isAllDay: boolean; +} + +export interface ScheduleStore { + schedule: InitialSchedule; + setTitle: (title: string) => void; + setStartDate: (date: string) => void; + setEndDate: (date: string) => void; + setFatigue: (fatigue: Fatigue) => void; + setIsAllDay: (value: boolean) => void; + reset: () => void; +} diff --git a/src/entities/types/emotion.ts b/src/entities/types/emotion.ts new file mode 100644 index 0000000..0d8f943 --- /dev/null +++ b/src/entities/types/emotion.ts @@ -0,0 +1,103 @@ +import { ComponentType } from "react"; + +export type EmotionType = "angry" | "worry" | "common" | "happy" | "miss" | "sad" | "tired"; + +export type EmotionStatus = "default" | "focus" | "inactive" | "base"; + +export interface EmotionItem { + type: EmotionType; + label: string; +} + +export type EmotionImageType = { + [key in EmotionType]: { + [status in EmotionStatus]: ComponentType>; + }; +}; + +// 이미지 import +import angryDefault from "@/assets/images/character/default_angry.svg?react"; +import angryFocus from "@/assets/images/character/focus_angry.svg?react"; +import angryInactive from "@/assets/images/character/inactive_angry.svg?react"; +import worryDefault from "@/assets/images/character/default_worry.svg?react"; +import worryFocus from "@/assets/images/character/focus_worry.svg?react"; +import worryInactive from "@/assets/images/character/inactive_worry.svg?react"; +import happyDefault from "@/assets/images/character/default_happy.svg?react"; +import happyFocus from "@/assets/images/character/focus_happy.svg?react"; +import happyInactive from "@/assets/images/character/inactive_happy.svg?react"; +import missDefault from "@/assets/images/character/default_miss.svg?react"; +import missFocus from "@/assets/images/character/focus_miss.svg?react"; +import missInactive from "@/assets/images/character/inactive_miss.svg?react"; +import commonDefault from "@/assets/images/character/default_common.svg?react"; +import commonFocus from "@/assets/images/character/focus_common.svg?react"; +import commonInactive from "@/assets/images/character/inactive_common.svg?react"; +import sadDefault from "@/assets/images/character/default_sad.svg?react"; +import sadFocus from "@/assets/images/character/focus_sad.svg?react"; +import sadInactive from "@/assets/images/character/inactive_sad.svg?react"; +import tiredDefault from "@/assets/images/character/default_tired.svg?react"; +import tiredFocus from "@/assets/images/character/focus_tired.svg?react"; +import tiredInactive from "@/assets/images/character/inactive_tired.svg?react"; + +// 기본 이미지 import +import angry from "@/assets/images/character/angry.svg?react"; +import worry from "@/assets/images/character/worry.svg?react"; +import happy from "@/assets/images/character/happy.svg?react"; +import miss from "@/assets/images/character/miss.svg?react"; +import common from "@/assets/images/character/common.svg?react"; +import sad from "@/assets/images/character/sad.svg?react"; +import tired from "@/assets/images/character/tired.svg?react"; + +export const EMOTION_IMAGES: EmotionImageType = { + angry: { + default: angryDefault, + focus: angryFocus, + inactive: angryInactive, + base: angry, + }, + worry: { + default: worryDefault, + focus: worryFocus, + inactive: worryInactive, + base: worry, + }, + happy: { + default: happyDefault, + focus: happyFocus, + inactive: happyInactive, + base: happy, + }, + miss: { + default: missDefault, + focus: missFocus, + inactive: missInactive, + base: miss, + }, + common: { + default: commonDefault, + focus: commonFocus, + inactive: commonInactive, + base: common, + }, + sad: { + default: sadDefault, + focus: sadFocus, + inactive: sadInactive, + base: sad, + }, + tired: { + default: tiredDefault, + focus: tiredFocus, + inactive: tiredInactive, + base: tired, + }, +}; + +export const EMOTION_TO_ICON: Record = { + ANGRY: "angry", + WORRY: "worry", + COMMON: "common", + HAPPY: "happy", + MISS: "miss", + SAD: "sad", + TIRED: "tired" +}; diff --git a/src/features/d-day/hooks/index.ts b/src/features/d-day/hooks/index.ts new file mode 100644 index 0000000..39cc7b7 --- /dev/null +++ b/src/features/d-day/hooks/index.ts @@ -0,0 +1,2 @@ +export * from "./useNewDdayForm"; +export * from "./useInitializeDdayFormFromCache"; diff --git a/src/features/d-day/hooks/useInitializeDdayFormFromCache.ts b/src/features/d-day/hooks/useInitializeDdayFormFromCache.ts new file mode 100644 index 0000000..b607d46 --- /dev/null +++ b/src/features/d-day/hooks/useInitializeDdayFormFromCache.ts @@ -0,0 +1,49 @@ +import { useQueryClient } from "@tanstack/react-query"; +import { useEffect } from "react"; +import { InitialDday } from "../model"; +import type { Dday } from "@/entities/d-day"; + +const updateDdayFields = ( + dday: Dday, + updateField: (key: K, value: InitialDday[K]) => void +) => { + const fields: Array = ["id", "title", "date", "emoji"]; + const values = { + id: dday.id, + title: dday.title, + date: dday.anniversaryDate, + emoji: dday.emoji, + }; + + fields.forEach(field => updateField(field, values[field])); +}; + +export const useInitializeDdayFormFromCache = ( + id: string, + updateField: (key: K, value: InitialDday[K]) => void, + location: string +) => { + const queryClient = useQueryClient(); + + useEffect(() => { + if (location === "/") { + const cachedData = queryClient.getQueryData<{ result: Dday[] }>(["dday", "main", "top3"]); + if (!cachedData) return; + + const dday = cachedData.result.find((d: Dday) => String(d.id) === String(id)); + if (dday) { + updateDdayFields(dday, updateField); + } + } + if (location === "/calendar/dday") { + const cachedData = queryClient.getQueryData<{ pages: any[] }>(["dday", "list", "all"]); + if (!cachedData) return; + + const allDdays = cachedData.pages.flatMap((page: any) => page.data); + const dday = allDdays.find((d: any) => String(d.id) === String(id)); + if (dday) { + updateDdayFields(dday, updateField); + } + } + }, [id, queryClient, updateField, location]); +}; diff --git a/src/features/d-day/hooks/useNewDdayForm.ts b/src/features/d-day/hooks/useNewDdayForm.ts new file mode 100644 index 0000000..63339a5 --- /dev/null +++ b/src/features/d-day/hooks/useNewDdayForm.ts @@ -0,0 +1,32 @@ +import { useState, useMemo, useCallback } from "react"; +import { Emoji } from "@/entities/d-day"; +import { InitialDday } from "../model"; + +export function useNewDdayForm() { + const initialState: InitialDday = { + id: null, + title: "", + date: "", + emoji: Emoji.HEART, + }; + + const [newDdayState, setNewDdayState] = useState(initialState); + + const isFormValid = useMemo(() => { + return newDdayState.title.trim() !== "" && newDdayState.date !== ""; + }, [newDdayState.title, newDdayState.date]); + + const handleChange = useCallback((field: K, value: InitialDday[K]) => { + setNewDdayState(prev => ({ + ...prev, + [field]: value, + })); + }, []); + + return { + newDdayState, + setNewDdayState, + isFormValid, + handleChange, + }; +} diff --git a/src/features/d-day/index.ts b/src/features/d-day/index.ts new file mode 100644 index 0000000..81f8d9f --- /dev/null +++ b/src/features/d-day/index.ts @@ -0,0 +1,2 @@ +export * from "./hooks"; +export * from "./ui"; diff --git a/src/features/d-day/model/index.ts b/src/features/d-day/model/index.ts new file mode 100644 index 0000000..be6f715 --- /dev/null +++ b/src/features/d-day/model/index.ts @@ -0,0 +1 @@ +export * from "./state"; diff --git a/src/features/d-day/model/state.ts b/src/features/d-day/model/state.ts new file mode 100644 index 0000000..ec344c2 --- /dev/null +++ b/src/features/d-day/model/state.ts @@ -0,0 +1,8 @@ +import { Emoji } from "@/entities/d-day"; + +export interface InitialDday { + id: string | null; + title: string; + date: string; + emoji: Emoji; +} diff --git a/src/features/d-day/ui/DdayCard.tsx b/src/features/d-day/ui/DdayCard.tsx new file mode 100644 index 0000000..3f50d9b --- /dev/null +++ b/src/features/d-day/ui/DdayCard.tsx @@ -0,0 +1,44 @@ +import { InfoCard } from "@/shared/ui"; +import heart from "@/assets/icons/heart.svg"; +import calendar from "@/assets/icons/calendar.svg"; +import cake from "@/assets/icons/cake.svg"; +import travel from "@/assets/icons/travel.svg"; +import { calculateDday } from "@/shared/utils"; +import type { Dday } from "@/entities/d-day"; +import { useLocation, useNavigate } from "react-router"; + +interface DdayCardProps extends Dday { + className?: string; + onClick?: () => void; +} + +const emojiIconMap: Record = { + HEART: heart, + CALENDAR: calendar, + CAKE: cake, + TRAVEL: travel, +}; + +export const DdayCard = (props: DdayCardProps) => { + const location = useLocation(); + const iconSrc = emojiIconMap[props.emoji]; + const navigate = useNavigate(); + + const goEditDdayPage = () => { + navigate(`/calendar/dday/${props.id}/edit`, { + state: { from: location.pathname }, + }); + }; + + return ( + + + {props.title} +
+ {calculateDday(props.anniversaryDate)} + {props.anniversaryDate} +
+
+
+ ); +}; diff --git a/src/features/d-day/ui/DdayDateBottomSheet.tsx b/src/features/d-day/ui/DdayDateBottomSheet.tsx new file mode 100644 index 0000000..ad647f8 --- /dev/null +++ b/src/features/d-day/ui/DdayDateBottomSheet.tsx @@ -0,0 +1,35 @@ +import { DateSelector } from "@/shared/ui"; +import { DatePickerSheet } from "@/widgets/datepicker/ui"; + +interface DdayDateBottomSheetProps { + selectedDate: string; + onDateChange: (date: string) => void; +} + +export const DdayDateBottomSheet = ({ selectedDate, onDateChange }: DdayDateBottomSheetProps) => { + const handleDateConfirm = (selectedDate: Date) => { + const current = new Date(selectedDate); + const isValidCurrent = !isNaN(current.getTime()); + + const newDate = new Date( + selectedDate.getFullYear(), + selectedDate.getMonth(), + selectedDate.getDate(), + isValidCurrent ? current.getHours() : 0, + isValidCurrent ? current.getMinutes() : 0 + ); + + const yyyy = newDate.getFullYear(); + const mm = String(newDate.getMonth() + 1).padStart(2, "0"); + const dd = String(newDate.getDate()).padStart(2, "0"); + + const formatted = `${yyyy}-${mm}-${dd}`; + onDateChange(formatted); + }; + + return ( + + + + ); +}; diff --git a/src/features/d-day/ui/EmojiSelector.tsx b/src/features/d-day/ui/EmojiSelector.tsx new file mode 100644 index 0000000..6e39006 --- /dev/null +++ b/src/features/d-day/ui/EmojiSelector.tsx @@ -0,0 +1,37 @@ +import heart from "@/assets/icons/heart.svg"; +import calendar from "@/assets/icons/calendar.svg"; +import cake from "@/assets/icons/cake.svg"; +import taravel from "@/assets/icons/travel.svg"; +import { Button } from "@/shared/ui"; +import { Emoji } from "@/entities/d-day"; + +interface EmojiSelectorProps { + selectedEmoji: Emoji; + onEmojiChange: (emoji: Emoji) => void; +} + +const icons = [ + { id: Emoji.HEART, src: heart, alt: "사랑 아이콘" }, + { id: Emoji.CALENDAR, src: calendar, alt: "일정 아이콘" }, + { id: Emoji.CAKE, src: cake, alt: "생일 아이콘" }, + { id: Emoji.TRAVEL, src: taravel, alt: "여행 아이콘" }, +]; + +export const EmojiSelector = ({ selectedEmoji, onEmojiChange }: EmojiSelectorProps) => { + return ( +
+ {icons.map(({ id, src, alt }) => ( + + ))} +
+ ); +}; diff --git a/src/features/d-day/ui/NoDdayMessage.tsx b/src/features/d-day/ui/NoDdayMessage.tsx new file mode 100644 index 0000000..44b5d39 --- /dev/null +++ b/src/features/d-day/ui/NoDdayMessage.tsx @@ -0,0 +1,26 @@ +import noDday from "@/assets/images/noDday.svg"; +import { Button } from "@/shared/ui"; +import { useNavigate } from "react-router"; + +export const NoDdayMessage = () => { + const navigate = useNavigate(); + + const goCreateDdayPage = () => { + navigate("/calendar/dday/new", { state: { from: "/calendar/dday" } }); + }; + + return ( +
+ Day 없음 +

등록된 디데이가 없네요!

+

+ 기다리는 연인을 위해 +
+ 편지를 작성해보는 건 어떨까요? +

+ +
+ ); +}; diff --git a/src/features/d-day/ui/index.ts b/src/features/d-day/ui/index.ts new file mode 100644 index 0000000..dec82c5 --- /dev/null +++ b/src/features/d-day/ui/index.ts @@ -0,0 +1,4 @@ +export * from "./DdayCard"; +export * from "./EmojiSelector"; +export * from "./NoDdayMessage"; +export * from "./DdayDateBottomSheet"; diff --git a/src/features/letter/WriteLetterBottomSheet.tsx b/src/features/letter/WriteLetterBottomSheet.tsx new file mode 100644 index 0000000..18d7450 --- /dev/null +++ b/src/features/letter/WriteLetterBottomSheet.tsx @@ -0,0 +1,293 @@ +import { useState, useRef, FormEvent } from "react"; +import { + Button, + CountInput, + Drawer, + DrawerContent, + DrawerHeader, + DrawerTitle, + DrawerTrigger, + Textarea, +} from "@/shared/ui"; +import { Carousel, CarouselContent, CarouselItem } from "@/shared/ui"; +import crossDeleteIcon from "@/assets/icons/crossDelete.svg"; +import { useCreateLetterMutation, useUpdateLetterMutation } from "@/entities/letter/mutation"; +import { useParams } from "react-router"; +import { useToggle } from "@/shared/hooks"; +import { formatDateKoreanWithWeekday } from "@/shared/utils"; + +interface WriteLetterBottomSheetProps { + letterId?: string; + title?: string; + content?: string; + imagesUrl?: string[]; + children?: React.ReactNode; +} + +export const WriteLetterBottomSheet = ({ + letterId, + title = "", + content = "", + imagesUrl = [], + children, +}: WriteLetterBottomSheetProps) => { + const isEdit = !!letterId; + const [editTitle, setEditTitle] = useState(title); + const [editContent, setEditContent] = useState(content); + const [isSubmitting, setIsSubmitting] = useState(false); + + // 기존 이미지 URL과 새로운 File 이미지를 함께 관리 + const [existingImages, setExistingImages] = useState(imagesUrl); + const [newImages, setNewImages] = useState([]); + const MAX_IMAGES = 3; + + const fileInputRef = useRef(null); + const { isToggle, onToggle } = useToggle(); + const { scheduleId } = useParams<{ scheduleId: string }>(); + const { mutate } = useCreateLetterMutation(scheduleId || ""); + const { mutate: updateMutate } = useUpdateLetterMutation(scheduleId || "", letterId || ""); + + const handleImageUpload = (files: FileList) => { + const totalImages = existingImages.length + newImages.length; + const remainingSlots = MAX_IMAGES - totalImages; + + if (remainingSlots <= 0) { + alert("이미지는 최대 3개까지만 등록할 수 있습니다."); + return; + } + + const additionalImages = Array.from(files).slice(0, remainingSlots); + setNewImages(prev => [...prev, ...additionalImages]); + }; + + const handleImageDelete = (index: number, type: "existing" | "new") => { + if (type === "existing") { + setExistingImages(prev => prev.filter((_, i) => i !== index)); + } else { + setNewImages(prev => prev.filter((_, i) => i !== index)); + } + }; + + const openFileDialog = () => { + fileInputRef.current?.click(); + }; + + const handleSubmit = async (event: FormEvent) => { + event.preventDefault(); + + if (isSubmitting) return; + + if (!editTitle.trim()) { + alert("제목을 입력해주세요."); + return; + } + if (!editContent.trim()) { + alert("내용을 입력해주세요."); + return; + } + + setIsSubmitting(true); + + const upsertLetterRequest = { + letterId: isEdit ? letterId : null, + scheduleId: scheduleId || "", + title: editTitle, + content: editContent, + pictureUrls: existingImages, + }; + + const finalFormData = new FormData(); + finalFormData.append( + "upsertLetterRequest", + new Blob([JSON.stringify(upsertLetterRequest)], { type: "application/json" }) + ); + + // 새로 추가된 이미지들을 pictures로 추가 + newImages.forEach(file => { + finalFormData.append("pictures", file); + }); + + if (isEdit) { + const updateFormData = new FormData(); + updateFormData.append( + "upsertLetterRequest", + new Blob([JSON.stringify(upsertLetterRequest)], { type: "application/json" }) + ); + newImages.forEach(file => { + updateFormData.append("pictures", file); + }); + + updateMutate(updateFormData, { + onSuccess: () => { + alert("편지가 수정되었습니다."); + setEditTitle(""); + setEditContent(""); + setExistingImages([]); + setNewImages([]); + onToggle(); + }, + onError: error => { + console.error(error); + }, + onSettled: () => { + setIsSubmitting(false); + }, + }); + } else { + mutate(finalFormData, { + onSuccess: () => { + alert("편지가 등록되었습니다."); + setEditTitle(""); + setEditContent(""); + setExistingImages([]); + setNewImages([]); + onToggle(); + }, + onError: error => { + console.error(error); + }, + onSettled: () => { + setIsSubmitting(false); + }, + }); + } + }; + + return ( + + {children} + e.stopPropagation()}> +
e.stopPropagation()}> + + + {formatDateKoreanWithWeekday(new Date())} + + +
+
+ + setEditTitle(e.target.value)} + /> +
+ +
+ +