From e37088471498c22f1ef665b4e50ae43878d56bb6 Mon Sep 17 00:00:00 2001 From: PocheonLim Date: Tue, 20 May 2025 02:38:38 +0900 Subject: [PATCH] feat: Create Week8 Mission1, 2 --- Week8/pocheonLim/mission1/.gitignore | 25 + Week8/pocheonLim/mission1/README.md | 54 + Week8/pocheonLim/mission1/eslint.config.js | 28 + Week8/pocheonLim/mission1/index.html | 14 + Week8/pocheonLim/mission1/package.json | 40 + Week8/pocheonLim/mission1/pnpm-lock.yaml | 2499 +++++++++++++++++ .../mission1/public/images/google.png | Bin 0 -> 87916 bytes .../pocheonLim/mission1/public/images/lp.png | Bin 0 -> 58594 bytes .../mission1/public/images/user.png | Bin 0 -> 16826 bytes .../{.gitkeep => mission1/src/App.css} | 0 Week8/pocheonLim/mission1/src/App.tsx | 70 + Week8/pocheonLim/mission1/src/apis/auth.ts | 196 ++ Week8/pocheonLim/mission1/src/apis/lp.ts | 200 ++ Week8/pocheonLim/mission1/src/apis/upload.ts | 10 + .../mission1/src/components/FabButton.tsx | 27 + .../mission1/src/components/LpCreateModal.tsx | 147 + .../src/components/auth/ProtectedRoute.tsx | 18 + .../src/components/comment/CommentSection.tsx | 174 ++ .../mission1/src/components/layout/Header.tsx | 66 + .../src/components/layout/Sidebar.tsx | 99 + .../mission1/src/components/lp/LpContent.tsx | 112 + .../mission1/src/components/lp/LpHeader.tsx | 60 + .../src/components/signup/CompletionStep.tsx | 40 + .../src/components/signup/EmailStep.tsx | 51 + .../src/components/signup/NicknameStep.tsx | 95 + .../src/components/signup/PasswordStep.tsx | 93 + .../components/skeleton/SkeletonComment.tsx | 11 + .../components/skeleton/SkeletonLpCard.tsx | 19 + .../mission1/src/contexts/AuthContext.tsx | 115 + .../mission1/src/contexts/SignupContext.tsx | 61 + .../src/hooks/auth/useLocalStorage.ts | 35 + .../mission1/src/hooks/auth/useLoginForm.ts | 65 + .../src/hooks/comment/useCommentManagement.ts | 78 + .../src/hooks/comment/useCommentSort.ts | 16 + .../mission1/src/hooks/comment/useComments.ts | 18 + .../src/hooks/like/useLikeManagement.ts | 30 + .../src/hooks/lp/comments/useCreateComment.ts | 35 + .../src/hooks/lp/comments/useDeleteComment.ts | 29 + .../src/hooks/lp/comments/useUpdateComment.ts | 34 + .../mission1/src/hooks/lp/likes/useAddLike.ts | 33 + .../src/hooks/lp/likes/useRemoveLike.ts | 33 + .../src/hooks/lp/mutations/useDeleteLp.ts | 20 + .../src/hooks/lp/mutations/useLpCreate.ts | 31 + .../src/hooks/lp/mutations/useLpEdit.ts | 78 + .../src/hooks/lp/mutations/useUpdateLp.ts | 21 + .../src/hooks/lp/queries/useLpDetail.ts | 22 + .../src/hooks/lp/queries/useLpList.ts | 17 + .../src/hooks/lp/queries/useLpSort.ts | 21 + .../src/hooks/profile/useProfileEdit.ts | 43 + .../src/hooks/profile/useProfileMutation.ts | 44 + .../mission1/src/hooks/utils/useDebounce.ts | 14 + .../src/hooks/utils/useImageUpload.ts | 27 + .../src/hooks/utils/useInfiniteScroll.ts | 27 + .../src/hooks/utils/useTagManagement.ts | 33 + Week8/pocheonLim/mission1/src/index.css | 1 + .../mission1/src/layouts/HomeLayout.tsx | 54 + Week8/pocheonLim/mission1/src/main.tsx | 10 + .../src/pages/GoogleLoginRidirectPage.tsx | 24 + .../mission1/src/pages/LoginPage.tsx | 84 + .../mission1/src/pages/LpDetailPage.tsx | 207 ++ .../mission1/src/pages/LpListPage.tsx | 116 + .../pocheonLim/mission1/src/pages/MyPage.tsx | 196 ++ .../mission1/src/pages/SignupPage.tsx | 102 + .../mission1/src/schemas/login.schema.ts | 4 + .../mission1/src/schemas/signup.schema.ts | 33 + Week8/pocheonLim/mission1/src/types/auth.ts | 56 + .../pocheonLim/mission1/src/types/comment.ts | 17 + .../pocheonLim/mission1/src/types/context.ts | 8 + Week8/pocheonLim/mission1/src/types/like.ts | 5 + Week8/pocheonLim/mission1/src/types/lp.ts | 30 + Week8/pocheonLim/mission1/src/types/user.ts | 18 + Week8/pocheonLim/mission1/src/vite-env.d.ts | 1 + Week8/pocheonLim/mission1/tsconfig.app.json | 26 + Week8/pocheonLim/mission1/tsconfig.json | 7 + Week8/pocheonLim/mission1/tsconfig.node.json | 24 + Week8/pocheonLim/mission1/vite.config.ts | 17 + Week8/pocheonLim/mission2/.gitignore | 25 + Week8/pocheonLim/mission2/README.md | 54 + Week8/pocheonLim/mission2/eslint.config.js | 28 + Week8/pocheonLim/mission2/index.html | 14 + Week8/pocheonLim/mission2/package.json | 40 + Week8/pocheonLim/mission2/pnpm-lock.yaml | 2499 +++++++++++++++++ .../mission2/public/images/google.png | Bin 0 -> 87916 bytes .../pocheonLim/mission2/public/images/lp.png | Bin 0 -> 58594 bytes .../mission2/public/images/user.png | Bin 0 -> 16826 bytes Week8/pocheonLim/mission2/src/App.css | 0 Week8/pocheonLim/mission2/src/App.tsx | 70 + Week8/pocheonLim/mission2/src/apis/auth.ts | 196 ++ Week8/pocheonLim/mission2/src/apis/lp.ts | 200 ++ Week8/pocheonLim/mission2/src/apis/upload.ts | 10 + .../mission2/src/components/FabButton.tsx | 27 + .../mission2/src/components/LpCreateModal.tsx | 147 + .../src/components/auth/ProtectedRoute.tsx | 18 + .../src/components/comment/CommentSection.tsx | 174 ++ .../mission2/src/components/layout/Header.tsx | 66 + .../src/components/layout/Sidebar.tsx | 99 + .../mission2/src/components/lp/LpContent.tsx | 112 + .../mission2/src/components/lp/LpHeader.tsx | 60 + .../src/components/signup/CompletionStep.tsx | 40 + .../src/components/signup/EmailStep.tsx | 51 + .../src/components/signup/NicknameStep.tsx | 95 + .../src/components/signup/PasswordStep.tsx | 93 + .../components/skeleton/SkeletonComment.tsx | 11 + .../components/skeleton/SkeletonLpCard.tsx | 19 + .../mission2/src/contexts/AuthContext.tsx | 115 + .../mission2/src/contexts/SignupContext.tsx | 61 + .../src/hooks/auth/useLocalStorage.ts | 35 + .../mission2/src/hooks/auth/useLoginForm.ts | 65 + .../src/hooks/comment/useCommentManagement.ts | 78 + .../src/hooks/comment/useCommentSort.ts | 16 + .../mission2/src/hooks/comment/useComments.ts | 18 + .../src/hooks/like/useLikeManagement.ts | 30 + .../src/hooks/lp/comments/useCreateComment.ts | 35 + .../src/hooks/lp/comments/useDeleteComment.ts | 29 + .../src/hooks/lp/comments/useUpdateComment.ts | 34 + .../mission2/src/hooks/lp/likes/useAddLike.ts | 33 + .../src/hooks/lp/likes/useRemoveLike.ts | 33 + .../src/hooks/lp/mutations/useDeleteLp.ts | 20 + .../src/hooks/lp/mutations/useLpCreate.ts | 31 + .../src/hooks/lp/mutations/useLpEdit.ts | 78 + .../src/hooks/lp/mutations/useUpdateLp.ts | 21 + .../src/hooks/lp/queries/useLpDetail.ts | 22 + .../src/hooks/lp/queries/useLpList.ts | 17 + .../src/hooks/lp/queries/useLpSort.ts | 21 + .../src/hooks/profile/useProfileEdit.ts | 43 + .../src/hooks/profile/useProfileMutation.ts | 44 + .../mission2/src/hooks/utils/useDebounce.ts | 14 + .../src/hooks/utils/useImageUpload.ts | 27 + .../src/hooks/utils/useInfiniteScroll.ts | 27 + .../src/hooks/utils/useTagManagement.ts | 33 + .../mission2/src/hooks/utils/useThrottle.ts | 24 + Week8/pocheonLim/mission2/src/index.css | 1 + .../mission2/src/layouts/HomeLayout.tsx | 54 + Week8/pocheonLim/mission2/src/main.tsx | 10 + .../src/pages/GoogleLoginRidirectPage.tsx | 24 + .../mission2/src/pages/LoginPage.tsx | 84 + .../mission2/src/pages/LpDetailPage.tsx | 207 ++ .../mission2/src/pages/LpListPage.tsx | 128 + .../pocheonLim/mission2/src/pages/MyPage.tsx | 196 ++ .../mission2/src/pages/SignupPage.tsx | 102 + .../mission2/src/schemas/login.schema.ts | 4 + .../mission2/src/schemas/signup.schema.ts | 33 + Week8/pocheonLim/mission2/src/types/auth.ts | 56 + .../pocheonLim/mission2/src/types/comment.ts | 17 + .../pocheonLim/mission2/src/types/context.ts | 8 + Week8/pocheonLim/mission2/src/types/like.ts | 5 + Week8/pocheonLim/mission2/src/types/lp.ts | 30 + Week8/pocheonLim/mission2/src/types/user.ts | 18 + Week8/pocheonLim/mission2/src/vite-env.d.ts | 1 + Week8/pocheonLim/mission2/tsconfig.app.json | 26 + Week8/pocheonLim/mission2/tsconfig.json | 7 + Week8/pocheonLim/mission2/tsconfig.node.json | 24 + Week8/pocheonLim/mission2/vite.config.ts | 17 + 153 files changed, 12372 insertions(+) create mode 100644 Week8/pocheonLim/mission1/.gitignore create mode 100644 Week8/pocheonLim/mission1/README.md create mode 100644 Week8/pocheonLim/mission1/eslint.config.js create mode 100644 Week8/pocheonLim/mission1/index.html create mode 100644 Week8/pocheonLim/mission1/package.json create mode 100644 Week8/pocheonLim/mission1/pnpm-lock.yaml create mode 100644 Week8/pocheonLim/mission1/public/images/google.png create mode 100644 Week8/pocheonLim/mission1/public/images/lp.png create mode 100644 Week8/pocheonLim/mission1/public/images/user.png rename Week8/pocheonLim/{.gitkeep => mission1/src/App.css} (100%) create mode 100644 Week8/pocheonLim/mission1/src/App.tsx create mode 100644 Week8/pocheonLim/mission1/src/apis/auth.ts create mode 100644 Week8/pocheonLim/mission1/src/apis/lp.ts create mode 100644 Week8/pocheonLim/mission1/src/apis/upload.ts create mode 100644 Week8/pocheonLim/mission1/src/components/FabButton.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/LpCreateModal.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/auth/ProtectedRoute.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/comment/CommentSection.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/layout/Header.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/layout/Sidebar.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/lp/LpContent.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/lp/LpHeader.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/signup/CompletionStep.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/signup/EmailStep.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/signup/NicknameStep.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/signup/PasswordStep.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/skeleton/SkeletonComment.tsx create mode 100644 Week8/pocheonLim/mission1/src/components/skeleton/SkeletonLpCard.tsx create mode 100644 Week8/pocheonLim/mission1/src/contexts/AuthContext.tsx create mode 100644 Week8/pocheonLim/mission1/src/contexts/SignupContext.tsx create mode 100644 Week8/pocheonLim/mission1/src/hooks/auth/useLocalStorage.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/auth/useLoginForm.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/comment/useCommentManagement.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/comment/useCommentSort.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/comment/useComments.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/like/useLikeManagement.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/comments/useCreateComment.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/comments/useDeleteComment.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/comments/useUpdateComment.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/likes/useAddLike.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/likes/useRemoveLike.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/mutations/useDeleteLp.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/mutations/useLpCreate.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/mutations/useLpEdit.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/mutations/useUpdateLp.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/queries/useLpDetail.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/queries/useLpList.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/lp/queries/useLpSort.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/profile/useProfileEdit.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/profile/useProfileMutation.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/utils/useDebounce.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/utils/useImageUpload.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/utils/useInfiniteScroll.ts create mode 100644 Week8/pocheonLim/mission1/src/hooks/utils/useTagManagement.ts create mode 100644 Week8/pocheonLim/mission1/src/index.css create mode 100644 Week8/pocheonLim/mission1/src/layouts/HomeLayout.tsx create mode 100644 Week8/pocheonLim/mission1/src/main.tsx create mode 100644 Week8/pocheonLim/mission1/src/pages/GoogleLoginRidirectPage.tsx create mode 100644 Week8/pocheonLim/mission1/src/pages/LoginPage.tsx create mode 100644 Week8/pocheonLim/mission1/src/pages/LpDetailPage.tsx create mode 100644 Week8/pocheonLim/mission1/src/pages/LpListPage.tsx create mode 100644 Week8/pocheonLim/mission1/src/pages/MyPage.tsx create mode 100644 Week8/pocheonLim/mission1/src/pages/SignupPage.tsx create mode 100644 Week8/pocheonLim/mission1/src/schemas/login.schema.ts create mode 100644 Week8/pocheonLim/mission1/src/schemas/signup.schema.ts create mode 100644 Week8/pocheonLim/mission1/src/types/auth.ts create mode 100644 Week8/pocheonLim/mission1/src/types/comment.ts create mode 100644 Week8/pocheonLim/mission1/src/types/context.ts create mode 100644 Week8/pocheonLim/mission1/src/types/like.ts create mode 100644 Week8/pocheonLim/mission1/src/types/lp.ts create mode 100644 Week8/pocheonLim/mission1/src/types/user.ts create mode 100644 Week8/pocheonLim/mission1/src/vite-env.d.ts create mode 100644 Week8/pocheonLim/mission1/tsconfig.app.json create mode 100644 Week8/pocheonLim/mission1/tsconfig.json create mode 100644 Week8/pocheonLim/mission1/tsconfig.node.json create mode 100644 Week8/pocheonLim/mission1/vite.config.ts create mode 100644 Week8/pocheonLim/mission2/.gitignore create mode 100644 Week8/pocheonLim/mission2/README.md create mode 100644 Week8/pocheonLim/mission2/eslint.config.js create mode 100644 Week8/pocheonLim/mission2/index.html create mode 100644 Week8/pocheonLim/mission2/package.json create mode 100644 Week8/pocheonLim/mission2/pnpm-lock.yaml create mode 100644 Week8/pocheonLim/mission2/public/images/google.png create mode 100644 Week8/pocheonLim/mission2/public/images/lp.png create mode 100644 Week8/pocheonLim/mission2/public/images/user.png create mode 100644 Week8/pocheonLim/mission2/src/App.css create mode 100644 Week8/pocheonLim/mission2/src/App.tsx create mode 100644 Week8/pocheonLim/mission2/src/apis/auth.ts create mode 100644 Week8/pocheonLim/mission2/src/apis/lp.ts create mode 100644 Week8/pocheonLim/mission2/src/apis/upload.ts create mode 100644 Week8/pocheonLim/mission2/src/components/FabButton.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/LpCreateModal.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/auth/ProtectedRoute.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/comment/CommentSection.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/layout/Header.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/layout/Sidebar.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/lp/LpContent.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/lp/LpHeader.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/signup/CompletionStep.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/signup/EmailStep.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/signup/NicknameStep.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/signup/PasswordStep.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/skeleton/SkeletonComment.tsx create mode 100644 Week8/pocheonLim/mission2/src/components/skeleton/SkeletonLpCard.tsx create mode 100644 Week8/pocheonLim/mission2/src/contexts/AuthContext.tsx create mode 100644 Week8/pocheonLim/mission2/src/contexts/SignupContext.tsx create mode 100644 Week8/pocheonLim/mission2/src/hooks/auth/useLocalStorage.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/auth/useLoginForm.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/comment/useCommentManagement.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/comment/useCommentSort.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/comment/useComments.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/like/useLikeManagement.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/comments/useCreateComment.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/comments/useDeleteComment.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/comments/useUpdateComment.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/likes/useAddLike.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/likes/useRemoveLike.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/mutations/useDeleteLp.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/mutations/useLpCreate.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/mutations/useLpEdit.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/mutations/useUpdateLp.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/queries/useLpDetail.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/queries/useLpList.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/lp/queries/useLpSort.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/profile/useProfileEdit.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/profile/useProfileMutation.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/utils/useDebounce.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/utils/useImageUpload.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/utils/useInfiniteScroll.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/utils/useTagManagement.ts create mode 100644 Week8/pocheonLim/mission2/src/hooks/utils/useThrottle.ts create mode 100644 Week8/pocheonLim/mission2/src/index.css create mode 100644 Week8/pocheonLim/mission2/src/layouts/HomeLayout.tsx create mode 100644 Week8/pocheonLim/mission2/src/main.tsx create mode 100644 Week8/pocheonLim/mission2/src/pages/GoogleLoginRidirectPage.tsx create mode 100644 Week8/pocheonLim/mission2/src/pages/LoginPage.tsx create mode 100644 Week8/pocheonLim/mission2/src/pages/LpDetailPage.tsx create mode 100644 Week8/pocheonLim/mission2/src/pages/LpListPage.tsx create mode 100644 Week8/pocheonLim/mission2/src/pages/MyPage.tsx create mode 100644 Week8/pocheonLim/mission2/src/pages/SignupPage.tsx create mode 100644 Week8/pocheonLim/mission2/src/schemas/login.schema.ts create mode 100644 Week8/pocheonLim/mission2/src/schemas/signup.schema.ts create mode 100644 Week8/pocheonLim/mission2/src/types/auth.ts create mode 100644 Week8/pocheonLim/mission2/src/types/comment.ts create mode 100644 Week8/pocheonLim/mission2/src/types/context.ts create mode 100644 Week8/pocheonLim/mission2/src/types/like.ts create mode 100644 Week8/pocheonLim/mission2/src/types/lp.ts create mode 100644 Week8/pocheonLim/mission2/src/types/user.ts create mode 100644 Week8/pocheonLim/mission2/src/vite-env.d.ts create mode 100644 Week8/pocheonLim/mission2/tsconfig.app.json create mode 100644 Week8/pocheonLim/mission2/tsconfig.json create mode 100644 Week8/pocheonLim/mission2/tsconfig.node.json create mode 100644 Week8/pocheonLim/mission2/vite.config.ts diff --git a/Week8/pocheonLim/mission1/.gitignore b/Week8/pocheonLim/mission1/.gitignore new file mode 100644 index 00000000..f8155a11 --- /dev/null +++ b/Week8/pocheonLim/mission1/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.env \ No newline at end of file diff --git a/Week8/pocheonLim/mission1/README.md b/Week8/pocheonLim/mission1/README.md new file mode 100644 index 00000000..da984443 --- /dev/null +++ b/Week8/pocheonLim/mission1/README.md @@ -0,0 +1,54 @@ +# 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) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/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: + +```js +export default tseslint.config({ + extends: [ + // Remove ...tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` diff --git a/Week8/pocheonLim/mission1/eslint.config.js b/Week8/pocheonLim/mission1/eslint.config.js new file mode 100644 index 00000000..092408a9 --- /dev/null +++ b/Week8/pocheonLim/mission1/eslint.config.js @@ -0,0 +1,28 @@ +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' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/Week8/pocheonLim/mission1/index.html b/Week8/pocheonLim/mission1/index.html new file mode 100644 index 00000000..1c0b0b22 --- /dev/null +++ b/Week8/pocheonLim/mission1/index.html @@ -0,0 +1,14 @@ + + + + + + + + Vite + React + TS + + +
+ + + diff --git a/Week8/pocheonLim/mission1/package.json b/Week8/pocheonLim/mission1/package.json new file mode 100644 index 00000000..a4612a82 --- /dev/null +++ b/Week8/pocheonLim/mission1/package.json @@ -0,0 +1,40 @@ +{ + "name": "mission2", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@hookform/resolvers": "^5.0.1", + "@tailwindcss/vite": "^4.1.3", + "@tanstack/react-query": "^5.75.0", + "@tanstack/react-query-devtools": "^5.75.0", + "axios": "^1.8.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-hook-form": "^7.55.0", + "react-router-dom": "^7.5.0", + "zod": "^3.24.2" + }, + "devDependencies": { + "@eslint/js": "^9.21.0", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react-swc": "^3.8.0", + "autoprefixer": "^10.4.21", + "eslint": "^9.21.0", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^15.15.0", + "postcss": "^8.5.3", + "tailwindcss": "^4.1.3", + "typescript": "~5.7.2", + "typescript-eslint": "^8.24.1", + "vite": "^6.2.0" + } +} diff --git a/Week8/pocheonLim/mission1/pnpm-lock.yaml b/Week8/pocheonLim/mission1/pnpm-lock.yaml new file mode 100644 index 00000000..015ea46a --- /dev/null +++ b/Week8/pocheonLim/mission1/pnpm-lock.yaml @@ -0,0 +1,2499 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@hookform/resolvers': + specifier: ^5.0.1 + version: 5.0.1(react-hook-form@7.56.1(react@19.1.0)) + '@tailwindcss/vite': + specifier: ^4.1.3 + version: 4.1.4(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2)) + '@tanstack/react-query': + specifier: ^5.75.0 + version: 5.75.0(react@19.1.0) + '@tanstack/react-query-devtools': + specifier: ^5.75.0 + version: 5.75.0(@tanstack/react-query@5.75.0(react@19.1.0))(react@19.1.0) + axios: + specifier: ^1.8.4 + version: 1.8.4 + react: + specifier: ^19.0.0 + version: 19.1.0 + react-dom: + specifier: ^19.0.0 + version: 19.1.0(react@19.1.0) + react-hook-form: + specifier: ^7.55.0 + version: 7.56.1(react@19.1.0) + react-router-dom: + specifier: ^7.5.0 + version: 7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + zod: + specifier: ^3.24.2 + version: 3.24.3 + devDependencies: + '@eslint/js': + specifier: ^9.21.0 + version: 9.25.1 + '@types/react': + specifier: ^19.0.10 + version: 19.1.2 + '@types/react-dom': + specifier: ^19.0.4 + version: 19.1.2(@types/react@19.1.2) + '@vitejs/plugin-react-swc': + specifier: ^3.8.0 + version: 3.9.0(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2)) + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.3) + eslint: + specifier: ^9.21.0 + version: 9.25.1(jiti@2.4.2) + eslint-plugin-react-hooks: + specifier: ^5.1.0 + version: 5.2.0(eslint@9.25.1(jiti@2.4.2)) + eslint-plugin-react-refresh: + specifier: ^0.4.19 + version: 0.4.20(eslint@9.25.1(jiti@2.4.2)) + globals: + specifier: ^15.15.0 + version: 15.15.0 + postcss: + specifier: ^8.5.3 + version: 8.5.3 + tailwindcss: + specifier: ^4.1.3 + version: 4.1.4 + typescript: + specifier: ~5.7.2 + version: 5.7.3 + typescript-eslint: + specifier: ^8.24.1 + version: 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + vite: + specifier: ^6.2.0 + version: 6.3.3(jiti@2.4.2)(lightningcss@1.29.2) + +packages: + + '@esbuild/aix-ppc64@0.25.3': + resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.3': + resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.3': + resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.3': + resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.3': + resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.3': + resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.3': + resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.3': + resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.3': + resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.3': + resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.3': + resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.3': + resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.3': + resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.3': + resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.3': + resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.3': + resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.3': + resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.3': + resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.3': + resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.3': + resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.3': + resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.25.3': + resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.3': + resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.3': + resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.3': + resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.6.1': + resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.1': + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.25.1': + resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@hookform/resolvers@5.0.1': + resolution: {integrity: sha512-u/+Jp83luQNx9AdyW2fIPGY6Y7NG68eN2ZW8FOJYL+M0i4s49+refdJdOp/A9n9HFQtQs3HIDHQvX3ZET2o7YA==} + peerDependencies: + react-hook-form: ^7.55.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} + cpu: [x64] + os: [win32] + + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + + '@swc/core-darwin-arm64@1.11.22': + resolution: {integrity: sha512-upSiFQfo1TE2QM3+KpBcp5SrOdKKjoc+oUoD1mmBDU2Wv4Bjjv16Z2I5ADvIqMV+b87AhYW+4Qu6iVrQD7j96Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.11.22': + resolution: {integrity: sha512-8PEuF/gxIMJVK21DjuCOtzdqstn2DqnxVhpAYfXEtm3WmMqLIOIZBypF/xafAozyaHws4aB/5xmz8/7rPsjavw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.11.22': + resolution: {integrity: sha512-NIPTXvqtn9e7oQHgdaxM9Z/anHoXC3Fg4ZAgw5rSGa1OlnKKupt5sdfJamNggSi+eAtyoFcyfkgqHnfe2u63HA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.11.22': + resolution: {integrity: sha512-xZ+bgS60c5r8kAeYsLNjJJhhQNkXdidQ277pUabSlu5GjR0CkQUPQ+L9hFeHf8DITEqpPBPRiAiiJsWq5eqMBg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.11.22': + resolution: {integrity: sha512-JhrP/q5VqQl2eJR0xKYIkKTPjgf8CRsAmRnjJA2PtZhfQ543YbYvUqxyXSRyBOxdyX8JwzuAxIPEAlKlT7PPuQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.11.22': + resolution: {integrity: sha512-htmAVL+U01gk9GyziVUP0UWYaUQBgrsiP7Ytf6uDffrySyn/FclUS3MDPocNydqYsOpj3OpNKPxkaHK+F+X5fg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.11.22': + resolution: {integrity: sha512-PL0VHbduWPX+ANoyOzr58jBiL2VnD0xGSFwPy7NRZ1Pr6SNWm4jw3x2u6RjLArGhS5EcWp64BSk9ZxqmTV3FEg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.11.22': + resolution: {integrity: sha512-moJvFhhTVGoMeEThtdF7hQog80Q00CS06v5uB+32VRuv+I31+4WPRyGlTWHO+oY4rReNcXut/mlDHPH7p0LdFg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.11.22': + resolution: {integrity: sha512-/jnsPJJz89F1aKHIb5ScHkwyzBciz2AjEq2m9tDvQdIdVufdJ4SpEDEN9FqsRNRLcBHjtbLs6bnboA+B+pRFXw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.11.22': + resolution: {integrity: sha512-lc93Y8Mku7LCFGqIxJ91coXZp2HeoDcFZSHCL90Wttg5xhk5xVM9uUCP+OdQsSsEixLF34h5DbT9ObzP8rAdRw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.11.22': + resolution: {integrity: sha512-mjPYbqq8XjwqSE0hEPT9CzaJDyxql97LgK4iyvYlwVSQhdN1uK0DBG4eP9PxYzCS2MUGAXB34WFLegdUj5HGpg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.21': + resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + + '@tailwindcss/node@4.1.4': + resolution: {integrity: sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==} + + '@tailwindcss/oxide-android-arm64@4.1.4': + resolution: {integrity: sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.4': + resolution: {integrity: sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.4': + resolution: {integrity: sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.4': + resolution: {integrity: sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4': + resolution: {integrity: sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.4': + resolution: {integrity: sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.4': + resolution: {integrity: sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.4': + resolution: {integrity: sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.4': + resolution: {integrity: sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.4': + resolution: {integrity: sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.4': + resolution: {integrity: sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.4': + resolution: {integrity: sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.4': + resolution: {integrity: sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.4': + resolution: {integrity: sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@tanstack/query-core@5.75.0': + resolution: {integrity: sha512-rk8KQuCdhoRkzjRVF3QxLgAfFUyS0k7+GCQjlGEpEGco+qazJ0eMH6aO1DjDjibH7/ik383nnztua3BG+lOnwg==} + + '@tanstack/query-devtools@5.74.7': + resolution: {integrity: sha512-nSNlfuGdnHf4yB0S+BoNYOE1o3oAH093weAYZolIHfS2stulyA/gWfSk/9H4ZFk5mAAHb5vNqAeJOmbdcGPEQw==} + + '@tanstack/react-query-devtools@5.75.0': + resolution: {integrity: sha512-ogTsCCONHPq8opyeU/NJZlus8+g36KnK+cybC1cs0Knr8iO/wAYgnciz+3DVNq38kRflBb0iJhHkUexp/7WfcQ==} + peerDependencies: + '@tanstack/react-query': ^5.75.0 + react: ^18 || ^19 + + '@tanstack/react-query@5.75.0': + resolution: {integrity: sha512-H+TNgxmTbzH8qQ5MT5xsZEhQ8BG1tUYduDSfeAOzroVZgd/AEjg1rRYSP/9Tl9/hPobZ7iZzV401n77kStrbKw==} + peerDependencies: + react: ^18 || ^19 + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/react-dom@19.1.2': + resolution: {integrity: sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.1.2': + resolution: {integrity: sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==} + + '@typescript-eslint/eslint-plugin@8.31.0': + resolution: {integrity: sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.31.0': + resolution: {integrity: sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.31.0': + resolution: {integrity: sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.31.0': + resolution: {integrity: sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.31.0': + resolution: {integrity: sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.31.0': + resolution: {integrity: sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.31.0': + resolution: {integrity: sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.31.0': + resolution: {integrity: sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-react-swc@3.9.0': + resolution: {integrity: sha512-jYFUSXhwMCYsh/aQTgSGLIN3Foz5wMbH9ahb0Zva//UzwZYbMiZd7oT3AU9jHT9DLswYDswsRwPU9jVF3yA48Q==} + peerDependencies: + vite: ^4 || ^5 || ^6 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001715: + resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.143: + resolution: {integrity: sha512-QqklJMOFBMqe46k8iIOwA9l2hz57V2OKMmP5eSWcUvwx+mASAsbU+wkF1pHjn9ZVSBPrsYWr4/W/95y5SwYg2g==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.3: + resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-react-hooks@5.2.0: + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.20: + resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} + peerDependencies: + eslint: '>=8.40' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.25.1: + resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + 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 + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + 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'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + 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'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@19.1.0: + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + peerDependencies: + react: ^19.1.0 + + react-hook-form@7.56.1: + resolution: {integrity: sha512-qWAVokhSpshhcEuQDSANHx3jiAEFzu2HAaaQIzi/r9FNPm1ioAvuJSD4EuZzWd7Al7nTRKcKPnBKO7sRn+zavQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-router-dom@7.5.1: + resolution: {integrity: sha512-5DPSPc7ENrt2tlKPq0FtpG80ZbqA9aIKEyqX6hSNJDlol/tr6iqCK4crqdsusmOSSotq6zDsn0y3urX9TuTNmA==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.5.1: + resolution: {integrity: sha512-/jjU3fcYNd2bwz9Q0xt5TwyiyoO8XjSEFXJY4O/lMAlkGTHWuHRAbR9Etik+lSDqMC7A7mz3UlXzgYT6Vl58sA==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react@19.1.0: + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.40.0: + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tailwindcss@4.1.4: + resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + turbo-stream@2.4.0: + resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript-eslint@8.31.0: + resolution: {integrity: sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + vite@6.3.3: + resolution: {integrity: sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod@3.24.3: + resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==} + +snapshots: + + '@esbuild/aix-ppc64@0.25.3': + optional: true + + '@esbuild/android-arm64@0.25.3': + optional: true + + '@esbuild/android-arm@0.25.3': + optional: true + + '@esbuild/android-x64@0.25.3': + optional: true + + '@esbuild/darwin-arm64@0.25.3': + optional: true + + '@esbuild/darwin-x64@0.25.3': + optional: true + + '@esbuild/freebsd-arm64@0.25.3': + optional: true + + '@esbuild/freebsd-x64@0.25.3': + optional: true + + '@esbuild/linux-arm64@0.25.3': + optional: true + + '@esbuild/linux-arm@0.25.3': + optional: true + + '@esbuild/linux-ia32@0.25.3': + optional: true + + '@esbuild/linux-loong64@0.25.3': + optional: true + + '@esbuild/linux-mips64el@0.25.3': + optional: true + + '@esbuild/linux-ppc64@0.25.3': + optional: true + + '@esbuild/linux-riscv64@0.25.3': + optional: true + + '@esbuild/linux-s390x@0.25.3': + optional: true + + '@esbuild/linux-x64@0.25.3': + optional: true + + '@esbuild/netbsd-arm64@0.25.3': + optional: true + + '@esbuild/netbsd-x64@0.25.3': + optional: true + + '@esbuild/openbsd-arm64@0.25.3': + optional: true + + '@esbuild/openbsd-x64@0.25.3': + optional: true + + '@esbuild/sunos-x64@0.25.3': + optional: true + + '@esbuild/win32-arm64@0.25.3': + optional: true + + '@esbuild/win32-ia32@0.25.3': + optional: true + + '@esbuild/win32-x64@0.25.3': + optional: true + + '@eslint-community/eslint-utils@4.6.1(eslint@9.25.1(jiti@2.4.2))': + dependencies: + eslint: 9.25.1(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.1': {} + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.25.1': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@hookform/resolvers@5.0.1(react-hook-form@7.56.1(react@19.1.0))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.56.1(react@19.1.0) + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@rollup/rollup-android-arm-eabi@4.40.0': + optional: true + + '@rollup/rollup-android-arm64@4.40.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.40.0': + optional: true + + '@rollup/rollup-darwin-x64@4.40.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.40.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.40.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.40.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.40.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.40.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.40.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.40.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.40.0': + optional: true + + '@standard-schema/utils@0.3.0': {} + + '@swc/core-darwin-arm64@1.11.22': + optional: true + + '@swc/core-darwin-x64@1.11.22': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.11.22': + optional: true + + '@swc/core-linux-arm64-gnu@1.11.22': + optional: true + + '@swc/core-linux-arm64-musl@1.11.22': + optional: true + + '@swc/core-linux-x64-gnu@1.11.22': + optional: true + + '@swc/core-linux-x64-musl@1.11.22': + optional: true + + '@swc/core-win32-arm64-msvc@1.11.22': + optional: true + + '@swc/core-win32-ia32-msvc@1.11.22': + optional: true + + '@swc/core-win32-x64-msvc@1.11.22': + optional: true + + '@swc/core@1.11.22': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.21 + optionalDependencies: + '@swc/core-darwin-arm64': 1.11.22 + '@swc/core-darwin-x64': 1.11.22 + '@swc/core-linux-arm-gnueabihf': 1.11.22 + '@swc/core-linux-arm64-gnu': 1.11.22 + '@swc/core-linux-arm64-musl': 1.11.22 + '@swc/core-linux-x64-gnu': 1.11.22 + '@swc/core-linux-x64-musl': 1.11.22 + '@swc/core-win32-arm64-msvc': 1.11.22 + '@swc/core-win32-ia32-msvc': 1.11.22 + '@swc/core-win32-x64-msvc': 1.11.22 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.21': + dependencies: + '@swc/counter': 0.1.3 + + '@tailwindcss/node@4.1.4': + dependencies: + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + tailwindcss: 4.1.4 + + '@tailwindcss/oxide-android-arm64@4.1.4': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.4': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.4': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.4': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.4': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.4': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.4': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.4': + optional: true + + '@tailwindcss/oxide@4.1.4': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.4 + '@tailwindcss/oxide-darwin-arm64': 4.1.4 + '@tailwindcss/oxide-darwin-x64': 4.1.4 + '@tailwindcss/oxide-freebsd-x64': 4.1.4 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.4 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.4 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.4 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.4 + '@tailwindcss/oxide-linux-x64-musl': 4.1.4 + '@tailwindcss/oxide-wasm32-wasi': 4.1.4 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.4 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.4 + + '@tailwindcss/vite@4.1.4(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@tailwindcss/node': 4.1.4 + '@tailwindcss/oxide': 4.1.4 + tailwindcss: 4.1.4 + vite: 6.3.3(jiti@2.4.2)(lightningcss@1.29.2) + + '@tanstack/query-core@5.75.0': {} + + '@tanstack/query-devtools@5.74.7': {} + + '@tanstack/react-query-devtools@5.75.0(@tanstack/react-query@5.75.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@tanstack/query-devtools': 5.74.7 + '@tanstack/react-query': 5.75.0(react@19.1.0) + react: 19.1.0 + + '@tanstack/react-query@5.75.0(react@19.1.0)': + dependencies: + '@tanstack/query-core': 5.75.0 + react: 19.1.0 + + '@types/estree@1.0.7': {} + + '@types/json-schema@7.0.15': {} + + '@types/react-dom@19.1.2(@types/react@19.1.2)': + dependencies: + '@types/react': 19.1.2 + + '@types/react@19.1.2': + dependencies: + csstype: 3.1.3 + + '@typescript-eslint/eslint-plugin@8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/type-utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.31.0 + eslint: 9.25.1(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.31.0 + debug: 4.4.0 + eslint: 9.25.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.31.0': + dependencies: + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/visitor-keys': 8.31.0 + + '@typescript-eslint/type-utils@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.25.1(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.31.0': {} + + '@typescript-eslint/typescript-estree@8.31.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/visitor-keys': 8.31.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.31.0 + '@typescript-eslint/types': 8.31.0 + '@typescript-eslint/typescript-estree': 8.31.0(typescript@5.7.3) + eslint: 9.25.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.31.0': + dependencies: + '@typescript-eslint/types': 8.31.0 + eslint-visitor-keys: 4.2.0 + + '@vitejs/plugin-react-swc@3.9.0(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2))': + dependencies: + '@swc/core': 1.11.22 + vite: 6.3.3(jiti@2.4.2)(lightningcss@1.29.2) + transitivePeerDependencies: + - '@swc/helpers' + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.21(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001715 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + axios@1.8.4: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001715 + electron-to-chromium: 1.5.143 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001715: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + + cookie@1.0.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.1.3: {} + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + delayed-stream@1.0.0: {} + + detect-libc@2.0.4: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.143: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.25.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.3 + '@esbuild/android-arm': 0.25.3 + '@esbuild/android-arm64': 0.25.3 + '@esbuild/android-x64': 0.25.3 + '@esbuild/darwin-arm64': 0.25.3 + '@esbuild/darwin-x64': 0.25.3 + '@esbuild/freebsd-arm64': 0.25.3 + '@esbuild/freebsd-x64': 0.25.3 + '@esbuild/linux-arm': 0.25.3 + '@esbuild/linux-arm64': 0.25.3 + '@esbuild/linux-ia32': 0.25.3 + '@esbuild/linux-loong64': 0.25.3 + '@esbuild/linux-mips64el': 0.25.3 + '@esbuild/linux-ppc64': 0.25.3 + '@esbuild/linux-riscv64': 0.25.3 + '@esbuild/linux-s390x': 0.25.3 + '@esbuild/linux-x64': 0.25.3 + '@esbuild/netbsd-arm64': 0.25.3 + '@esbuild/netbsd-x64': 0.25.3 + '@esbuild/openbsd-arm64': 0.25.3 + '@esbuild/openbsd-x64': 0.25.3 + '@esbuild/sunos-x64': 0.25.3 + '@esbuild/win32-arm64': 0.25.3 + '@esbuild/win32-ia32': 0.25.3 + '@esbuild/win32-x64': 0.25.3 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-react-hooks@5.2.0(eslint@9.25.1(jiti@2.4.2)): + dependencies: + eslint: 9.25.1(jiti@2.4.2) + + eslint-plugin-react-refresh@0.4.20(eslint@9.25.1(jiti@2.4.2)): + dependencies: + eslint: 9.25.1(jiti@2.4.2) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.25.1(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.1 + '@eslint/core': 0.13.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.25.1 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.4(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + follow-redirects@1.15.9: {} + + 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 + + fraction.js@4.3.7: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@15.15.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + ignore@5.3.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + isexe@2.0.0: {} + + jiti@2.4.2: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + 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.4 + 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 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + math-intrinsics@1.1.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.19: {} + + normalize-range@0.1.2: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + postcss-value-parser@4.2.0: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@19.1.0(react@19.1.0): + dependencies: + react: 19.1.0 + scheduler: 0.26.0 + + react-hook-form@7.56.1(react@19.1.0): + dependencies: + react: 19.1.0 + + react-router-dom@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-router: 7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + + react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + cookie: 1.0.2 + react: 19.1.0 + set-cookie-parser: 2.7.1 + turbo-stream: 2.4.0 + optionalDependencies: + react-dom: 19.1.0(react@19.1.0) + + react@19.1.0: {} + + resolve-from@4.0.0: {} + + reusify@1.1.0: {} + + rollup@4.40.0: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.26.0: {} + + semver@7.7.1: {} + + set-cookie-parser@2.7.1: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + source-map-js@1.2.1: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tailwindcss@4.1.4: {} + + tapable@2.2.1: {} + + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@2.1.0(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + + turbo-stream@2.4.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript-eslint@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.31.0(@typescript-eslint/parser@8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.31.0(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.25.1(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + typescript@5.7.3: {} + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2): + dependencies: + esbuild: 0.25.3 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.3 + rollup: 4.40.0 + tinyglobby: 0.2.13 + optionalDependencies: + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + yocto-queue@0.1.0: {} + + zod@3.24.3: {} diff --git a/Week8/pocheonLim/mission1/public/images/google.png b/Week8/pocheonLim/mission1/public/images/google.png new file mode 100644 index 0000000000000000000000000000000000000000..db9fa09ee8eae6c2c6e482f430fd8181784ca30a GIT binary patch literal 87916 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 yj_tLxx3RRhvNE%F*2fo0&ODbq1gFgYtmXY9R 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 z zHd%k*{r1EhZ+!mHyDIaH{Jd`vu~M1PVb-zMHazh8qQTFqEaTKuxz)PWOwC}&R_EU6 zxMz)oCR;{MGpo#=RIcz~;SGgV(U*@M4XeH1eFsbQXuYYXDalhm*)$v*rKM9?6qG%g zaYfY6XJFIP$!)FbR9^d4JUyfi>-DaBMWrqeyKH_<#kJKFZhphHTCw~agK0Yc zeXDxo!w%+0X1iNv*3-*F#|XIn#sla%z4R`KbBuYR3g?cd@8hP)Kvyo4{-#|+(S0?_1vzVBkkH%(Ke?+dk? ztj2Q=p+n3>c#Zaslw}{sxy#U2@B@^xnnu#q;w*B&FhZD|oF=uq*hw|FJ+WLpkY4*^ z?u@h37<~_%+QPbR-nxJ^A2Z4#{ zGiVFq5eI|ls29B`eV_`yZ^p)i%WQ=lT7HL=mOLLuGe)u!Joo%h z-p9Dv%h`#BgAFP{$HaTbM-P(k*9)6P4B|gPdhvdsQ9nAlB3vV0A+(ow>F7{Husfax z+{Qh9qcquvrjdD3UpvA1{yodd{gbi}qLwFBwTOushiLN_ge+Hv2<3@&EaNAtuIeAJ zBGwaLL@4F5a-}w; z?#DiE-&r?+Mw@VnTii!PU*|dPtL823tlEUyF+JsVpDZJ~Nk^Z1>d`+^m+Fd3|DgdIl5= z%VI)_ne~Z5Po-TO``juOzw{k2{9OEUw8sN+Z2$gc#XH1G(>pNycG+NVPziZMll3sE z#*-R_(u{C;<;EW7JukQ*a({Gg>iP_n74E#eE`xP#N+$e>YpRH4cnmTS7bc5y##HgCzD8G?D7xtx-dL*#-qHKQpmUy5NDlPp7H=X8CK6CE(A|j1riw54G^rU+vkEo;#3 zSLO|WmT9F5v%DbU)vjK%lQqWfXmnbwE@tX$PdKAXX5Gj@9$O@Sh1B`iHhTuu!d_#v zZr>H_Qw?bken0PIMAvjte$GB6!3tNH!p)>Q^tsEU$*pA(4Eg2cbbkAgjri+~Jm>9V zN(|x+JuUcbOeg^#au$UzEcgEH`zY$CWiB8$egYSD(ZOAQh~*w#`lZYn)LUSoY3E^~ ztO0-Gs+ylT$G&aamGbJ#iB*DI z4Av-hkgZs#aA`I^1#abLLY^kCObekdZOExzoix3))HU65slP^aKdzzRV1EW5g!zOB z{5ddM42|}ym$NsNm?LCU!@IaX%S7JLmvBZ$=zaM4zQX0QnUVP?+fy|%18M!5V$9K- zU{l_zCm0WDw$D_MLH5|KW(yA}K29Za29r!i7wnnB@}sVQt!uPA?@r+sw(&4ns}><4 zq3G!bi^q1ew9m$_+EZdq*yG$45@M>ML>l<3c{iHPD#IHAdIp9E(6*r}Z)k`tFWcQc z+CciO8xl9(q7DAmlk@wYBK0_lom92Y3;9kB3DI;O`GusD#P-LSIqrZ%b`Fm|O9r&R zY~OL~8M}<|+j%YU`fS4F+HrGCw#)dA-t`TI;X~|kx$m%}_*LI95%FakUwfcAm{5W* zc4zeGNVFa1`!N6Ghw90E&4m|QW@ZPJtETq#`C%DUD*h=<;F(HRH#jcDkt{f6W%-Fq zcFXAp1scEUbhAWk-1NAXe<9&;VV-nRYi_Y%BL8Xf;IhaHNB?1G2le<-)7bbel0bV6 zHeydAmhrK7L0!3n^&J&OERx!V$^UZ|m0RMf_m$A9DT zlr+0_o#vKI0?~C`Z$19d*>#&wFo^3F6ca6w_kXnj@i8&0B7FS+ykYk3W3-3<8n(av zoTihZVeg_Vord#fQ%$^gj`z=QABZCJaXw8g+3>EH!>16nEmxvxD4)Dj{X)F){k42l zAZY>I>+?9M7|k(-#OKn#5>g4CudWhqsAR}UFETxM`(hWvpB{avyPR8R>hx|8eSu4y zEu3!VNG;zAeMk{d1L$g-t>7rO_*r;E)i|!@ z@hM3%_G$uY0jmPp(XYD_-+JCN&}?H$JmAKPoxWm9e2b=Yy=3unbZIoe`oDA-qaskz zHuPA9B61Y4_bKTa^0aGr9TPru%cm~CTP>d#D&ObK-bbJfX2GJWqcWsmX1r-WG5Wp; zR_46o*`L`cEWVz38A3N?IYcLgm65`{5%SrHgyns)CwcPYHS7oTr=httb&#s59-f@`0+AT)y&PO(6oQ#94=i)NLB&l7tJQ;X;5yQ%%tTm+%+6?;qz5<4|+kG}8E|BH3k zLQ^8Aq@{*0{oqkk!+(BGBQBlZF8{WJfnMAD+Qf8|gpERrEOlUWEgB{fIlAH`(uE$dXYU(za&#kr3L1MPnt5S(nWjWPs!R}c;mO^3YghLj{4Lnszb?EiW2~QfIEr*qlM=&eI@(X)WQMRUnBzb3#Vy}mjpd^g z)7^R*T(MZeklAL)HnP=Qx4ATr zH@Cdp;agcFw6~il5U9v^>T)9q5B-mO1OU;g4IL&5@*6U8&msTrG4W1#o>IuwCJZbq zhQCeg_F0e^8Q&qhHSyb2X8zRTw=vqH{cxbkGjb?#?F@kfEH|aH%`$|YC zYWmMOg>`DQ>}f@?^aNADYCCg!B2ab5mOBagm1ZZ_nB*yDqcpX2ivjUA*>U z5_;~YGbfC3_?KDnY2)&IyCL#|L$l~iiH*?eb)n zt}*8S8rOqLCNdTHS zt8A@{c_qbGb$R7-x}WWrY-4afV#(*vdpt+v-@%V1tHK%q% zz{W&1a7Z;XK3OOQWsM4kvByl|juI}=52}!N%qWm+^>x2(u zy}f_)f3C8rhD1DCEQZ07YnMF8zp_Pra^8A$A=;4Bgc2S4H>MO{G*vMn@=$kaBU$3^ zPwtS99SIR-&z-lpvQDV>6b`du!VGeWvXXy>iAilG<_l%0a#XZekXqLOqvG1auCG&3 zHiAHqnFYd{44Hsrqxj5y{K7-o*T>DwwUnQL+AbIum!fRf#;8MKOWV>t3+G;*# zQTb>g*slGIh;q0y!D&usuYzqta>uP%Y|+N=oH&h=GKI$(&+#-@Z{Ol`#hit;b&o0k z@*Prlu<2^e@TSZV`CpdZ@^qkl!dKni29?;zvlcpV_g2{VP|lbh9R3%r^ttc1iZs6! zFL{(W)dQL!)J%fpd?o$8*ahziz7UGtyGn5@h7(Vp1?_^#3-$NHK?OTxkHQ$EUdOAC zDyO{<_ywcP?1pYSTU&FT&jGCuAiA3JT0kbY7JDV@?09FV({bFTm{IY$NKbq@w|;J1{hBrskGi%DxHQpkZ)lNzm! zA!UdmL>^bOT9rd4kwlF*W{PY=I6_dc>BD@C`J!%2U20CnHIa0 z^ckv{@Fj1w#-ZzRM-WzXfCwz^LAsdv34f9ODR-7g;OL6$cuTrIN(&cD>rm2BoUxQ# zP)-2C?)uh#ltz*);O$TPvd>Q|9I>lkPqX{ISuxWo33ab+=_(|W?;9FmVVTZH;|>f2 zCF-`eRND5!Ytz7BvJodr1|A5Yt9*HLc?T92h;-5Z{9q2h6b^LfG89wLpY9rOxskf&y3P_wc|G_otdwZSAc$51}pn6%3e)Dw(uq=z*=PE+ezEvWCm8aGLf-eX9HQvfeF5K;r~^@$q0&jlq?OsSw|(#44Jk0j%9?9J68@W#QL_r8dfV*qd~i3) zh|se0OrojLRox5^C8HICan~;1(gX}Sp)UNTQ5h>+ zS^BZ^!KQIh&iFlBp=D}+%v-W?`U$HDrNzaq2H_1~ERWw+dC{EdhTAi%XyDNDIvNwQ zsY^>b0*HJSqk0E_t&kvdd0TaV8w=aAhu(2hQ0}2Rt>ef3w-Up&pVH_s8K)NZ=EMTi zOQ=%K0IlLCn31Hc!Ms9S^f=g{ul)243VNFv0$EYtY@G_e?y8I8{u z_w$G~YdZ5|H0&i1E|_krGK!SN#Z1Y4q6}ynot^!ARgyk?zs0USNWx4)Oh`#d8fP8* zg{x225DB5m)K3{=j-j6GIfg!%EO|Z9fI0gZHqZY>!2lngF-O?>ecxL-8md%#G-TM2 zRc%BuPL3;={f!jZy1CjxysoPg`$=&IB%tuIPL4o5Cjd=DVrtBUrwkwRXf-*>%YAR>^qI#FMEo zr=_P0)wz>4y4$SwGkI>;`w|1|O!%1IS+PN|?NmQ=f97oQ`pm3bs~8&hj|YI+@sjzb zA(9zM;chJvqc1(!t?>0*#qvsTbdn{A{4ZPGgixmJe4-Wt6(8fula&oJGsxrHiZNh4pe1P-5Eu8nu{db{2uV!Fo>fFqe)s$Z$fKHaWEYSVl+1Kl0OD zHi+oddF^s6QgQCMqRGeaA?7>N^cM^#6Ka zm?C7&WqrKRJ9oM6ZuS{yi9dL|S6TOHsy-LnNdD8bq@euv%W6bps2G~~H-Ii;j+Xgt zh?`Sp1W8I}$es>VnI#55TW&CIc(3nl>aH0~H}Nv#(xaG_y^i-0N?fGg?ky30toyq# zVpfzSd;dTrk$)`e@BntX+j>~%tBf47^vU+wM0mZ^s)nRntT#P3l>P|`=VpwoQY!2- zPha1QHtGaJKx~xiwe$k_Bjn^DVXjJbuH-In9}*Ix&hN|Re5@@S?Bzp3=PdmEVBzj* zrY(b3%Ev+t4nuF~hLPm4&ugdM>zly})MovfXoAe|wRvb4AG&Q8k6-+L` zd-D|(9;;T)P3iUg<>VfSAOukVAr=~X6TCrZXu_ZN^6uo~*hzS{YW+)nRkUyp9<0p?}vm636891_ZaWtYJC@BRblu*3LD&0VVgAFFWtC`mO{&hk?|d^o9a zV~ZGPHeZyiS_ijAi@Omyp|{$B%Gg)$0*^YsQ|Spq z+xM@(s%8%561&5VWICJ$51KB|oXJc{9@2#DUsP>#)12)mF!GGdZ+}?L4sD2hoAmI2 zeS!;?k?23QIFB5ZlX^urFgDeF37O=?@H9AmrkLb!rg-P(Ig4X`paj!lc-;*;bF%99 z@`B*vgXg@wRlU7~%pxpd7f~Du388+!PeaCcfe~g;O_|NFh-H_i!J37!74|D_Shn zZib1bsxL}?`yuKpc=oY3w@LhT8sU)?jZM?8IMmS-<; z(rrEIWRHLhuWqMHpaT$m!+G+>bPzQ|v@$Z|e$C%Jz5OOWE~S0!_4RumcOGCO_-_g6 zerj`)P*9dW@+Ola1?D`uVL6yq%VDuU`MsdFF$k@3DIs&Ge=*<~S201b>6$8=e`AqD zj6HU3Y`3GO+qin=%qZx0hf#jZRa2RCW835VH+BSS=)VhUaQ{QqyrpQh;vvjV84RxG z*py?!3i>Z5{HMd1#u>9}w=qv27Y`eH*4v-CKWsu9zu4c}M*VPgw>F#CL9Kof45k5YhK7Y^K1zriv911H~xg)}2m^>s~;RWTRfFA@^a&c&uKuHU(y`5y>=8Q)6y7SDHJT`U)= z2HSRPR0+?AQl5OMml7rJ{iCT#OQF4L4QX5q1yso3!T0&sj|0bYP1aJhMMDyJ-D{-| zCG8b53`r4MfEVW5;xL|VfWLT=DdjSFQ@kedJbkGDue*W9!Os51S?aTAU)i2o3vwkV zQXMz_*T-s4^H$kLw1{6+#-sD)aP!k0AD=ted*8s8B|LHl^c7eD=_bahMh;v@6D1qN zCo6V;e>cZv&xYp-ExMkm#;f{AOvp}mI| zj39$`u3L6{wU9?1=-0PMe=HZ&&t1OfhF}@;#{(D@HzFD!Z{mW(!VPgsmONi- zly%FvZ}02Ky2W(gHE8axO%wT;e`Wltw{-fPa>cb?s);b_Eq%BoRosy^M2$@l`wi`< z60=hM=GK}b(w+TyFY%$E!DNa z6wyT)(P6ZGsD;cvP^sJNWj*pf81L+2!GjA2sm69~JVY6&xwH4++n&3692-)*4p~KE^U+M zOD4>NQ^->moV#6z8;uM31icL5Khohu#1beQYOWqHv}jY$@IU8&H zB(RgSQU~<$Ma7I~Z5I78(kJ1e-ng!$1>(?&>D9%NSop4?fvpJ*dR59zo`10&9(d>i zd?vq(DBvXfc?LvBgnkZzZ%$s-X+l+Sqi^D@927 z!+awlHBn8~k7qa4)0imx&2u~v?^;-C@5C)Gh_4nNR^;XNq_qMEHjUxB(7eVE2+K!m z$GB-Npeyn?T~lAs`@dhIN-a2tX1J0Q98=KOrIua*3A(I)4KMx6Kg$6ZW&{_@kXhAi-zw#ipCejO^xXaAbC0K|aVzAeK~t`?GlM zOQ#>qDk_@sBgy4GvuPYJUC_inw5PKh)7!!%Yu5C0SfH$5>!Q37@U#jl0~#D#4m#<3 zrtY_B*QLmx)<;zJ`hU=wgX|UEF6%oK5)Q~4*ITWff_e!L&>;)tBVMiB@`2V`-0%2Z z@yK)E}DdMOm=9V@=s?}1jeyb^FVf?gCood@~=TsVY8;K#=Lj7_5nIniW)9B z6{q2hjEqFtDKb89c(KF#z+Fm2na!GY5G0wuYu+QmZ9KwW8>alf+|ven!BWI%&icqv zEpfOjNbOKl5elS7)nzO#cj~5F?;cuSf3c{AvmK?Lq)ps1?uHPzK(43D4GVGRa!Omu*(h8d=jsRYp^!9qn~|K7^ArJbRYR zQ&?==IW3f_s*G`5W?uEF&Sy1+Te@-4x|NOzwU2O6#a}?_krm`qCes#&wqjRCSAP^x zl%flE{UcCeK3^13yP;oquiF1>=;Ny`hnRzTxuKtYmFqG+osJ+1qMr*o3KotgN$-Lm z&(9`$TUZyKfAJ9DL;DaQS0AwP_-oIm--?J+5U^3mp=8ikmVtNdUWRYJ)IJFSlG_5M(VAZHDmhn#$||olI0~ivE|scy?-SozbV#F z@UkyY5*BD#Vh_44u(ai6r3lbrW0vsQySwv}NK>Ygjbs$B^zHrSk%-LdiKEicSugQr4JNyN8^Hjk(Vi3ky zF9^M&O<;sqXW?GsxGP|Hq300Y1T4@3xvGe%b`sEOT%D$5K2vk~g{fi4R}x@OkmLO2 zvGDIIP7W2G-E>At;kQNs`8tmaoygIs#Uo$es5$nJJJr4hFna=tM_lZL3X0!TApVU! z?XvY!sx*syc6&un0$;k#9P;BGcttY6|GYqulaP>fuYF8UAz7hjd!78(2~kZ?xvMbH zYjhO&6};@GlhG?L*n!=MbwQ)o)c!SYF7?g#rvXVMzp?#s-Hm8JN!$wC!g5u3(4`3O zO8{PUH+Uerd|jCxAWlpFX6UyFjnP?BYD5pUs`ZCVhqb%ZIyn7c42F&US z1G1Ba%|RqXXKk=GaX5|Bo7X51K@3rL0R?aCW>jfHbg2`V(zaUp;Selm{ED4ggqJO? zCY_qaevPrq1V6vFG1FHhY4)@Xl%o9E5|4fRfC><8v3SNUz(=SY|sbC6WN z(e)oKhnsSQc#4pF@r7W3qfjPU&6557{{CT33s9v#rj(I5c?2G=RKNnkSmCP^!MKx| z;3h?(==7ccS;#nM?eWFF8u#l8C2!z`?t%(6kb@GzrnQN?d@mk>wzqsgb!b+*Kw2 zwPDpq(#wqNABmqb6R)(v)(6fFKyenYBMx#{#Q2hbT8rA>+VQ7We6lq#+-{!@N*QXY z!D<<@Tlx3a;}!}KNK0_z7l*W3`->l0=_zBHJr9nKv@u@!iU@SlKpF3+)0)XpxB4(ZTCM@62f%FFZf*k5ld$kB(+IRW$n(ZmKsA%A%yVx5W zy}+Jh9t&3ks6DP1?&LNxd&Rx$f;{rgl7%7!g1{?=h#&Pu=H(h|H#y}QVlrX{t`wHW zki;A;=FU{#{L2)6E3J&etY;!HmOiWgZ98-b5~%Z4QR}>eV~+m#IBq zE50ahIVS|;Js#Ymzbhnkw&|x^Y83R-w1NVF7g?f1>(gMR2EC5qPxR_t9;-lWft3W4 z++gwUPos}nC_xTd!vbmp%1~+rN~h4E=`fdvbjwtsV|qgJ9Tf0$3nOFN9TjNv4@(&w zBDHbEAUDS*++8+J4w#4I_l8A!tGOWh0@!_FeOl@1&MRR??&L+_std}#PKF@N4AIk) z9+P1G{){jA%lI>I99H$_qZ5<=s|7$auQPDmEgbgUw`S9jz+Rg{mmo z$d}2Hq&UQGbKxu~lnfcm=8t;0QYDY~tv;lWT0IjA8AThU?Hs>7E z@sO@mjER-~O>c%O+eRHli)E6`s5mhVxT|>mh>Lm}MIAZ*fvF{$lQnSxus5Ji&Eas* zv&)#7@n`v6X-`wbZKIwlj?VED)=UZScZKONbe|}7kMpn!F*Hy;D}l^*S5Uz0^n(D0 z2D0|?>tSv$NAi2+Dha=8X}kx3yl2QEY0F7y7Pg)p@kci{CVaCLGwX`&dpzUF)%AM0 zcda+9q9rZzW4{X%x?fo1>~O)WEh312z67#_o37B0_`nehIN^&+m-ntt62RS~)Ej_s zP)W<4zLvHeB%8Kegu%0M(xcEb@~BNQNG(>C zj>KL>Oa@-kBX5pC+9>h1y3??b5S}6@auCYO{d~N1o;GQ0HvLCyXV>NQ7TNAsEfUi-bmq$`$uGMJ1 z84}L_-K9nPac(#_f|MeML4A02)PcXg^Gl4(&`e#!HzGNDkEFl8?K-Qu2I0(at>eVF zkqbNz{hG47dv%H=%hM+(Y$pZp+X5~1m>>|EhkL&4uZ(^)|5l!04q&xHardauxjp}- zn~si-R3UrvadU2*xmg4y#$Chz$8oyEpa~NAkl`XWsK8C-(ej*z^yIFufuS|l>sHYP z*=@OI$7BdZ^kLQ<5gHMT?)@AfDiXy6AmzP&c1sjd>gvq~TyIwqe|*N8>-vYTnp*yH zcliE{t!9@o(CzwG+!B^BMs5I`w&KsbKI=6!w8sQ7<%i$QL65Z2Gd|L5vyusTL+p%V zZj#uhcoYLe+NdLFvD(aQ=Pe4F699q+o}BZeE&CB`L06Zsgh#3317r=i9fFyF8|oy5rS3WeXG-SM&X^FQ z(+OTQpjiDLcDfuRx6zb++wR55*Z2<%CZs&i$Q7?G687{5zWZ5hqeYi~l4|DqB^;o@ zIRuKH>Tn_mixsfyB5Y9# zd%HM!UR^tZ>Eeqt8|85X^nL=U$Ov?Lm!6;$Rb>(4^pDUS21dQzJM!96XKR9^nF|JU%Bt9xP@Ik`u+&jt7>TmUUh(Y#0% z(T)4$iOFfdN>Y-i#36nT<%n^WR|}?80;4L;yrQ{$p4v2}4EK==H1GF7c7C@n_|%E* ztlMvoTb7sS`)EG>UGGp$EOsu?@oD*qbRQ3%$d>WqIJxPn{NCkbk$_DVDIU;;Or zbIxZGDKJy2zQWx$>V7zg0B68$n4%Jq8IQS;PY!AW`~&Hi-Sx!BZr_uV3;VDGmqo?d`R46~U*lp-DHLLV_UG@F zoGQ(7p=sqc{z}K&M^8S|qxcs}60e*t_yOJv@W!SiI*wrZ494y4>fSm_tF#KAda?n$ zFlJc=PVkG-(F#Cma7JNJVY(p_0T}2qk?-lO0FX;ug7&s@9aff~NhJSg-Nj3b%7Kg} zU^A)>+{;ARkS2fpR0AJlUiU?$#=CT9tacB;=I+>7|H!L}kNG1Ph0zt`@q!t|%D_Yc zD=Ww-K?!1E!8&g~&B(LsKfynqP1)VY4dcrt41~Bzu7C7i2D#f9nmNECUGJs^S#&LK z$j>gu(OEUIKvw-R{=42BdQrG*Q-@T{&6Tl6k$RUlYx<)oFBRle8${AZaV{{t6{H_O zd6H*w_R8!d7Xuv+(@e)L1gs#iDna+X9K$Oaz$sPUmCFAYb9yRMgFY94a=<@qzaeZ( z1M*63c3Q>nzY}Wrld)g%Wt?U~o}pYip@P+}@Ea#ubMdF`U2&=(xwsyg9+$Fr$ILv8 zj^NKeO$KM-Z9f}`S+GyB`@l-(fR%*1BNFW-lyA{M09#=*1F>NW~#Nfs}tL^v`SaP=oXbC^-e0nvwoX!9S1*WsK(+e zmI?l0Zy{RDZf|dA<;rXWkm=1?I5PBV3Ip%ROX-xsPasK4gBN-#{An}tQin>jYWpME z5Hp%QUQ_g}>B((c&<({29}`*(#=01aLYMxI)YUZ|AeBD4i@)*k*g3c$4*tyh|5`fh zu&AE5jW4^@l1rB~f=CI9w1CoGU%F8#kra^7U7AIfmJ(P52`QzdOG>3fLSO+wL23c% zddJ`O@)y?y*O@bO=FB|LeSe-gEC*|~7i)DuXMllUfZhR2)CZ5#+dcsiN>C)PCzT}) zhzdl((hq#3H{aZAivGr=cY3`IXv>$$&r*j=QW^Sw)Lb&wB=M3gnAXa1L(k+VJ0$Fcm1|3VN#zMbRq`ZwZ{MOkpfIFEh4Y!u|o%Xyf z?7gd5-n8$)U+DY={nI0#GkU&vG~8;$jeedqh|C-nypL<3pH&=1(GXpO(Qot{0?!Qi z^>KVkq=Np<@#M}Juhr#J?6WpD%C676;IR%(pih8VL3-#V|CW7i6_~~7sl9fK$NmI> zht|+3Z&`4?TSj?-B-S71ncgzRa0W3ABHz|={6VTB9ofUxc#|Lvx=<<@`l6l*Og_hX zn4^pmDV(@93JA8!*H*e(1=aj6Cde@pI^NHptb^?|)O*mqoV3i@w zMATB~EWg)gRsZL%p-S20!0v+|Bd!cKLu(+ksWO&WbK#>!Uj0X~38VipmJK4@_mtFh z95neR8p`;r!N-p_*oG6(PR~$)|Izne_v6>il=%}B0w%C8FtLN0X3zcO0l&p4+-#im zx(8@SHtme*D>Hi$la9;N`5tS}E~=|S>DWJzNmo1^8P(#0e6l3ngwmJIX961#);2%)JE0ouzxmw_czVi1Ne0ELY1ADmMXbzq;G1IsM{cLaQtn)0pUAby$ zI={kv0KGlvyD0j1ACs)CE|&zM*#6vMN6^DTIVRy_UbFi#(Vc?l6*v-Fa`XAoq&+q7 z4KM@xzlgoXmb?Pf`mK}N&JK_i7biyNt(${7cczToS~)u$nqTZ6c@5fCu`T{K z7>^_jxpvHXJsd;i=pE$svagkC@sk$O=GIf^Gb^zVU?u0C;ZtGG{@aAIr{>1~znt9e zB>`RtP@WQ|z-Iy82D37K-^1<~?Rj%CvGL9`S;1e1gpBxd=bx(o?iqZEZO^8Q#{E}a zuh`&uX{R)IPI8?VnSVhQP=mD-WH1=VeXf_f>T1%}Ps|Xugp*$i#E+qa7r@aNymD1B z=WmUwefTj=k{9{4pYD3?;fIj5vO_~cj-Zv;*n?8BS(3o!AMNd*!s*l(J}-R`^ts4B zC&Al+QzC>^ptoA=VBQ@^X=E-V?lXtO?bTp?e8@D8h)4qN0&y@YT3bi&I>`3Q-^BhS zN2~SNwfwSP3|+%%gBboryQ#T3GlOsXE#C#B9x`^BCkqNE0rgTohbtT}H;qsD@pSLP zG1ncbkqN+q>3)KD*_Sikt~y^eE2uxb*HBz^yJjEIXgmV#e1-1# zZw@t<4PL)UCx2r|3dN1ALukKEEvT#cw>gTp+U$FlH21$FSHBp2d)(X+kV+-{J%+Hu zSFv+mTuU5~qr#SrNt%xsw4xXytgcNTFai`UT!A71sJ*vc)cA2@;S=HjVGI3-Cbf>@9;R$T@!t!w8=H}%hOCt*tH1Zu8}cqA zX+Udo=wU+0Kt^j!Be|I%yD0(^pm-c$dsZ{n_x@p=zDC=Nnt&@!-ESPe<0qe!_+pDr zg}{0)V4p2n;IwQGG*f;?eZxDIlTSLalg~{Srq;c@z?jL(u`;lKex^v&ww=)7l%xS^ zIeNC(r$v%u0t(C0*!l*D`MGQV`qh05-VicRRj`$O3pgX%6eCRyEpBeX$nI`>+R7{6 zl^eMHoiaA5%iDcNZ^v&~u0A#YAFJVCyxhkvq6UhKoVT7=FwzNN+M@kC#IBdVgob?P zMD^WFf*k*1S-iT*en+4^gJFZiz|T?-@$}Z3|FWYca(r@mh$lz#Yjwl0uK1%M3T+lBY&dJEFh{4ST&%>N`2`QJSNy~u_K@^ zP2PgH%0x6vZe6@xhNWE#it1IS>a^^18*NK{-LxE{Pd9Uu`9MTzIg}#{pv$YK14@4I z4#t_zRZQ=;WwZDN3G)vh3jaN<^*x=&99iiLZCZ6uU(f`W)4`GQcF-5GUAVq~MJ(kn z4c;IS5rzY+K1O!FNpa2zZ&?g#6E0$aVOnBc89^xbB|O7e*7ooSE5Bs-zT2BT24yX1f91eg~zPsQXoMU@ZowShAbZV+N- zygnfVDrFRwmX@@lfgG#M7#9m_OT16Iz989uH(Pv-p!k=afRjVpy8~owT+T?mWYsGT z?dvk6Lmj0qT3=Y~-GU|Xu%7kv(?V9uA$MVDPD{Wc{S%ktXP`I2Ze<-D`1!0Z3xd)= zZ)vp`5~h|BmV@PAS9K~fc0L)a=taY}ki_Y}E3P4fO4P*(JKawtj-750&rw@9pVNf2 z(7=(^zhFO*a4ixHCf2E^iKPE)PKlq3GNNV0Pu8`(xf|#wyScIU>0Xl6Xja)%Mz=dk82s`AkHlYW_3Fw zWeOj>RV{i@c2DnRis5jnliY~w*}3E!x(>Cu+mJ921T89hcL;UNUy^dn&tOA>%ftX}ucv}v5%iR`l0W0H+0jt*Vf4w<(Rd85!s(mYth zi@G;WAWwMwE@&iBfEIFvhUCKT{YqGLa9A3!s?7rBEf+Mlh+g&rW%bZ4RW~s+qFS9D zuRU^s+aNThO*T4zArd`^F)dJKb)WNL|xt5`xVFAm~M=ncCZSb*mau;RFd)Zfs8O$69!|1LUf zuI(J0((Yez#s~BVbfflpTjvfj9G)_SoC&XP8;myt{w-m#)5wX{OGCgJ(-+>zLx6 zulz(xm@KuOMB6^T8wEx|+RU=CRjEG3&(WC{zH4qoZ7mW1v z&8#$Zw{W81z8QQO{~6ym|69C=z7BsytibpaZ+r>R*0MPUl(<$z$f%65xDq? zR@lIb4>U6DdVek1F*HTzK)H6--&QW$b!U1&f|p!0yKITMbq8Dcl=J-=(mNt6Hh z@v0FJ2bf0$D3$TWAO*r~|6r^(K9d3^jXJ`)U4LiDHNW-4zcN2zWDCk+{37{xyk*75 z&@LdiEM5QS9(Fx}BDBLPChJo9`ZjSsH)kMBahn_hFn4FbV1uf>(|w7s#ejo4CQ#(C zm6*FsLJB0mu~f36K}$p}PEHeA(~0~d9U{(KQIx*#Om%!#3W#&?m1WAyw!~ZVNstJP z`CO#fz0KjclF1|>IEU?_wZz%DUTMKX=bt>kc>YGOon19W1O%qluD&;NWTOGJgpL2a z?)P?zLUDD+Yq~LLoiBdsJoma<)mnPwSLb!Psr<5TyY-QDM?3Ut z7{^2_FF=bNxx)~+b&7jY05$^ad)Z%m+zrZjFP;l38$^65`90Zw$v^$MK^1T?Da8YY zPiC!YQ^MO@e)-6bx*tq?)C0oqlT~BLF5w_$I!wIKa_-=Km}J>8?6(RO(L{^7BIYeK(B13CkgbFGrzWcaMd*WlH?q^#F0wcc|>t9}k6e?Cy|PgIQ``mUeT1O?B+#QEs(kLIYw@5j)>JJt-ST4I`0 zKiJK?$jSc3q&ZqBk;*(X8v=Hg96@Ul;E;d|0uuZFArXqk!5Y&zh62+BZPs&@i229w ze(kxkZisPH?y^SObcJ^B+~*SIKNhWhksP_C0#od5P3qmbnqOX~D+Swem*$K4C@xal z^^Nt#oTpgXI6V2;<%6TqH zmV$KlW;%lRpN4TIXh78RC_Ano7N`buP!$gL<>cHl(~whg*Ruy-nKp zTBW$fBLQ{^<^;$x_=JW3S~)lK!BaYKJ%n*K&ueY1-o7(omM}f9uWY%f-N2R&FGvKv zZx^0pAl!jZ5P?uD(^5RowT3Y!KJ2~$pjiP$tG2cJp2n^W^NL3i*beVAiM2XXd>YvJ7@(I~1%4k$E(jC=Of)!4JyrR50x8d2|VWY^!1w2fkiowCW zOh6akaM)aT@mO@66qo&xwID_bzQYENG}3*FI*ZE7&1CxfKBUb{_6_qvl(N(bP+)=A z?OXB78auR)!;-YY&pAl9)F`@QKnhb&zj)cxBA3V%udnmie^mml?Hn;jBj^y~)%XT% zKwTyd-Ms>suWXl;07wjn*NpaW9fVlx3FuO$mzI@wxv{i0CUCYy2UoNUjxaHvKM1i* z(9QNbq9a}VegPKPn*fO$OSLFCg_$G5dfYxbPO#k@L7VwBy0}*qfXS-Ui)5M{huHPm z^x<~q!y-Cp;2qOxWarlcvmjRidKx+oy>C=O2?_UWV!}?Ce>P>o0`l_<_viygSaZKR5zR%IJ-*ca z@RohuT+`4FkgYu`^FcMNTDU0lgR;K)`lES!Yim*pFzVE9a|%Rl)ZHYf%cJ5S0r-%x z$C9R^+DCZ07l!Zwz2`50$E|;N3cXtv`MOAGV#uG2^Z;!7g00lR1owFpW<$L-+9j@lO%BCDbOqoZda z-p;KYDsr$oKDD@w-)XQqBKsKw?xBk98x%(rb|{^j^|~i@-S>uI1>%e_LR_QEvEKe} zhLD871YW^%YjLfQoKWRs@{;fe&b!e}MQlRdIMFM$IzY zZEf2P{;Q}hn-Zef*}5);)rCcjfTkU!4I2`OLg_T9_sk(+0}{NE+f^vY03a;-R+0!T zc*j6p1*rT1Twd)b+k%RBq9gIoqntWISB{t(v`@&oNMiK$JL%vZW?n~^dQ^Mn3rtLT z8V;H=swu@uuaoFDmq>pi2OocSlo+2M)dKOB?ChTh4i9jH0}bRS=ge#HJ@W_zxQ|Y@ zFAXV3F`Djz@Ni8HoqWK+f~v3Uk|MXKKhyLg()k=DGuPcb^XnR4AAS$g>BXl0X2(z- z-^RnRBK=M@YVafoX`2Rd8%0PGLYojmn_?_@I zO*q_f30ElWH21*os}&LESoF{5y_BZ|*h1k3AQim4XxdcwQOt5FkpaC?uuu zG@j(6X`iIbluPCSkB$n4;k*sj3!3Q$EUOH34V9< zuBi$brOIT=`9A)|QRIA>qBXo0=#ckei$62cg7H_Sm&c*Rs!``gYP}POZ|aT$cH=Hr zjAAJyao(Ol%;}I+e#2Yzhoc4KmoKhkuJs+tR$MtT zNE5V>pKp8I9Hag_r7i0Lk;VuT=N?L@v%`rW@Fl0b(l2Duf5(!iahs8Cib$>5rOpJK zIP9bFX$8aLHYo|ZRjQp4A1W}iAG*%P09k$)EG`7~98+Z{4(O_ecGGG)#=@6>3NFXe ze^g0cO3FRnl`U$r%{T8iytyLC=u=MbOTTZ?F0zW#qC6(8DcvDY@J+h+4yx3oOdm)Y z$QBsJao$Q1b^jISx=y#{Pifu)Z=O-^s_}i5R@-;hH>)jg8i_IprjwPwCM&1kzw^gt z+_-)IMUT#@0D;{##l(e4-`j8zCP z-Y8<0ruuup81k)}`4t6CEENsMD_SaQ2?VC$=VQWf?s6rhS0LgW8G<5`l$hk{8glyd z+_ZkaC7%G}@#9W5WfmycnlBtJ`8j=;jg6A^fHht%N3B(>z&1e9U*P;b{Kw%ce~Z5x z)ETr}tTg|_PvugR2zlH|iYLR%;^h%d2kCKvT?B2!_Xza}EIh|)8YRK#OL^<0U+blvj{xS?5XBIMuj z@F$Eg{iOmqcws?S#?{`iJ^ux#0q2W#hntW>oQn8h6b7mfO~`MBU2NXOXRlR--jy$&EK-yXRU8 z#X0ex`F5CPREF?`kwKEKXbGuc3D5)xwUa4);w83O8XWV7Yupv_;@G#gQ@M-;|MP>1 zfTNopMhy;YI2+MYE-r^LAvsZbbH^+b<<&|UFJIgW1YrxR00%$psu zUSHzlwgU+oUdg13@yKDJN)H3(QH_)M4&9HO8OoG#Uo&!!&E`HHoJ!d@_P3%l5K34+sM`YUV#XZ>OHnmyf<}e2>7f*6E0i b^;|;xi!Cur2~s2w@S~}!r&4*}KJ5PhVsNKZ literal 0 HcmV?d00001 diff --git a/Week8/pocheonLim/mission1/public/images/user.png b/Week8/pocheonLim/mission1/public/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..6d15e9e62526ea987387257509b31beb06e18793 GIT binary patch literal 16826 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

IA?)MjP!%=gz=kK*5%-P zGP#1@`MIw2dKAE5{sQ*`Gu3Z^?saPH8Fz3u#F+xH^>W%~&nrF9(1iL9XzmhsJDC9P zp{aQx$p?`!_jzcoe|$vO@42Z#5JLre*3zyT-vmqG15848sc~L0DpmdeC=uH+8T)}uOL7~j&bD)?_NzY>ynF-H zCm*my$vl|aY+dxpYU>{L)J*tGJ#Di?mA+_DJ7JE;R0Q3ooaS|%7?r0&_N#HC8Ap>@ z$%r#{BLKs7&PROx-b3D=_yADuPOjS?4J1IlfGb%Unaf$MHig3Hpi=9$M-b`t{Bvji zOOLUgkU_BH+s&>obnYFtp_bli6!{!AUR7<9pX_CROyI@!HGo>&`uOd&+80@Y6V zpFXW)mAd{#tW??Vv0igEj=-JD>#SKs3~HE}TWC0LlU(vGvbf3|;*hf>Uu?V5seFy2 zFm4$msHsbwSaE!i*+-Z0!9+o;hnkH&ECVFnzKo#yjz^S&RF1|HMt(xx8kZAEkEBUL z`nTzkpzoX6mdKK&T~k2C2)Q3|w@vcX*Vi`F-)V$`q`n6;$1Sow<>pMeSGkq+7wTHc znIeodOh~D-He$!PTvm#;af5J$;Zh5H6fh+TiEC~DM^?kmxA~a(3nk(sxp7qv;*@ep z-JURPIiXy&pzG97z`nUG($I=V)^RWBTcMb`(+^Wrqo6TR=oKne`j?ea*Ux9Ybt0>1 zNQ#(**2~R(3nrP+q|}4b9cUhbd#0muARa7@M%H+x;MPRi4D`^NyUCFV{rgVoXEHMT z2CuzZOK~^+U41Q8{DD@=&HWqLu#f1N)|OC3T-O}}uNI6R%h>>M8dWupYUKW~Yewgp z;;gb73`K=FO5(b~p!x|m>+Oqpw#3yxq5(+*Oj)dWtfV_{L=w23x_-@VO##FqMB*dU zhHAw^v|d_nV{7Y8b@A0b02l{ukXi_Z3Bus06wurk<`%d|O)au#g!bIDp{nnAR)ZSk zx(ojUdVg0+wwt9cy2RND{%+}Mzovj2Udx77e5ogFfzCp`FuZ)X3Y#&Oo#u^MKyE~{+@@Gbum$pmD) zorE|Dk!D_?L5HOsw94c*EBlS{^W*g1gih#uIv}0>d4|=>_MLcL{|m&!(hMUlZSF_- zY*PRTiM~dIZu~hO$iU*tft`s!R`p5R$y#3(&9x z?wkS?L9$FKZVFSg!;z?!l<6d{gUx}WK6WhpNGH(v82j!i2~G)m1DsE*(%W1(lqPA? z@V3bb%^=V&Ge}5hms%1)2vK{?pCbzGpO_ObIRxg#f<~^1OzAsL8{7leyi90qm75YR zJ`VETEb(`FW9WiM;KtGvZfd(Xg3Zi+-^!L2M4Yk3O>4;#X8?L42q@428D&9lQlnQ> z*C~()%c0KLq1O+_9t22F^3o-WsNn}v%Fom;*%V%yk}60GxeYQKVY-QfDy zldElDnHw@~g6vj+r@0&ZH@HuIqvT0Y-9GfblXP!t?T?*@t0HvOzvjo+J%WBfp^H, + errorElement:

Error
, + children: [ + { + path: "", + element: , + }, + { + path: "login", + element: , + }, + { + path: "signup", + element: , + }, + { + path: "mypage", + element: ( + + + + ), + }, + { + path: "v1/auth/google/callback", + element: , + }, + { + path: "lp/:lpId", + element: ( + + + + ), + }, + ], + }, +]); + +const queryClient = new QueryClient(); + +function App() { + return ( + + + + + + + ) +} + +export default App diff --git a/Week8/pocheonLim/mission1/src/apis/auth.ts b/Week8/pocheonLim/mission1/src/apis/auth.ts new file mode 100644 index 00000000..191d71eb --- /dev/null +++ b/Week8/pocheonLim/mission1/src/apis/auth.ts @@ -0,0 +1,196 @@ +import axios from 'axios'; + +const API_BASE_URL = import.meta.env.VITE_SERVER_API_URL; + +// Axios 인스턴스 생성 +export const axiosInstance = axios.create({ + baseURL: API_BASE_URL, +}); + +// 요청 인터셉터 +axiosInstance.interceptors.request.use( + (config) => { + const accessToken = localStorage.getItem('accessToken'); + if (accessToken) { + console.log('요청에 토큰 추가됨:', accessToken.substring(0, 10) + '...'); + config.headers.Authorization = `Bearer ${accessToken}`; + } + return config; + }, + (error) => { + console.error('요청 인터셉터 에러:', error); + return Promise.reject(error); + } +); + +// 응답 인터셉터 +axiosInstance.interceptors.response.use( + (response) => { + console.log('응답 성공:', response.config.url); + return response; + }, + async (error) => { + const originalRequest = error.config; + + // 토큰 재발급 요청 자체가 실패한 경우는 인터셉터에서 제외 + if (originalRequest.url === '/v1/auth/refresh') { + console.error('토큰 재발급 실패'); + localStorage.removeItem('accessToken'); + localStorage.removeItem('refreshToken'); + window.location.href = '/login'; + return Promise.reject(error); + } + + // 401 에러이고, 이미 재시도한 요청이 아닌 경우 + if (error.response?.status === 401 && !originalRequest._retry) { + console.log('토큰 만료됨, 재발급 시도...'); + originalRequest._retry = true; + + try { + // 토큰 재발급 시도 + const response = await refreshToken(); + if (response.status) { + console.log('토큰 재발급 성공'); + // 새로운 토큰 저장 + localStorage.setItem('accessToken', response.data.accessToken); + localStorage.setItem('refreshToken', response.data.refreshToken); + + // 실패한 요청의 Authorization 헤더 업데이트 + originalRequest.headers.Authorization = `Bearer ${response.data.accessToken}`; + + console.log('실패한 요청 재시도:', originalRequest.url); + // 실패한 요청 재시도 + return axiosInstance(originalRequest); + } + } catch (refreshError) { + console.error('토큰 재발급 실패:', refreshError); + // 토큰 재발급 실패 시 로그아웃 처리 + localStorage.removeItem('accessToken'); + localStorage.removeItem('refreshToken'); + console.log('로그아웃 처리됨'); + window.location.href = '/login'; + return Promise.reject(refreshError); + } + } + + console.error('❌ API 요청 실패:', error.response?.status, error.config.url); + return Promise.reject(error); + } +); + +//회원가입 요청 +export interface SignupRequest { + name: string; + email: string; + password: string; + bio?: string; + avatar?: string; +} + +//회원가입 응답 +export interface SignupResponse { + status: boolean; + statusCode: number; + message: string; + data: { + id: number; + name: string; + email: string; + bio: string | null; + avatar: string | null; + createdAt: string; + updatedAt: string; + }; +} + +//회원가입 요청 함수 +export const signup = async (data: SignupRequest): Promise => { + const response = await axios.post(`${API_BASE_URL}/v1/auth/signup`, data); + return response.data; +}; + +//로그인 요청 +export interface LoginRequest { + email: string; + password: string; +} + +//로그인 응답 +export interface LoginResponse { + status: boolean; + message: string; + statusCode: number; + data: { + id: number; + name: string; + accessToken: string; + refreshToken: string; + } +} + +//로그인 요청 함수 +export const login = async (data: LoginRequest): Promise => { + const response = await axiosInstance.post('/v1/auth/signin', data); + return response.data; +}; + +//사용자 정보 응답 +export interface UserInfoResponse { + status: boolean; + message: string; + statusCode: number; + data: { + id: number; + name: string; + email: string; + bio: string | null; + avatar: string | null; + createdAt: string; + updatedAt: string; + } +} + +//사용자 정보 요청 함수 +export const getUserInfo = async (): Promise => { + const response = await axiosInstance.get('/v1/users/me'); + return response.data; +}; + +// 토큰 재발급 응답 +export interface RefreshTokenResponse { + status: boolean; + statusCode: number; + message: string; + data: { + id: number; + name: string; + accessToken: string; + refreshToken: string; + } +} + +// 토큰 재발급 요청 함수 +export const refreshToken = async (): Promise => { + const refreshToken = localStorage.getItem('refreshToken'); + if (!refreshToken) { + throw new Error('리프레시 토큰이 없습니다.'); + } + + // axiosInstance 대신 일반 axios를 사용하여 인터셉터 우회 + const response = await axios.post(`${API_BASE_URL}/v1/auth/refresh`, { + refresh: refreshToken + }, { + headers: { + 'Content-Type': 'application/json' + } + }); + return response.data; +}; + +export const signout = async (): Promise => { + await axiosInstance.post('/v1/auth/signout'); + console.log("로그아웃 연동 성공~"); +}; + +export const updateProfile = (data: { name: string; bio?: string | null; avatar?: string }) => + axiosInstance.patch('/v1/users', data); \ No newline at end of file diff --git a/Week8/pocheonLim/mission1/src/apis/lp.ts b/Week8/pocheonLim/mission1/src/apis/lp.ts new file mode 100644 index 00000000..e6ca0741 --- /dev/null +++ b/Week8/pocheonLim/mission1/src/apis/lp.ts @@ -0,0 +1,200 @@ +import { Lp } from '../types/lp'; +import { axiosInstance } from './auth'; + +interface FetchLpListParams { + order?: 'asc' | 'desc'; + cursor?: number; + limit?: number; + search?: string; +} + +interface LpListResponse { + data: { + data: Lp[]; + nextCursor: number; + hasNext: boolean; + }; +} + +interface FetchCommentsParams { + lpId: string | number; + order?: 'asc' | 'desc'; + cursor?: number; + limit?: number; +} + +export const fetchLpList = async ({ order = 'desc', cursor = 0, limit = 10, search }: FetchLpListParams = {}) => { + const searchParams = new URLSearchParams({ + order, + cursor: cursor.toString(), + limit: limit.toString(), + ...(search && { search }), + }); + + const url = `${import.meta.env.VITE_SERVER_API_URL}/v1/lps?${searchParams.toString()}`; + + try { + const response = await fetch(url, { + headers: { + 'Content-Type': 'application/json', + }, + }); + + if (!response.ok) { + const errorText = await response.text(); + console.error('API Error:', response.status, response.statusText); + throw new Error(`요청 실패 봐라 (${response.status}): ${errorText}`); + } + + const contentType = response.headers.get('content-type'); + if (!contentType || !contentType.includes('application/json')) { + throw new Error(`틀렸다네;;: ${contentType}`); + } + + const data = await response.json(); + return data.data as LpListResponse['data']; + } catch (error) { + if (error instanceof Error) { + throw new Error(`과연: ${error.message}`); + } + throw new Error('오류입니다'); + } +}; + +export const fetchComments = async ({ + lpId, + order = 'asc', + cursor = 0, + limit = 10, +}: FetchCommentsParams) => { + const searchParams = new URLSearchParams({ + order, + cursor: cursor.toString(), + limit: limit.toString(), + }); + const url = `/v1/lps/${lpId}/comments?${searchParams.toString()}`; + const res = await axiosInstance.get(url); + const data = res.data; + return { + data: data.data.data, + nextCursor: data.data.nextCursor, + hasNext: data.data.hasNext, + }; +}; + +export interface CreateLpRequest { + title: string; + content: string; + thumbnail: string; + tags: string[]; + published: boolean; +} + +export interface CreateLpResponse { + status: boolean; + statusCode: number; + message: string; + data: { + id: number; + title: string; + content: string; + thumbnail: string; + published: boolean; + authorId: number; + createdAt: string; + updatedAt: string; + }; +} + +export const createLp = async ( + lpData: CreateLpRequest, +): Promise => { + try { + console.log("createLp lpData:", lpData); + const response = await axiosInstance.post("/v1/lps", lpData); + return response.data; + } catch (error) { + console.log("❌ ~ createLp ~ error:", error); + throw error; + } +}; + +export interface FetchUserLpListParams { + order?: 'asc' | 'desc'; + cursor?: number; + limit?: number; +} + +export interface UserLpListResponse { + status: boolean; + statusCode: number; + message: string; + data: { + data: Lp[]; + nextCursor: number; + hasNext: boolean; + }; +} + +export const fetchUserLpList = async ({ order = 'desc', cursor = 0, limit = 10 }: FetchUserLpListParams = {}) => { + const searchParams = new URLSearchParams({ + order, + cursor: cursor.toString(), + limit: limit.toString(), + }); + const res = await axiosInstance.get(`/v1/lps/user?${searchParams.toString()}`); + return res.data as UserLpListResponse; +}; + +// 댓글 수정 +export const updateComment = (lpId: number, commentId: number, content: string) => + axiosInstance.patch(`/v1/lps/${lpId}/comments/${commentId}`, { content }); + +// 댓글 삭제 +export const deleteComment = (lpId: number, commentId: number) => + axiosInstance.delete(`/v1/lps/${lpId}/comments/${commentId}`); + +// LP 수정 +export interface UpdateLpRequest { + title: string; + content: string; + thumbnail: string; + tags: string[]; + published: boolean; +} + +export interface UpdateLpResponse { + status: boolean; + statusCode: number; + message: string; + data: Lp; +} + +export const updateLp = async ( + lpId: number, + data: UpdateLpRequest +): Promise => { + const res = await axiosInstance.patch(`/v1/lps/${lpId}`, data); + return res.data; +}; + +export const deleteLp = async (lpId: number) => { + const response = await axiosInstance.delete(`/v1/lps/${lpId}`); + return response.data; +}; + +// 좋아요 추가 +export const addLike = async (lpId: number) => { + const response = await axiosInstance.post(`/v1/lps/${lpId}/likes`); + return response.data; +}; + +// 좋아요 취소 +export const removeLike = async (lpId: number) => { + const response = await axiosInstance.delete(`/v1/lps/${lpId}/likes`); + return response.data; +}; + +// 댓글 생성 +export const createComment = (lpId: number, content: string) => + axiosInstance.post(`/v1/lps/${lpId}/comments`, { content }); \ No newline at end of file diff --git a/Week8/pocheonLim/mission1/src/apis/upload.ts b/Week8/pocheonLim/mission1/src/apis/upload.ts new file mode 100644 index 00000000..a3afad00 --- /dev/null +++ b/Week8/pocheonLim/mission1/src/apis/upload.ts @@ -0,0 +1,10 @@ +import { axiosInstance } from './auth'; + +export const uploadImage = async (file: File): Promise => { + const formData = new FormData(); + formData.append('file', file); + const res = await axiosInstance.post('/v1/uploads', formData, { + headers: { 'Content-Type': 'multipart/form-data' } + }); + return res.data.data.imageUrl; +}; \ No newline at end of file diff --git a/Week8/pocheonLim/mission1/src/components/FabButton.tsx b/Week8/pocheonLim/mission1/src/components/FabButton.tsx new file mode 100644 index 00000000..211a33f5 --- /dev/null +++ b/Week8/pocheonLim/mission1/src/components/FabButton.tsx @@ -0,0 +1,27 @@ +import React, { useState } from 'react'; +import { useAuth } from '../contexts/AuthContext'; +import { MdAdd } from 'react-icons/md'; +import LpCreateModal from './LpCreateModal'; + +const FabButton = () => { + const { isLoggedIn } = useAuth(); + const [open, setOpen] = useState(false); + + if (!isLoggedIn) return null; + + return ( + <> + + setOpen(false)} /> + + ); +}; + +export default FabButton; \ No newline at end of file diff --git a/Week8/pocheonLim/mission1/src/components/LpCreateModal.tsx b/Week8/pocheonLim/mission1/src/components/LpCreateModal.tsx new file mode 100644 index 00000000..fab6dedd --- /dev/null +++ b/Week8/pocheonLim/mission1/src/components/LpCreateModal.tsx @@ -0,0 +1,147 @@ +import React, { useRef } from 'react'; +import { IoMdClose } from 'react-icons/io'; +import { useLpCreate } from '../hooks/lp/mutations/useLpCreate'; +import { useTagManagement } from '../hooks/utils/useTagManagement'; +import { uploadImage } from '../apis/upload'; + +interface LpCreateModalProps { + isOpen: boolean; + onClose: () => void; +} + +const LpCreateModal = ({ isOpen, onClose }: LpCreateModalProps) => { + const [image, setImage] = React.useState(null); + const [name, setName] = React.useState(''); + const [content, setContent] = React.useState(''); + const fileInputRef = useRef(null); + const { tagInput, setTagInput, tags, handleAddTag, handleRemoveTag, handleTagKeyDown } = useTagManagement(); + const { mutation, handleAddLp } = useLpCreate(); + + if (!isOpen) return null; + + // 모달 바깥 클릭 시 닫기 + const handleOverlayClick = (e: React.MouseEvent) => { + if (e.target === e.currentTarget) onClose(); + }; + + // LP 이미지 클릭 시 파일 input 열기 + const handleImageClick = () => { + fileInputRef.current?.click(); + }; + + // 파일 이미지 변경 + const handleFileChange = async (e: React.ChangeEvent) => { + const file = e.target.files?.[0]; + if (file) { + try { + const imageUrl = await uploadImage(file); + setImage(imageUrl); + } catch { + alert('이미지 업로드에 실패했습니다.'); + } + } + }; + + // 모든 값이 입력되어야 Add LP 활성화 + const isAddLpEnabled = !!(image && name.trim() && content.trim() && tags.length); + + // LP 생성 요청 + const handleSubmit = () => { + handleAddLp({ + title: name, + content, + thumbnail: image || '', + tags, + published: true, + }); + onClose(); + }; + + return ( +
+
+ {/* X 버튼 */} + + {/* LP 이미지 */} +
+ LP + +
+ {/* 입력 폼 */} + setName(e.target.value)} + /> + setContent(e.target.value)} + /> +
+ setTagInput(e.target.value)} + onKeyDown={handleTagKeyDown} + /> + +
+ {/* 태그 리스트 */} +
+ {tags.map(tag => ( + + {tag} + + + ))} +
+ +
+
+ ); +}; + +export default LpCreateModal; \ No newline at end of file diff --git a/Week8/pocheonLim/mission1/src/components/auth/ProtectedRoute.tsx b/Week8/pocheonLim/mission1/src/components/auth/ProtectedRoute.tsx new file mode 100644 index 00000000..2584a6be --- /dev/null +++ b/Week8/pocheonLim/mission1/src/components/auth/ProtectedRoute.tsx @@ -0,0 +1,18 @@ +import { Navigate } from 'react-router-dom'; +import { useAuth } from '../../contexts/AuthContext'; + +interface ProtectedRouteProps { + children: React.ReactNode; +} + +const ProtectedRoute = ({ children }: ProtectedRouteProps) => { + const { user } = useAuth(); + + if (!user) { + return ; + } + + return <>{children}; +}; + +export default ProtectedRoute; \ No newline at end of file diff --git a/Week8/pocheonLim/mission1/src/components/comment/CommentSection.tsx b/Week8/pocheonLim/mission1/src/components/comment/CommentSection.tsx new file mode 100644 index 00000000..7fd3e1bd --- /dev/null +++ b/Week8/pocheonLim/mission1/src/components/comment/CommentSection.tsx @@ -0,0 +1,174 @@ +import { MdMoreVert, MdEdit, MdDelete } from 'react-icons/md'; +import { Comment } from '../../types/comment'; +import SkeletonComment from '../skeleton/SkeletonComment'; + +interface CommentSectionProps { + commentOrder: 'asc' | 'desc'; + handleSortChange: (order: 'asc' | 'desc') => void; + commentInput: string; + setCommentInput: (value: string) => void; + commentError: string; + isCommentLoading: boolean; + isFetchingNextPage: boolean; + comments: Comment[]; + user: { id: number } | null; + showMenuId: number | null; + setShowMenuId: (id: number | null) => void; + editingCommentId: number | null; + editedContent: string; + setEditedContent: (value: string) => void; + handleCommentSubmit: () => void; + handleCommentEdit: (id: number, content: string) => void; + handleCommentDelete: (id: number) => void; + handleCommentUpdate: (id: number, content: string) => void; + handleCommentEditCancel: () => void; + createCommentMutation: { isPending: boolean }; + updateCommentMutation: { isPending: boolean }; + COMMENT_LIMIT: number; + scrollRef: React.RefObject; +} + +export const CommentSection = ({ + commentOrder, + handleSortChange, + commentInput, + setCommentInput, + commentError, + isCommentLoading, + isFetchingNextPage, + comments, + user, + showMenuId, + setShowMenuId, + editingCommentId, + editedContent, + setEditedContent, + handleCommentSubmit, + handleCommentEdit, + handleCommentDelete, + handleCommentUpdate, + handleCommentEditCancel, + createCommentMutation, + updateCommentMutation, + COMMENT_LIMIT, + scrollRef, +}: CommentSectionProps) => { + return ( +
+
+
댓글
+
+ + +
+
+ +
+
+