From c09f7e6245cbbb39e273d99814d1cf23ec83794b Mon Sep 17 00:00:00 2001 From: StasAstenenko <107870729+StasAstenenko@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:30:52 +0200 Subject: [PATCH 001/185] create project --- package-lock.json | 1054 ++++++++++++++++- package.json | 15 +- public/vite.svg | 1 - src/App.css | 42 - src/App.jsx | 59 +- src/assets/react.svg | 1 - src/components/AddWaterBtn/.gitkeep | 0 src/components/AddWaterBtn/AddWaterBtn.jsx | 5 + .../AddWaterBtn/AddWaterBtn.module.css | 1 + src/components/AdvantagesSection/.gitkeep | 0 .../AdvantagesSection/AdvantagesSection.jsx | 5 + .../AdvantagesSection.module.css | 1 + src/components/Calendar/.gitkeep | 0 src/components/Calendar/Calendar.jsx | 5 + src/components/Calendar/Calendar.module.css | 1 + src/components/CalendarItem/.gitkeep | 0 src/components/CalendarItem/CalendarItem.jsx | 5 + .../CalendarItem/CalendarItem.module.css | 1 + src/components/CalendarPagination/.gitkeep | 0 .../CalendarPagination/CalendarPagination.jsx | 5 + .../CalendarPagination.module.css | 1 + src/components/ChooseDate/.gitkeep | 0 src/components/ChooseDate/ChooseDate.jsx | 5 + .../ChooseDate/ChooseDate.module.css | 1 + src/components/DailyInfo/.gitkeep | 0 src/components/DailyInfo/DailyInfo.jsx | 5 + src/components/DailyInfo/DailyInfo.module.css | 1 + src/components/Loader/Loader.jsx | 5 + src/components/Logo/.gitkeep | 0 src/components/Logo/Logo.jsx | 5 + src/components/Logo/Logo.module.css | 1 + src/components/MonthInfo/.gitkeep | 0 src/components/MonthInfo/MonthInfo.jsx | 5 + src/components/MonthInfo/MonthInfo.module.css | 1 + src/components/PrivateRoute/PrivateRoute.jsx | 5 + .../RestrictedRoute/RestrictedRoute.jsx | 5 + src/components/SignInForm/.gitkeep | 0 src/components/SignInForm/SignInForm.jsx | 5 + .../SignInForm/SignInForm.module.css | 1 + src/components/SignUpForm/.gitkeep | 0 src/components/SignUpForm/SignUpForm.jsx | 5 + .../SignUpForm/SignUpForm.module.css | 1 + src/components/UserBar/.gitkeep | 0 src/components/UserBar/UserBar.jsx | 5 + src/components/UserBar/UserBar.module.css | 1 + src/components/UserBarPopover/.gitkeep | 0 .../UserBarPopover/UserBarPopover.jsx | 5 + .../UserBarPopover/UserBarPopover.module.css | 1 + src/components/UserPanel/.gitkeep | 0 src/components/UserPanel/UserPanel.jsx | 5 + src/components/UserPanel/UserPanel.module.css | 1 + .../UsersSettingsForm/UsersSettingsForm.jsx | 5 + .../UsersSettingsForm.module.css | 1 + src/components/WaterDailyNorma/.gitkeep | 0 .../WaterDailyNorma/WaterDailyNorma.jsx | 5 + .../WaterDailyNorma.module.css | 1 + src/components/WaterDetailedInfo/.gitkeep | 0 .../WaterDetailedInfo/WaterDetailedInfo.jsx | 5 + .../WaterDetailedInfo.module.css | 1 + src/components/WaterForm/WaterForm.jsx | 5 + src/components/WaterForm/WaterForm.module.css | 1 + src/components/WaterItem/.gitkeep | 0 src/components/WaterItem/WaterItem.jsx | 5 + src/components/WaterItem/WaterItem.module.css | 1 + src/components/WaterList/.gitkeep | 0 src/components/WaterList/WaterList.jsx | 5 + src/components/WaterList/WaterList.module.css | 1 + src/components/WaterMainInfo/.gitkeep | 0 .../WaterMainInfo/WaterMainInfo.jsx | 5 + .../WaterMainInfo/WaterMainInfo.module.css | 1 + src/components/WaterProgressBar/.gitkeep | 0 .../WaterProgressBar/WaterProgressBar.jsx | 5 + .../WaterProgressBar.module.css | 1 + src/components/WelcomeSection/.gitkeep | 0 .../WelcomeSection/WelcomeSection.jsx | 5 + .../WelcomeSection/WelcomeSection.module.css | 1 + src/index.css | 63 - src/main.jsx | 26 +- src/modals/DeleteWaterModal/.gitkeep | 0 .../DeleteWaterModal/DeleteWaterModal.jsx | 5 + .../DeleteWaterModal.module.css | 1 + src/modals/LogOutModal/.gitkeep | 0 src/modals/LogOutModal/LogOutModal.jsx | 5 + src/modals/LogOutModal/LogOutModal.module.css | 1 + src/modals/Modal/.gitkeep | 0 src/modals/Modal/Modal.jsx | 5 + src/modals/Modal/Modal.module.css | 1 + src/modals/UserSettingsModal/.gitkeep | 0 .../UserSettingsModal/UserSettingsModal.jsx | 5 + .../UserSettingsModal.module.css | 1 + src/modals/UsersSettingsForm/.gitkeep | 0 src/modals/WaterForm/.gitkeep | 0 src/modals/WaterModal/.gitkeep | 0 src/modals/WaterModal/WaterModal.jsx | 5 + src/modals/WaterModal/WaterModal.module.css | 1 + src/pages/HomePage/.gitkeep | 0 src/pages/HomePage/HomePage.jsx | 5 + src/pages/HomePage/HomePage.module.css | 1 + src/pages/SignInPage/.gitkeep | 0 src/pages/SignInPage/SignInPage.jsx | 5 + src/pages/SignInPage/SignInPage.module.css | 1 + src/pages/SignUpPage/.gitkeep | 0 src/pages/SignUpPage/SignUpPage.jsx | 5 + src/pages/SignUpPage/SignUpPage.module.css | 1 + src/pages/TrackerPage/.gitkeep | 0 src/pages/TrackerPage/TrackerPage.jsx | 5 + src/pages/TrackerPage/TrackerPage.module.css | 1 + src/redux/auth/operations.js | 1 + src/redux/auth/selectors.js | 1 + src/redux/auth/slice.js | 12 + src/redux/store.js | 35 + src/redux/water/operations.js | 1 + src/redux/water/selectors.js | 1 + src/redux/water/slice.js | 12 + 114 files changed, 1360 insertions(+), 171 deletions(-) delete mode 100644 public/vite.svg delete mode 100644 src/App.css delete mode 100644 src/assets/react.svg delete mode 100644 src/components/AddWaterBtn/.gitkeep create mode 100644 src/components/AddWaterBtn/AddWaterBtn.jsx create mode 100644 src/components/AddWaterBtn/AddWaterBtn.module.css delete mode 100644 src/components/AdvantagesSection/.gitkeep create mode 100644 src/components/AdvantagesSection/AdvantagesSection.jsx create mode 100644 src/components/AdvantagesSection/AdvantagesSection.module.css delete mode 100644 src/components/Calendar/.gitkeep create mode 100644 src/components/Calendar/Calendar.jsx create mode 100644 src/components/Calendar/Calendar.module.css delete mode 100644 src/components/CalendarItem/.gitkeep create mode 100644 src/components/CalendarItem/CalendarItem.jsx create mode 100644 src/components/CalendarItem/CalendarItem.module.css delete mode 100644 src/components/CalendarPagination/.gitkeep create mode 100644 src/components/CalendarPagination/CalendarPagination.jsx create mode 100644 src/components/CalendarPagination/CalendarPagination.module.css delete mode 100644 src/components/ChooseDate/.gitkeep create mode 100644 src/components/ChooseDate/ChooseDate.jsx create mode 100644 src/components/ChooseDate/ChooseDate.module.css delete mode 100644 src/components/DailyInfo/.gitkeep create mode 100644 src/components/DailyInfo/DailyInfo.jsx create mode 100644 src/components/DailyInfo/DailyInfo.module.css create mode 100644 src/components/Loader/Loader.jsx delete mode 100644 src/components/Logo/.gitkeep create mode 100644 src/components/Logo/Logo.jsx create mode 100644 src/components/Logo/Logo.module.css delete mode 100644 src/components/MonthInfo/.gitkeep create mode 100644 src/components/MonthInfo/MonthInfo.jsx create mode 100644 src/components/MonthInfo/MonthInfo.module.css create mode 100644 src/components/PrivateRoute/PrivateRoute.jsx create mode 100644 src/components/RestrictedRoute/RestrictedRoute.jsx delete mode 100644 src/components/SignInForm/.gitkeep create mode 100644 src/components/SignInForm/SignInForm.jsx create mode 100644 src/components/SignInForm/SignInForm.module.css delete mode 100644 src/components/SignUpForm/.gitkeep create mode 100644 src/components/SignUpForm/SignUpForm.jsx create mode 100644 src/components/SignUpForm/SignUpForm.module.css delete mode 100644 src/components/UserBar/.gitkeep create mode 100644 src/components/UserBar/UserBar.jsx create mode 100644 src/components/UserBar/UserBar.module.css delete mode 100644 src/components/UserBarPopover/.gitkeep create mode 100644 src/components/UserBarPopover/UserBarPopover.jsx create mode 100644 src/components/UserBarPopover/UserBarPopover.module.css delete mode 100644 src/components/UserPanel/.gitkeep create mode 100644 src/components/UserPanel/UserPanel.jsx create mode 100644 src/components/UserPanel/UserPanel.module.css create mode 100644 src/components/UsersSettingsForm/UsersSettingsForm.jsx create mode 100644 src/components/UsersSettingsForm/UsersSettingsForm.module.css delete mode 100644 src/components/WaterDailyNorma/.gitkeep create mode 100644 src/components/WaterDailyNorma/WaterDailyNorma.jsx create mode 100644 src/components/WaterDailyNorma/WaterDailyNorma.module.css delete mode 100644 src/components/WaterDetailedInfo/.gitkeep create mode 100644 src/components/WaterDetailedInfo/WaterDetailedInfo.jsx create mode 100644 src/components/WaterDetailedInfo/WaterDetailedInfo.module.css create mode 100644 src/components/WaterForm/WaterForm.jsx create mode 100644 src/components/WaterForm/WaterForm.module.css delete mode 100644 src/components/WaterItem/.gitkeep create mode 100644 src/components/WaterItem/WaterItem.jsx create mode 100644 src/components/WaterItem/WaterItem.module.css delete mode 100644 src/components/WaterList/.gitkeep create mode 100644 src/components/WaterList/WaterList.jsx create mode 100644 src/components/WaterList/WaterList.module.css delete mode 100644 src/components/WaterMainInfo/.gitkeep create mode 100644 src/components/WaterMainInfo/WaterMainInfo.jsx create mode 100644 src/components/WaterMainInfo/WaterMainInfo.module.css delete mode 100644 src/components/WaterProgressBar/.gitkeep create mode 100644 src/components/WaterProgressBar/WaterProgressBar.jsx create mode 100644 src/components/WaterProgressBar/WaterProgressBar.module.css delete mode 100644 src/components/WelcomeSection/.gitkeep create mode 100644 src/components/WelcomeSection/WelcomeSection.jsx create mode 100644 src/components/WelcomeSection/WelcomeSection.module.css delete mode 100644 src/modals/DeleteWaterModal/.gitkeep create mode 100644 src/modals/DeleteWaterModal/DeleteWaterModal.jsx create mode 100644 src/modals/DeleteWaterModal/DeleteWaterModal.module.css delete mode 100644 src/modals/LogOutModal/.gitkeep create mode 100644 src/modals/LogOutModal/LogOutModal.jsx create mode 100644 src/modals/LogOutModal/LogOutModal.module.css delete mode 100644 src/modals/Modal/.gitkeep create mode 100644 src/modals/Modal/Modal.jsx create mode 100644 src/modals/Modal/Modal.module.css delete mode 100644 src/modals/UserSettingsModal/.gitkeep create mode 100644 src/modals/UserSettingsModal/UserSettingsModal.jsx create mode 100644 src/modals/UserSettingsModal/UserSettingsModal.module.css delete mode 100644 src/modals/UsersSettingsForm/.gitkeep delete mode 100644 src/modals/WaterForm/.gitkeep delete mode 100644 src/modals/WaterModal/.gitkeep create mode 100644 src/modals/WaterModal/WaterModal.jsx create mode 100644 src/modals/WaterModal/WaterModal.module.css delete mode 100644 src/pages/HomePage/.gitkeep create mode 100644 src/pages/HomePage/HomePage.jsx create mode 100644 src/pages/HomePage/HomePage.module.css delete mode 100644 src/pages/SignInPage/.gitkeep create mode 100644 src/pages/SignInPage/SignInPage.jsx create mode 100644 src/pages/SignInPage/SignInPage.module.css delete mode 100644 src/pages/SignUpPage/.gitkeep create mode 100644 src/pages/SignUpPage/SignUpPage.jsx create mode 100644 src/pages/SignUpPage/SignUpPage.module.css delete mode 100644 src/pages/TrackerPage/.gitkeep create mode 100644 src/pages/TrackerPage/TrackerPage.jsx create mode 100644 src/pages/TrackerPage/TrackerPage.module.css create mode 100644 src/redux/auth/operations.js create mode 100644 src/redux/auth/selectors.js create mode 100644 src/redux/auth/slice.js create mode 100644 src/redux/store.js create mode 100644 src/redux/water/operations.js create mode 100644 src/redux/water/selectors.js create mode 100644 src/redux/water/slice.js diff --git a/package-lock.json b/package-lock.json index 7711ccc..f9f18d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,21 @@ "name": "frontend-template", "version": "0.0.0", "dependencies": { + "@reduxjs/toolkit": "^2.3.0", + "axios": "^1.7.7", + "clsx": "^2.1.1", + "formik": "^2.4.6", + "modern-normalize": "^3.0.1", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-icon": "^1.0.0", + "react-icons": "^5.3.0", + "react-loader-spinner": "^6.1.6", + "react-redux": "^9.1.2", + "react-router-dom": "^7.0.1", + "redux": "^5.0.1", + "redux-persist": "^6.0.0", + "yup": "^1.4.0" }, "devDependencies": { "@eslint/js": "^9.13.0", @@ -24,6 +37,27 @@ "vite": "^5.4.10" } }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -580,6 +614,30 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@reduxjs/toolkit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", + "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", + "license": "MIT", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.27.3", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.3.tgz", @@ -1027,12 +1085,28 @@ "@swc/counter": "^0.1.3" } }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "license": "MIT", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1042,14 +1116,12 @@ "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "dev": true + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "node_modules/@types/react": { "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", - "dev": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1064,6 +1136,18 @@ "@types/react": "*" } }, + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" + }, "node_modules/@vitejs/plugin-react-swc": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", @@ -1264,6 +1348,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1279,6 +1369,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-runtime": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", + "integrity": "sha512-KpgoA8VE/pMmNCrnEeeXqFG24TIH11Z3ZaimIhJWsin8EbfZy3WzFKUTIan10ZIDgRVvi9EkLbruJElJC9dRlg==", + "license": "MIT", + "peer": true, + "dependencies": { + "core-js": "^1.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1323,6 +1434,15 @@ "node": ">=6" } }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1339,6 +1459,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1357,12 +1486,41 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "license": "MIT", + "peer": true + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1377,11 +1535,30 @@ "node": ">= 8" } }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "license": "MIT", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/data-view-buffer": { "version": "1.0.1", @@ -1457,6 +1634,15 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -1491,6 +1677,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -1976,6 +2171,26 @@ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -1985,6 +2200,45 @@ "is-callable": "^1.1.3" } }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formik": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", + "integrity": "sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==", + "funding": [ + { + "type": "individual", + "url": "https://opencollective.com/formik" + } + ], + "license": "Apache-2.0", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2204,6 +2458,15 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2213,6 +2476,16 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2698,6 +2971,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2715,6 +3000,27 @@ "loose-envify": "cli.js" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2727,6 +3033,18 @@ "node": "*" } }, + "node_modules/modern-normalize": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-3.0.1.tgz", + "integrity": "sha512-VqlMdYi59Uch6fnUPxnpijWUQe+TW6zeWCvyr6Mb7JibheHzSuAAoJi2c71ZwIaWKpECpGpYHoaaBp6rBRr+/g==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2737,7 +3055,6 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, "funding": [ { "type": "github", @@ -2940,8 +3257,7 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/possible-typed-array-names": { "version": "1.0.0", @@ -2980,6 +3296,12 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3000,6 +3322,18 @@ "react-is": "^16.13.1" } }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3032,11 +3366,145 @@ "react": "^18.3.1" } }, + "node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "license": "MIT" + }, + "node_modules/react-icon": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-icon/-/react-icon-1.0.0.tgz", + "integrity": "sha512-VzSlpBHnLanVw79mOxyq98hWDi6DlxK9qPiZ1bAK6bLurMBCaxO/jjyYUrRx9+JGLc/NbnwOmyE/W5Qglbb2QA==", + "license": "MIT", + "peerDependencies": { + "babel-runtime": "^5.3.3", + "react": ">=0.12.0" + } + }, + "node_modules/react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-loader-spinner": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/react-loader-spinner/-/react-loader-spinner-6.1.6.tgz", + "integrity": "sha512-x5h1Jcit7Qn03MuKlrWcMG9o12cp9SNDVHVJTNRi9TgtGPKcjKiXkou4NRfLAtXaFB3+Z8yZsVzONmPzhv2ErA==", + "license": "MIT", + "dependencies": { + "react-is": "^18.2.0", + "styled-components": "^6.1.2" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-loader-spinner/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", + "integrity": "sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.0.1.tgz", + "integrity": "sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng==", + "license": "MIT", + "dependencies": { + "react-router": "7.0.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "license": "MIT", + "peerDependencies": { + "redux": ">4.0.0" + } + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", @@ -3077,6 +3545,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, "node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -3192,6 +3666,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -3224,6 +3704,12 @@ "node": ">= 0.4" } }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3267,7 +3753,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3369,6 +3854,74 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-components": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", + "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "license": "MIT", + "dependencies": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/styled-components/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "license": "MIT" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3393,6 +3946,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3405,6 +3988,18 @@ "node": ">= 0.8.0" } }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -3503,6 +4098,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/vite": { "version": "5.4.11", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", @@ -3676,9 +4280,39 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yup": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.4.0.tgz", + "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", + "license": "MIT", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } } }, "dependencies": { + "@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, "@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -3962,6 +4596,17 @@ "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true }, + "@reduxjs/toolkit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", + "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", + "requires": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + } + }, "@rollup/rollup-android-arm-eabi": { "version": "4.27.3", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.3.tgz", @@ -4193,12 +4838,26 @@ "@swc/counter": "^0.1.3" } }, + "@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, "@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, + "@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -4208,14 +4867,12 @@ "@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "dev": true + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "@types/react": { "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", - "dev": true, "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -4230,6 +4887,16 @@ "@types/react": "*" } }, + "@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" + }, + "@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "@vitejs/plugin-react-swc": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", @@ -4370,6 +5037,11 @@ "is-shared-array-buffer": "^1.0.2" } }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -4379,6 +5051,25 @@ "possible-typed-array-names": "^1.0.0" } }, + "axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-runtime": { + "version": "5.8.38", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", + "integrity": "sha512-KpgoA8VE/pMmNCrnEeeXqFG24TIH11Z3ZaimIhJWsin8EbfZy3WzFKUTIan10ZIDgRVvi9EkLbruJElJC9dRlg==", + "peer": true, + "requires": { + "core-js": "^1.0.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4414,6 +5105,11 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -4424,6 +5120,11 @@ "supports-color": "^7.1.0" } }, + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4439,12 +5140,31 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==" + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", + "peer": true + }, "cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -4456,11 +5176,25 @@ "which": "^2.0.1" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" + }, + "css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "data-view-buffer": { "version": "1.0.1", @@ -4510,6 +5244,11 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, "define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -4532,6 +5271,11 @@ "object-keys": "^1.1.1" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -4902,6 +5646,11 @@ "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4911,6 +5660,31 @@ "is-callable": "^1.1.3" } }, + "form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "formik": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", + "integrity": "sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==", + "requires": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + } + }, "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -5051,12 +5825,25 @@ "function-bind": "^1.1.2" } }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, "ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, + "immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==" + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -5383,6 +6170,16 @@ "p-locate": "^5.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5397,6 +6194,19 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5406,6 +6216,11 @@ "brace-expansion": "^1.1.7" } }, + "modern-normalize": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-3.0.1.tgz", + "integrity": "sha512-VqlMdYi59Uch6fnUPxnpijWUQe+TW6zeWCvyr6Mb7JibheHzSuAAoJi2c71ZwIaWKpECpGpYHoaaBp6rBRr+/g==" + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -5415,8 +6230,7 @@ "nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "natural-compare": { "version": "1.4.0", @@ -5550,8 +6364,7 @@ "picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "possible-typed-array-names": { "version": "1.0.0", @@ -5570,6 +6383,11 @@ "source-map-js": "^1.2.1" } }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -5587,6 +6405,16 @@ "react-is": "^16.13.1" } }, + "property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -5610,11 +6438,88 @@ "scheduler": "^0.23.2" } }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, + "react-icon": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-icon/-/react-icon-1.0.0.tgz", + "integrity": "sha512-VzSlpBHnLanVw79mOxyq98hWDi6DlxK9qPiZ1bAK6bLurMBCaxO/jjyYUrRx9+JGLc/NbnwOmyE/W5Qglbb2QA==", + "requires": {} + }, + "react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "requires": {} + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-loader-spinner": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/react-loader-spinner/-/react-loader-spinner-6.1.6.tgz", + "integrity": "sha512-x5h1Jcit7Qn03MuKlrWcMG9o12cp9SNDVHVJTNRi9TgtGPKcjKiXkou4NRfLAtXaFB3+Z8yZsVzONmPzhv2ErA==", + "requires": { + "react-is": "^18.2.0", + "styled-components": "^6.1.2" + }, + "dependencies": { + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + } + } + }, + "react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "requires": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + } + }, + "react-router": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.0.1.tgz", + "integrity": "sha512-WVAhv9oWCNsja5AkK6KLpXJDSJCQizOIyOd4vvB/+eHGbYx5vkhcmcmwWjQ9yqkRClogi+xjEg9fNEOd5EX/tw==", + "requires": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + } + }, + "react-router-dom": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.0.1.tgz", + "integrity": "sha512-duBzwAAiIabhFPZfDjcYpJ+f08TMbPMETgq254GWne2NW1ZwRHhZLj7tpSp8KGb7JvZzlLcjGUnqLxpZQVEPng==", + "requires": { + "react-router": "7.0.1" + } + }, + "redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, + "redux-persist": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", + "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", + "requires": {} + }, + "redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "requires": {} }, "reflect.getprototypeof": { "version": "1.0.6", @@ -5643,6 +6548,11 @@ "set-function-name": "^2.0.2" } }, + "reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==" + }, "resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -5725,6 +6635,11 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, + "set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" + }, "set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -5751,6 +6666,11 @@ "has-property-descriptors": "^1.0.2" } }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5781,8 +6701,7 @@ "source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" }, "string.prototype.matchall": { "version": "4.0.11", @@ -5854,6 +6773,44 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "styled-components": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", + "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "requires": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "dependencies": { + "postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5869,6 +6826,31 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" + }, + "tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==" + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5878,6 +6860,11 @@ "prelude-ls": "^1.2.1" } }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + }, "typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -5952,6 +6939,12 @@ "punycode": "^2.1.0" } }, + "use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "requires": {} + }, "vite": { "version": "5.4.11", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", @@ -6042,6 +7035,17 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "yup": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.4.0.tgz", + "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", + "requires": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } } } } diff --git a/package.json b/package.json index f209553..bc78999 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,21 @@ "preview": "vite preview" }, "dependencies": { + "@reduxjs/toolkit": "^2.3.0", + "axios": "^1.7.7", + "clsx": "^2.1.1", + "formik": "^2.4.6", + "modern-normalize": "^3.0.1", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-icon": "^1.0.0", + "react-icons": "^5.3.0", + "react-loader-spinner": "^6.1.6", + "react-redux": "^9.1.2", + "react-router-dom": "^7.0.1", + "redux": "^5.0.1", + "redux-persist": "^6.0.0", + "yup": "^1.4.0" }, "devDependencies": { "@eslint/js": "^9.13.0", diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/App.css b/src/App.css deleted file mode 100644 index b9d355d..0000000 --- a/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/src/App.jsx b/src/App.jsx index f67355a..a4dc60a 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,35 +1,34 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' +import { lazy, Suspense } from "react"; +import { Loader } from "./components/Loader/Loader"; +import { PrivateRoute } from "./components/PrivateRoute/PrivateRoute"; +import { RestrictedRoute } from "./components/RestrictedRoute/RestrictedRoute"; +import { Route, Routes } from "react-router-dom"; -function App() { - const [count, setCount] = useState(0) +const HomePage = lazy(() => import("./pages/HomePage/HomePage")); +const SignInPage = lazy(() => import("./pages/SignInPage/SignInPage")); +const SignUpPage = lazy(() => import("./pages/SignUpPage/SignUpPage")); +const TrackerPage = lazy(() => import("./pages/TrackerPage/TrackerPage")); +function App() { return ( - <> -
-
- Edit src/App.jsx and save to test HMR
-
- Click on the Vite and React logos to learn more -
- > - ) +
+ {message}
+1.5 L
+My daily norma
+
-
+ Today
+ ------------------------ +0%
+50%
+100%
+A1LR+-s`IEkLGB>RUyIU{k^7tUVGMW0h4>7?< zD4tNODasCBf$@i9fOYL}Q)nny*88W(CHjZ13E@*gGY0?4TeC+lnm@6Owkr<;W18y5 zQxyC|sR@*WdJ=vnvC+U!EE z-fCYQiL118oe!yusO7Vp?caFZc$m{U2d0R-1k}>)Q_hfb1rp7{%W(JI;IgF|zbM=> zf1h_4p?l^>^EVF`*BVL{@(1mFN(Q>lF@IAgS9s8AYA@0JPUILwqZB hn%^(1rf5`k$dD-oY*4 2A-0go zU9Fb|<{lR9lynrdW6@dLc1D97<$vJbGNg6)jIlO9gMY2ta5B)3MGWCNY(7_C*;P@a zCjbaI*jRtHa|(9-sTm*HqfYAO@pO ibaJednIXEV-X4rEQbok>1I D z4tUeWZQIJ6_@}(j+E(mtz5hh@djN0$_`cA_pefxrhZeI>TKgHt&mEanx=bUK?Fv zBI}@IQHuW?>qo@{K8TvR%!sfCo}uT-zx52p-={APz-ywFn|TA&VvgMUjn_>~pl(H| zUQHl!b-q< o53dIT{-Hva55SRM1!FrVqAqG(LQ7doLMYmhCjt5H{?QIQy}?5%DGT8 z2c69QO!^mEx=AsGC?KJEthqL}R8F(^&2qV0({nztisUhNWh1`ZKEJp}T(|wg+nMtr z %M@f>06`O^SLuqoShfxaC<1lz{u~o{5br+~8pRC9tmT zPqDfoX?xAJ05XFy13GvE+Dn={T~1XjKJC4%;Vm``D9t}w)#O&lZ|*kg+VnL!yTjAb zkuA+$@(^}pVKFy}XfQ@$h;U`*Wr`%O=+W6}_iXg7;o`FUyoJ`+XOugIb3mk!SGVQ< zd?p=!Y;4UR{$KIg*0CoX2zkEfacdz#r7x@5V}m}vsVKy?kYDgr^yN}>5nyNAPHOOU zu+xzYP|#vu$b?QRnBQZ7H{KK&rcq#UUjg=; 24!sB*xpyh-$pTjyd2{Iqad@O9XrnCGNv+Y z?1sxv{}7UqXq75(KL}U9^T_~eiI-<*zl)-Y?3HYmjyY~ftk2!QLVi3QZ^85tGd>zk zs R<(U5J;&FpP;sNm((WHurIK!EYiDnHGiiOkNX0dQ8fYREv(mu3i_Bha}7J|w#v zJZu0+Zp_k`7dxoVwu^Kwh=qM>e!& S~*0o%IW#m z?;<@5H}#xWr(NQ&0_$B}t`YFA7XgBW1S8#S=@}36G3!R%j&=OH`d3%6 d9$57*uS#uY7`#uA}>LU;E2vsji4lK@Cp z7sVRcByCer)gSX%QpFNfvr^$@OOBWeI;iozC+LQX>B+&`;i0O`y->ING@ycB2G^nK zjb>cGqM+yL$YRIYFW5F&2OJPGil%ZF)k4bp6}*IUQtq#!X80bJX14Tm`<}Vq#2`UI z5;g *Cw?%h?GrH!uGvNvOdJ^HzI(?X9G^8^cD2`hRk~Eih15XPJjmE$%o?8LV zHFGFfIa9%JDzEULa?>%`gw&McqLUXVwp=a4t#NC5QK+kA#j{u@+@~x%Z`Uc4vk;XI z@Zz+o2OEJO`Q8brXl>aBg|z k-L|#f)GCc*Gz!bxL`8zE0Xy}L zRDkX>sN34JbB`0P=+w-7-P|`g$TqvPMXAr l=tghDN(pA$u z>Kz6vk5MQYpMeW`^fAkE=`JrHdkYQx$j%$kk9lKmJsVr0)*kkICys$u6l0yD!kDAI z-s7bg{q Uo 3V$RbtAIbb<6H(X?k+s zT^~z?tL$qNN;u9z;JsPO>Vm5IoYD#UHr2YG0?@&SUj&|ND_Lp9qZ?Zb9FJksjBS~E zJD}$Dy-!*?-4k%WZu(q;m(#fwvN1!Z^s6$M`m%KT4PY2@25cMM9y|<$vjtq+0?8B% zxq?HjWX^^CT(`4DIGiT+CZS#qj?;@%W3fn}hQ0I%N;BN=P+-IAG!H&J() zCs|!ZDT@-x#@y^`e^B`R?7UlsCdA+FwSgRayjCFtr^DChzGA+gUCD5BXES8-{pZM{ zeA+Gw9Ch`c96y{uGjed?yWNb^4&OH}bL-?%g##$HH9Y-*yOvC+S8#A7x~+ikEAGcL z?S%dg8v@^0Q*7Ns|3LA}MK<36blXyt574f3`|KwAO~D^rPH+V1LSTJ-J`-=Ag#VIl ztKa-D_{JwemIQ2d$Rx1d+xa9{HR2ujq+7)$mRSzrdo{Qincz1r4DJxn525vaIGP!} zIlS07+w}h{33YY7ZvMFv)!SjqWMFpt=4rb+SGzP8`*7h`@0~ew!?Sy{yc&6{pOfd6 zj#JFE>E3Yl2i~ uaZGd^QV`zfN*U``M^{Xy|%iHWudga>- z2{VcC(6(pN&D0^&TF|Lah%%HX3)7}o{awbUU+a*N>*;Yi!DoprRdjoR3<_aTanoAU z2RHWNeR#e;1`oj7abdvQ3FWgKe_iexcv~1#h}&Ue-dOj(J6gUD rDxDcyAxf?e9k>XLX2H zL=P5Idm|6%W!b% hq>a|>HFS0J6+xHl%Ec{8M?jlX;kc =G!3&(wsFA|0PVgYk2sp$mAs8#g+~e}(>>gZSF=B5+CH>H31%)cA~fHs9{ dpn2gzQg?*4U+TRsps2Uc(+-7r{ut@?DU VG{+|fYs)ST2@R_rb8%(a2^1~8U1Uwy@2$)pH#EJF2 kGLtQ|x5KNUnuvxo{kzi#e^9ZrSA<655N zYMRj#a=kf{16&Z>*nl@bY(H=!#M}dQ^FE%}2HIj9eV-ZMe_#A2ewiDJwNpG8 M>rDBZOn#GUM1 zcYM;;e17(H-Q@fHI8!J7&!B_=N{w)3xG^I&M=Z!Y?%ccCJ-luG{IO;C!U|{kSCh5W zmtEd>Mmkq?%{w9+Y&+X5L9dsCgQ@obea70Q!^q9&;vw#HCjDmbr}H}a)hA>ttgi1e z#mxGh-&wy%s1%74PL*NEMj4#IN_(!ZvL{QWQgjAB*pD?acX_;$XH{jx*XqANE9eUv zs5#OVDsS~;Y85cR90u>=$ VsieIXDYZM_oNrEFf4sMo zm1H|`3z$#J 1@D6+v)u4?_a(_5rrzrSBKoi#Lb3E(nbj4d0^Mg34U|@ioL07aMHZI~F z+A^u =2sCxHX)6NREb( zg5^gS=)-n1+b6kc$V+mmYyDwopFe||IlFzei^M5*t(%>G^E-yFcb!!HY{J|0Wq?4q zA`C%kPms_*nn~I|dtq{|lk@bp M2i&2NvDi$a41klm_qj+H`27%6B@B{i?i>_Uw+pYClDhAJPj8cTSwJ>t zP5t4s^^hezlyi#OO5s23=_-*1qOHyzt4hqRebs8rGrF4S(8xJ)!VUadt$*Qlg~R;d z*X^bR4sd(husW}(sO<2S5{!r?5$=V`mV <(6XHSo0q5lz%2&JKPysHFaev zM8VN}f|G_LeP1`XPBV{GgIC1uZGd>WU;n7PxK?=Qwhs9)qeP~+v~OBe*CXRF+r^8u ztx2+z>}POYS@Ryy?#UMNs*$Z7aHxVj;Gt$VGc#Le>y*jihSj-U0tzM~hwArqbo%(5 z?#<$t`8)t&?-V?oUI`|C`8A{Goc9HG25ZxmmAhZl+l>$#>z*Ii5tP*YKsWjQo2pM- zF*xU#%}oSioYCg4H6{tURX>Sp&4GFa+IfJrsTDZT3q}pneaWs^ ?C|MueFkB2YOL`&L~St2$P~-(EMZaeo#GGjDP-xj zHn^S+c{{%n@ac ywiGM%`@ zoIUOFhRKMj!vXyg0jIw#mk>(}_6dKqI#yK?@paJB_w&- ?OE=OzcXt*^N3VNQ{dgi9L>(KxQ^Y~QM*@EYR3B?LT{H$E+`(-rE%8JU0 z@%pbyTD~q`US3VoUOx+G`L0yTm5KN`G_+SV)Rlb;aUYX4=A#!})V4_e{ezx9iA75$ zg3D{LIco?lA1k|&8I_>_g _zB^M!o@xeKIa{MlSQs0-sQrQ^)zkOY^3wORd8n~DpRQ3U zR12suG`|q5W?wm#61&1z )h%3UC?{XLbDnl`smubqAtW#eAe1^5uR zanbUX5)ps05I6m`j=Q`E =bf?UB y8x^P&w*4>{_(CxV|n3Kb!Q$DweQRw}cPUA|0P@?0IFiJW?j6`8`9y!ms17x-)s8 zp|-Xb@!MQ@QBiBepFcZ0udny_osHTl+LZ}0txKg@ie6Nns3#j@WQLdh)Op>mqU+`A za$9rZh|kfUWM%ghC^LGAb;;9(=!rHw0_OB*V^hND8aj%KiY+yY!QW5jHPt*^ymV}I zTzr>6ZjT5jOYWVQ+vp=G&`U*CN?Q@PaO%yqTLRuzT6c!cvRh?H51t6Tfz&-Y?Cw+o z-_>m-ORx-Vdm%P &>_FUY }JVI^g<8Yk5h zwfU^)?vtYyue7GBRU}^Tg$9>Y OwmQq<*uV#=WGKL_#C*XJc^8Tf%}r@xP;iP;f`V!ZP3y*P=^Qu}VL&rSDkrZSKG? zMgPl)OZ3Zsp&FmDN-!U3RXQ?u{>|Tx ht8`y>_$Arp@_RUQiHl*K|r^Iw|LPd%ccJc3#3VQUu;D6ag_wO|8%~yg} zR}lSa2l32jAqZ)0!?h 78DX#)pr-*t-V#%>J5zHM?bM3Lb$(LNoqJX-Q&ok!o_QwbOp{0z*7 z)6yk}j$+e-QpeR#2&fp}qB`pH@5 4Tzj kR!APE%HBm1HX^ zub^Rq4tS=nmd{L`y}y@NY^Q(@@n>gZA2DJ3j=Vy(llG|ey)uhsy4WEVP90aBm*R>R zvP6->u`O_ g-k%uA;E(<@$i5@9G_i_l}Dc>9EZ+WZqbtZmvX+F7- zM;7;B7aZ*se7DP)rfKKm$-?hE(_i_piZ20Hv}|8e LtdlSC)f ziR=Bqvk~p9sH4hVf>ak(1E5gtcVnl-6wFngmI@eWIdmvxIDhr5EXv2COHazM(Z{O~ zkEkNw_i5%~1h}V^ykQ9)K8+u?S*2JBo{ct1kxk6yg+a9STa5|PomShPX4Uah=V4(v z7#Y9PU=lPdL6pOHcjIV!(MbNZ{Sktn63=UPnGWmEd4vX+o*)HG* SIhmW0 zHE4CEY&8d0EI%p|z_|^f0HeV6C(&0166pD7=8k5}5{n_PH#-gX+{_ AP4j^l{naj>6ue(=wHm~F8;-rR zsWGi5*tN}uyawSl0)4Yl!b7=`p1x?Ih)d(M)dKjGwhF%8`g5`OU5PPcQC;eI_drNn z5h^Ryq#D5L^U|-icB1LtFa+)j3f9&Az=>o<2UU#*LqkT-aS1GJpgHNz?9)Z2xu|FM zue~&&yITv*J#i&T5}sOW(54ea2L{#&va<^&EiRZf^_HU??OMj;4i8%Lc**9}PKOs( zDPo}dvx$__Q`SBj^^%syrHZP5vrlyLCX#9@T7qQw%ZYzQ^qFA-c{WWNmaeTpO%ClE zxTqdUTGnh(U!Jo_8uv^g v&&y_;%uD&rRI-LDK;lejzrDBk9e;EEKGhMVV u`vyP zL}5Bh!Bc<) A;WA{6a=zYKeuxBa+KHBEMCe6;CE;Dn>MG z#tZG*fZcQHnbwmw 8_}gF?BYlN z#lH`R+__i WyM!wh@=G(jre3BhLqE+n88Qv1tM!J5`Ymy`cH?Cx_MKG3q~r=; ^w~Z;8Dp`?HBClvxE{(^*L3+cO(D3kf6cP?$TjS==l|{uit)fd$75~m&i_}q~ zwWq;X^4B)(lorX%-jb(jG+=Z@K{4u%r3XJj3f<+82vY)Yh3ye$baXVz(j9|wG>Yaq zT(~s~rxj~e K_d=Gs+&rTpp5NMb!3e*N7+LuvF9S)^FfKQg7`$ECb}bX zQv8XgKH2h$&_v-hkt!4q5PL)^s~>m@i{fO>Wx)lMy8mKbx>*2X$?Z45d0D V*;{M>WyTIH~sW5gAex?5z_`*5G8i z$7AwosQ{z+36X$Q8oK=HlAk{<6SANvJioco&83HBT;YdQZ Z(w#GpXuen&fW!@r4lN|>3( z!l~o>YeNPo%hwUHMSIjhpb7jri1DwG!xLV%I@}jo4>PYQ4L>0ZhW6PCA8Xfs4Nx1Y zj;IDQDx$=X_6X#u;}2TDssrE^2b%?A hlcP!o0l#A+O!z$#3SnVILMYL@>$W;@= z&g9sZUf^SKwYNv;j``XF&tNJDz^jIbh6}W;eY1DDO5E{H)sfs6y7?Fn{Ffdn&TVv6 z^E0jKl=v=5YmDz2RM5VBrv8_9G4!_RFYTVaGmmUHCxC4`XCgR--l-oi$&;p^sz^S^ zt2YQjh6Ji+&lu7+BD{Z41a0}jfB%(1i7T=GglOh`wo&=ENWtUJKL*Og59C-S`KY(u zB4DskqF$Uv{izaptX%QHp3(Y^tF$g*(O=#@mUI#!Z`|Igm>4v6QZ$z@<2kfE*72-{ zqWV9;l>9_)JQck^XEEn0b=5+ZT#tN6+T@lUpj^9&uS=@X@@?8(o4Mm<$&zDUy@(4k zCiM*@i#wJ8bzsj$M)4o2@(E+>wh+h-Jy+8x-zOlwx@|dEp#%IE(5!#Ja808Iw0nkz zl<{?c-AW5<^^^#O5yFYbf@hG>MD{20%mxNAcr5p{JBxjrk=QnUp? u~*uaO_$SvUT0HkEfpP-}~Y))9-lvZljRa_(0PU3r$VD)tngn^WW@ z|3KfAh*ME~rAAGpY;4xzsDF`qK-q7oWl-O1Oq U0(dhT5^Zj@EDC1r&Vka2fc#?+gzFWad}w)$WO&8u2$IK)VPhf zee0aBN%-3JRKt_ZaNqPn1cz%A{(btBuR4$8;{pO$t#5yf1T)Hc4d8xJs%I;R{^JaV za*Y{c8AK>heBSOyG-+iE8=U8Z-XB@#nMEoLghbXv)CHXQ!fO7z943s_Q5Vm#7FApQ zrCqK(RHQK%UG7LCoSQiIlpjo|0pyz5CVu5HPMGKo6DF(AD@4?eC+?g_y0C22-nN`D z@h(M8d^QjW*?@_5qnN%C`{8zlh!19=Fp2S(Y#*f%uN}Aq4hkSY^6?7^vEK+8m(D^v zS<6x@Ifa#5JN0QNYJW%NB;WB6+8hZ6`pv6pXcch=#qVA~TUldsBOAX
d}fpn_7EzK&74!7Jc0hyzy>9Zf#6Cy;%y_iwNj=V!TL#J~ll4u|b;Z1`Yc zuK^oXkN4oK|MzcUh(^A*2@x=}klAR1ye6)SLXqET 6qa7maS2__Ls|-Nz z qLW&HV8J+#&n|RR-rS3e-t!&_xJOJ!3cQg|*;)K~RrcVwYd9JX zblE>s3Uu*&$j?d*rqx4@fU$K@&Z&7W$gz@@%*UUj;P|6{6pW9ni1PS_?8RA~e(hAu zt~ohvsC1|~nNLXxTnDdYF2NX}O+&NEs!Z8!@d`8OSjqOI^15KyPOWcbGE?cRvYUq$ z-yn24vhfE G*7Glf7H&RWlMf$^FfTC;kgShb%FL)OZ_hCJFL71Eql8`dBZy3-?D z{%e@gkfa^QT6(uVI~+7iw|t!H8exGtSBf!GHjSrI_aC4jW0z4xYW%YFM*|aIF`o*- z9m3*_Yli&Ly8>|$;UtNMy85`>F!+MqHN!J&8aqKZ@udSZyy>r5d0L>OWr&4!5XS`$ zHc~rMwexpcqVIup?es-?)GW=MA~8w)SIx_eU$I6u2F`XXnvOYqKF3zOAxlr4_{y zYcYl} #KTO?)N<0Z+ig~(ZGCInmV1iix*AjK~ga&<6?5<%=yUfQY|65<0HQQ922(Xs8)27 zQqdISYVINy!(uE+q(RS&`VnM$8Y(K3D@B-z;^=ZQXZ2Xq(9|6TLu)-x7rxSdWg6>X zX^PTKvTD{|c!idXE^rw`Dq9e^To8VPc{Q3MIN0|oOqYX{C?^azNIV>_5Z_{WUQ0x@ zmWAwlS7#mz&UdgF6ONHMN7UUf5IFdV=lsj)a*h-EX|&-oS|R^*mQX5?{U<1}fGo^YN?1eq+P(Mh~qv?^aS@2iVn3REo0(Z{EB+2n7=zx?* zhvt$TBjTy>Z^m>1k``3G%YDf5Jqe6LaOyG9qFTlfq*d Cx&X>sr+zx%F&iy1snUMq}(7onuaS&2Ed5D1y%*NTVYQ7L5zXbzD zrJ&4kXR#VXcvvarw&!5Xn12MPcocc?!!ck*N_pWEeyGXCy>#N7M5DO3e#X-x`P30X z0z$D97@&wzq;v^85)TCrd=fF$s4KK)NkbGSF3A8DOB}7~u#}bI^yNMJztNAd-xuxf z43O#e`7f*GS1tzbv4;s+x9IF}5*UlF<@Jbn8U7XLDVTv3Eq%n8&N9muLh@U086uhn z)gaNWZHqu^0b8`wd^er3l|%nj`x)&r1}O?5ewhx7!JC_re&fb8?osDiDL~Lmy6+aN z$kKDHy{yoL6Hg #TziNHXe(Ou*#hphR!y9F+0#i=tOcg*yxT7@&vDaACAz3D!1 zey?%7l|1erl4JctO%s9fP_IcCP7Bk!MTa@FjKfvI$;N07RADCohXa1T0#ne%At-nu zlK&WCQd@+{*xjpKQY6K)493Scd@**DgYpKW%v?iNJJAs?QUQMd3%Hb5zU)4Lvo`Iy ztY&fLvh(4jjpF!m#T-QoS<%dCO86OY5S-93Ln~qk{u@ossxQEYf$B9(DB;y-O$~bh z&tc}LDC;;#_Z9mPkJlbPR45u42*Jg}A`&@9ZB*(2F53!tL+N%cC%T`15n8P6r28uV zr=0vR0J1`7BdvDatf&FMxYUPr#JfTgp%Z5iU|9@5HVCZH45l2UnJq&Fkrp66{nn4- zX=zQ SLK#_bnpmL%i-Tp!t7v_Xf5OL>qN! zoJ1q;AG;W1yg=I{>2XP}8cburM(2IeX$5G0kN)2Lbrz~WoTfBVbGjH2@ejvbOd8m; zRcHV(04P@U)@}_v7|!WuiQ+89Z^A%Yc-%rjx0XM&QcK)#= ;fEIq&4%h?#U5Hu4=~0C2smbjm&`C4X6{iK!G-&+=D3CK{QR$4U zxq-HBil0C@&zpg*K}hB0u}Fpykk%`s(CGv %4OZBG z7@I3?cQ9gLlVfuKlVB4P8ytCu94sx_M@R5$PsFW(G>FVwkl3dpm5Z8c|H#~!{U3+) z?_B8@YG^NrKTGv%Yy81wzw-WigDXrI#-Y=(jDh0qj2KNto*Tws(pjSBX$-&xK&W~% za~xu|??gzE285_gEW_#E6NH5~n#;~rU!NmQj2770Oh|ejTnia1AQ=D7Yh`AvvnkXv zI| A@6UI>DQ^isd zm2<3kT=aaI4tAE_Vg8(N)dI2~*Ef*3I;@9LUEJb`uTe*){?DYuzhm4Fu`vu;I SVoHI$<0!L z!|?#OYT^zFqw(MU0W>7(^b6Fqur^lJu5lS&`=Ef@|M48fHfs ?KII5!U|5fH`*be7pz7$BNh|8x(TBVp=v^4=0!5DXGyokoRK0S6N)j;~ zL(?*{Om6_=L0(*6p7UX*A`#MRQGKIrkU|4Tj>FNHDhx^Y8MgrLo?A&Xu_PVBzy<4U zOaVwu;IMNE05f#lhHwZb%QOw1i+b?g@Ynv6azkIThV$8ECQ(3dZH#MASeplo2SWq| z*`p?o0QL-%P_x{q;omR0n-dCYc}*Jp6%DB5bc^ztyeeLUQf|w lZgOt;i>X`>1ch_xut$2tb#JybGQpT>ZrH|r-~yul4tZmv%t7g={PF-MMJ z$&L-l_-oBUkjP1{rm0TY?~bqgz@ywtvfyCjg%z|3)KyEh=BzId*dh52;_TFlHTNnw z0>By&+byjU>orI%mlzz&w+kij5g+ $v~(` zLncD=nGhQmF&8bXOfef@B>AfZ10oU_)xzHAq*BP$YV)t1(L}_qE@l5`bOk4somb$} zbTLcPy>c6Wo&h*WByLF7VYcVfL~BryDV^kp+JhSb=Df&8jS(|5L1+ %(v*t k!OI)s?0;pJ7BXc z*yE1B4KKYZ#=}bDg7Ca38eKCCI2e|d9XlaT|2_t6y+$#vCbDjEjjj>2M}>lgcJ-v7 z{VVOP2N<98ILaa2FIAevb}RV-_iL9mK!X%FtgJVbD)g}Rh1!AO7NCymjIOYvN=zA< zxot65c~@%P+t+B)xE8PvUklFP-y-rhhQe8|9QoUbDh`o4`KJRQNSpiVk& |0&R}9Od30^m)=yH#f ^wpTf!a#O zA #T4d|0zmEZhM8?Zss~1jzW5ia{XXf{G7;#zZf5B7zg)a>}D=n1c$wNBpGP5NZ`9B z{^YFuf}Ty6w)V>AX6&2JSwn)2&3dRcmJr6mZlF}qK 9FRrCS&xs3>u! zK<9<(`KJR|``UVIV6Z=BYdld=QZYh$QIwQT!dr8HM@Lr|5nPLpV{LsGPPaUbVZ?D6 zL&}cJWKZof1Jpf!N3=g R>P*%}49T2;9>dan*h zw@0rvZv_mGe<|~P@BX>Av-piilx?7Yahw!l{d!xC2GF`a(${SGiLbi4gQ&5&zN^0L zbAvY-cXiyKsB~(N4*) GB*>b6jM6k&OE^66v9|5z z`b%qD7puRE>qU*saIS(Gu9z7qSt$fN0ac*&Qp(C`)~r0$j1Yp`J&8UpW6$p9rKPXs z^ z}uk5t=|J$Pmvx^U*{f5gdzP^>V#y@OwzBx1rpalgH7SUhS# zt+Hk;do9EzVNgE$xn+Zj;sC^Y`aJtHrqt47ivgw1eG$zuMiBZ%AeunuHzl3?U)#s- zK`6)xp%>}ZXNTjhZ8n1lg7xy3=a=uRwlE5+P)0p-o{dO wuxL5yH?l$W` R zXkRKGW1JDuE2Dc>2hZoxBr@UXjll-f{m|(;t$qFt=6|S1=>u$L6gzmrPS7CvtNZ*b zgu|>ZrVBMWKy=0YhK5D7RB%;_go(;34kA}iH&2w!j$9w!T0+*2oZV;lk86@{al|78 z5^PI#iZ92cZA#%gR2lku#vayVC}#9JHAl2Gv!#|c9V +v zQoSxrvS-^-JA*wpPmlgh9V $av-Ms*6&d+ss2J`y>)HUctSsxu5FqniWA{cl#H;oK*U@l?d?UR_8^{D2D zZLshzA&%agmqyXWGlVRk#J90miz3D&B4T7NrJ-RG(nm2cjL76`6-{cjK+xp7(|tMq zl6*d$9zJuo#d!@BXRP~OaiEH8-7ynH^_PsqO3L!_thi+#h`djtrXbxc(73-PLUr|R zT}qi7t1^Z=Sj~Z*ElcukoO!t($Ec_mA;gFrrb3>qN8M5_6S;&~WXSk4=OU4QpK{;6 z(dUdVyepNAkqf!|nh1`0!T3UV_tNBove6Fx;bg+Tn^?{8uxN1f8q`CIZq0OvoYF{7 zTb}jroNWMxp%K3ouO<&t(Esc*SMBPMT@{8@MfSy(+*x7Ye~K>79|+M{TRXdtUnv0P z<-IR`^%Nif+IOby6*T+HIwKdh#3Z5x4v%it6oy*fgX|RD)673Hw|O@%HMPJ(>YbYy zq&rCx )AI?VqkPV*ZZe&IM?Fzx;1*B!b_95`!5G3P?i@9)KZww9T{+O{0k zS|BQro#wG6x|gnZYCFs6%K!RP9{&!aUt6eKg{&Q&yAM!a3k<#%->qz}cl} wZ_iw- }<{F9adh8j1`s0dGnN*-9(U}!eAPX{N1yu_=*P*jHI zFKz)Q`pyKSW9_CM6{D`E7MCuljA)NMIu Ix|xm#6Ym2s_dXeE;| z_G00P4Dj&Q2_6j0Ty%&5dWdcS4iAiFkgkRK1R7Am<3!rKG0vP)-!M-gq}>Igm$_NK z7rBQRGkimv#X*AeM$u|3E6*#dGR!S2izjEqTzQS(d8KU=hGvjbDD^B7Sje~Lo`h9k z%;1WHZ4C3r7H@ZmrC#w;jbHk4r|E|Jxp0hP6mdALvFS8V?jl!NTgiZ2l<0<|xVh=q zWE(L0e;i$fLzDm4-RKY$X$h5(8c3rIknYaWV|0gfIZy;PQW~T?-H6dTg$ ? z7HQuz+_3~%Dj**P$ogmVPvFKM)tWpYJr{$+^;frRvLu!U*mO_RIHkjW3Oc2-FC(|0 z{Go)1inC8fY9X>#P2V_L-~D+#*kR_2@d8Wc%_*WafGix)J=64oibo1Vy1<`O%HPfJ z`8T07i|`DGJNmOpFWpLGNOqURA^a^2?fAC94ND@qp|;53c#qE8bsX66`y~H-6R6%2 zGtl$zzEpk{41g48+2=GmR>ou8;7M>La%c(ZdpEB)TCaHD27H`-w)2K+ik6W15pb|7 zf&crekCO`hjvmVwd9quiDg_U%PYIAQWOfC%+{H$-sxU(A3&!Uq7yh%W=%n7}_y7ym z8v8ZGvwj0bx-XwDGY=ChtDaNSPWw`~p;hPrV1v3sU^C7AFGaeS=AWwY;vuA Ib}e49B _ms&45nPm4vJ$1A4{7RH-u(^o zch|CU&ueaPZt_V0g!4Q$cQQBsybi>BU~-sIOTROcd_6X0=@x8nK*c3-TKIW40r_`L z8et=zF7Ib$NwgUDcAL#K%hb`Zam1rm$k+N$3fr^X?NO#{W;AANUrr$RtyyN}?H?X_ z0^7D#b?MV1JKJxk`my5hRy38OA5TwLxSe{uzoLal>vZDF-2Hfwh&Si};&aa4NUHAj zFVSFnIBTR$9A>>IQw#T;^yOZ2t~fWP-#E-5wIjt%U?yqYokNrmycu$f)!9|q1S^Wq zfbyzIUET@0(JxAW-5dWwXASZr(Qc`!Xj=c=4&L?b*`DQg^Qhvo7-?; ^vIs4u9&e< z>PRRZ<*6hNun SMTjg4?exV56|c#Ow&U67bs?4 z!HOf!`6AW7zSvLbchnKSr9!j=U@jY44*JOQs;0lBqqt& diae(hbakTXbBvdtw@cn&5LbzVIjYq5DUH#xYoW!G`LHwld{Wb4xL>n0Z z%z9IICk|0=f$`RSCzT)WVr6(=ajC`}*77)%RhrN6SbdG`PYeBtg^l1A*qxEG(Z+IZ zteE&ajFIr1)0=3gT_G&(k)XBfrRb$ll&ig91N!&o4-WenNa|FN0)zri9;6mh%Gi?p zu6(v ;_H zhTNxJIP6{=@7Csc?K^c4bPC9jJAe1G<}GM#{1dk$` GG^0T7m`)bLdFa`$tJk8}cec2~g;DI?W zwZ$A`g+%o0lNWKS&x<@TzAK5rH-TUax1s>jPz4vTWqzC$X#Kx_kBz()u<%5e7b83? zW1LoN5C%(1BFjDOY#1RUgwCh|`suXjvNq{xYS5pA;9`mOiZ+kotz5nhP4-Y_>A63a zPHZ2{6 u%WRu8>2d#ihYbx80dVUTpq zhQB-|S#X(@zP#0Y=$KzK+iXeOF;{QV!d8iU|M^>n>9-dNp11)^I(&F&p;3+zP5wPo zQ_6}qA7C9Jtft}*-RDvo3t`E@oVox^G+kQy4Z@)!xLUl3c%QCJQui)xojv`bq6cE+ zG?5gOWHDzx5rk @|VoL*B4tBv> z2cahEi5Xb+a^c#B!e0bGRsfdxGW_6|2!(6c5S7e>j%}T+>NGAJvxNHnWp8dI2N%tk zws8M>VMFw|mEIW-3?v77CGr5Owe;6w;Z!rKB^c!e7M+q+KKsh#%A{1eEApt6Z8=U| zLNx#1X0nq0V`)sMJ!{7S8Cw*{)}iGWP$o?J@IGL_Lm#J{f&jMMDq NHCIO^oTeZdY7|mEx_A22 zOzMAJ_4B}=&WA5WG6qK=n)S_)x*b6w1MGtd^3U)Lc&Q+sEU52=d8J$3BbL3OhP^iI zh;_v$M#B-dly=r{k}84bmoivbU8!0AKF8gICC=~n-olpY#dIE7fPT7;F8j}G^}P2y z{zu}DhJFzhycX#>`pH3BIAxmn#^_Cws$=OVdGnI&_VFWE&|~ND?OJkkS_GKKBY9Q} zYYv20!2~*bbnXNPqiM+~6NQ-MM_p~-E7l9wwWm!&Ts^X4(q4=3X6x`xss-OlGYV!t zBy|?jm~=xll--XyPYFJtvAT0WO2ncUBd;oBZ+y^gV>~vZ+E3%;E~h5}a(*)F?$v zSXAe;1+^cngw;TvnCgzwdH?KX@^f^aP9r v0s0$CU9Gz`v5ynki5?Mlii zSCGTOe1L!27P`=&4fDmyithV`Lul7qjpLHh;l=$NmWU!*GD~aYF;{!O!{fO z%EhpPbfeBYf0>j-)$~0re5)i^N+KKg?WtHQB6M$tYj$Yjhnhs7$|x-hx2yMH?uNZE zTC`y&)$q6=vM@vjhr-#tNiv8qRd>zgB!LpKANod6Ke*lB958l@8Kr+0o|HMC%stg7 zDyyhg!SVbj1=Iy8WoZk*w3dI*5EDi?g4nhG-0rty&eag{8_ z;<5g5kfWo;8pp{}8-KOqj_-D3);$)qJLPT|mH)M(>p=$R_Gcanlhtr0CWaGQfrTgl z*to8cM8QJ6^_;p9t|Vx@su@!T`Np0lcy8zJl}@XAc#(R4n{i96;?^g+d$qYQml9eG zw $La;m^k&COcf?0oX1B0zDKZh{5WIc+DbFGX z37`OV4HCIVC?K)#rR0A(lh{~U(sBe(ugA+bNLvbo9t+CR1zC{c?*LjH7j?0(GFd0Y z2FS^wEynCwq2G)$ic=+eAa!85IXSs>x%ByYE20<+YxOHtGpR7P`dR)~*$?Cvf7Ug} zx 76#Bysdxsp^4% z)gBEbPWMgQqY#Ru^CUDC9&*ESVTPD^QVjeyDP_4VrArIdk$g}7OXOk6NQj-(2;{*% z*XK6U--Os1XQz!;QvZ#!M-_$u^Ir(nv09`GR+~ YjyC$M~&{ zF>Rbo8oI~TuBnr%=Pj)IHMP8_#e|5718)hZ^%lI;MqO6cOgW!JtXy1Fomz{6GF;Py zPLR^nR9N;-&I7xQdmOEPZitaP_~Jb;zKYLbT2%Ou8D_s@nyjq=>kq sl?(t#!(oHuG;xA;L6=?t>|SDrR*$=-6Ad)4 zQ$0JUOwmn_aY^&BBEfXk_Fi0-OWI4I NLjwdWUbL9Y>u z8-({vvTAfFMg7}ZL9J4=|G@vtU?-f&B*5M>*H%Ius~&bowaF*X2wKHc&24>g3%J6q zp?ib0Qz?h>*&P}n0S>I=;BxJAaOLo!_HDd}tn3$)Be(p`pOly=M2D2Y9u*ROIa`tX zD!LJOn3ST(3ny>5QI&7~kK$w#VkU_yK3@VVA6wlI)BSeq@?(&19w*Pgg?rZVT#F^w zr}~$w2n0HhA*uz`rXWNY^zKKt1WRNEGdY3EoJFsK Mb`1~yA2&FPrJaS-bvG8x<_;U+J5JsH+~gXJl@=S!Q^+Gzer#jB3-A?dr|GM59I zWv94|j10K($B*HFd>s)5s6i^)X=;Qm_zw`J_vDe@ymg016+83c?T$5n?hjVLDh>|t zJuS?09+MiS-OXSP76&cS70UF&AReyjPh(* ^7=@My!+yw~uGc sjj|FHve5%s98&tIhA@8!<6A`wMsk_p{7A~979mWusP ^i^;>*oRca1jl@G1&d8u38V82m16A<_9 z)7&Ga!nS6RFc9VC!M~Ndt)%*;hXO0ATcK)ch$-B+GIZypZ}&JFgQbb97r>qh5Kkjt zR+@A$(ns*;JA-4-yBza$K8itv>@7TnMB6!Pxy3)}=BmoGjadTkh~&A;C~-oUw5OcSXGx=- zduWQ5_Z53aFU(gp!8Z>)f1r(@EwDV@or-L-m3+7>=}n}q$6Pg4YQW+yvq%twRoKkA zK>rp8GwKI=)Rh79pB#emSd{K{v0}*&gs78Ef_5@2ArXlP{>8{qvb{iNiwG|w`YmN} zlmuw^ZKetlX_@!MFeJT~26VX`C&&H8FnGGl8N;o4R}_9mMj#nn!XWc&JU4X(wi(~K zvzZ4Ei)p>dvE)-bRCdFMFzF0zyTs=DJ$z*w+RlV(=<2`o$sRN-(t$+;+p|&7nIrcj z$j3jTbB{i)@pe9%xSO*l*WT0k{1go%@iv@D^_XrMS41zb%-rna8eO@vz^s=Nvrp@6 z8ZR;V{z^jF8Iq3Z^`61Izos7E JN2;LwsKXl&3?mJ@ zch+LbeQ44v)zQkEx^B7=A830ZlP?@W8I|VjpNEIsZKlc}K1pQ6@Y^_)j%1W7M){^s zU0+?;NbmezCYjeQSlvn9$Jb>&AeJmq( hUD`l`V(;=oWgD+r`tvp7ppP`h)A V&6M=;05MDf;NBUnk-bPVeFe12^90b>+CzW{y-yJytwWEbV^l z8J@5Cm+uH_MuH6PQgvE{Jml9N{;xqn|3i57r-F=xhAi^@HB`F9+!B*}B*9JRviaiY z%X#T~YgWeTakG<|$8-L_9P0yGTLG<$f#m}+Z_#LU*I6M?Y~L}r=M$A6z*&wE;9Oj- zKV*Z|TIhDLfR0E1@QR`=c({VH3Du+F{j=YNM$;+9NcL^Aw2tt9P_m?KYIz%|RDc3| z`b2v}p;(T(5C>;a(}Z>H2Wp{x!^qC3dqFIN#!{ud)ph;f2by!zzSG_BzdIVB9Ir+F zDPYFsou41m1lLvhK T%V%l&T{n}z0zAH6KhJ2y?o zdzb7VHTx;zT8^(tZd<3fEAJ+kO3D4+uS7ij&o6N8!^r1d{yT$pRFh38+->L0EJ_86 z=biVCE)VW02E3?pi*}TN@7 #Qj)PzDpc4(RuO6kQj3 zltxEVR6Z|_^}g-P89`~+^nm{T$&+ALhf-imNiO8IXV+iH`XeL<-QZ)lIy(H*zxa=R zIRdXOeccm%*ss`PWkh2>8jae>2j@q3^KG+_;U-VdO-GM(M}5?-+i0*d@-}!3fA(Qm z$6-Au)SJt+Wyno>*C WuDXCJH~nG7k|%dR5QKkKeR=?aT%4T$cw6S@Qh@P z;6DQ)<|k;cy|a&>$4K5-RzdgLr^~cY4Qa}Y+aWKZS;=Y5WP&~?Nqm)4U!_7vZ*b5^ zKPA&5jc+Xe*Vx}5qb~cF98^TiRu32oP1bmmde^AIYRKm5H;w(OY!roqa OU+#XoyU`31S-`m=Wn%HmYd_GBmuG<%~ z&{I!PW$JCKy $lWSAs#`sUT9CI{kzZO^cVgh{xcTE(tnIH~r-D1<25p~|-`fz yj!~p7gCcM-(hw7nw(* zN}&b@JAFdMoHZI9w)i?AC|)vjj4$w%twl~veZlwk-ntio)7m@PfHd@g*61Q><^JvA zK0b7&%blz5CnrT$?sFL*vH+1v3&z+fF^c$bCfU9fyIuyW%Yz+`zZGKT*WdbX>Bg-p zRxpvcDNbal&LQs(2Y6`m$<12+xwg8RvY^x#UHslrty^N5W{M%z^ko?c-y<@{)RjYwiz_)!jh%x-C=?&D&q=vKbselq`U>H)t K+&f8N9)CS5JDp8aP-D^1tA|af0&S@hXjW@O~@_e@XW- z^bvTq@2NMvKU~@_ZJ&b@OJHw(S8-UctW8qKK9Ynf68qqmAn4wcb)Evp%w_9RAAa$u zY8kpedr!Koun;bHWHmVtlR5h8_KXWi|8QkZIn@G8?N f{d&8Vs-Z5`j8jsaQ-r& zt3Thmm@9)pGw3BCQA2=2fLu*eAe(~ebuo=G=U5}NG%d@LTedKKuTORL5oKeq2Jz(| zuI eSJ+%7ulmmo!H=2&TUAxJ zA2-hpa2bR>Z>DTHL)|ns`aAa6YkqQGkM#^!D!V^(x>@dnrDEC#v+n Z@Y5jZ$)g}gG`k 5diWGyDW$u{h5hHECEou-J{ ~!_>j+@>`mXEF+ zUqxU>x56@GY~5WhhUsinkdWUHUbx3P!I=^p&yQl~mtbAwV}oAYYV%jg+aSkQ?P=P8 z1+D}_&|i(OKyEtP#@5yg$sNdvyOEAj?uY2DUcqSAjycnN&4xDy3Sj*Ew}1Z(ofP39 z_bZjr+6;?3PE3h&XF~3%o?>^KyNRsSR>$1~=qKqA>VwdZG5fOOoaC%pi{Q7AQ-Hzn z`D5r}D#35b%H)3b^r7n~FQ9!}Bsmg^bhOom3?rUMyn!~dMZT?e>UkT@fbzYJAH8yy z@rroMK&bjnxPz+Ws#XYpV=J1{9@eHX*v8X1>^GK%Ge0J9Xzy|H3wiE)dZO6)|> gBS#>!SL}{|8f2cnV3fm_ zeT-;d(gHabxcPNar!+_Q5tEedJy|6=8KSUF*$lK>e0oKn#8<=&hBP*Fc&gX#!-|A4 zm5={2uY_xyC*3y~UO&O>V`IU9^AdQMZ-4sTX5vOqoFCWW0~1jGT1crS?{>~R8JvYa z*6B9-<^GbHVP-QNB<4XWefOFDwSxPb(sU<7I>`34)0qIY+^5HmbS&={;8p(2>5b8E zL>bM|&d~d&puQ9<(Z99i=kG0_mrRJT`D@4uy=XDOO(3&{dfZflL$oIt?_O63I2a1# zr689ne)ztfP`p>;$2|yf`xuD^bAMlMyn~W%ke#0>*FJb%3)AwmU#a{2t^h#}jU#J* zKTEV?AUO9aoZ~D@)(I9e2&?{Caq)-D*+9bFqGfEIx74Ar+4%=8%wc|F-YW)oEx)3q zo4b+05rQh~>8iQfpD=6LE=VhrFlnt*vhyzUV2i=WLjxf%jscMJz=KR*FcLC|Mny%r z{<^N0IOm3UMQnUF&(8{LEIhsQRira}^1;b3bzV>oZb13Xk*l^D1~c*!kFHkPp48>; z5y!4~E}&(MHR`4wuzWZ>TT3%X|0$Mt95%k*0P4rXukDRkd{;`}SV>{Pdts#gT~qjg zk#8&jv7;Pw^g5y0-~mGOKnu+=CX_Qat+xdgg*CyFf`nb3;zQ;Rqlv`|^aP9gr@lil zg^Hj?0(>joF=rFIz3t097E1#^qizX^kch93JTXUyzAVA;pmb9orE}P@)(@nxro!AW zb+L4|RkGhjiEh#+6hbOor~{vIq(07mulS{<(qrdL9h1OSB*E@(^BD7o=5?->yMX vFmX%HkTN^==^O9 zvguq)2q1sxz-zEQe0uq{78Y1Xg9 8I;z$x_HcyIWGDu&M zcIjB(T|MvL+ijBvJ#cfhY9XdN#QNZ7N$a2?&zMM=x%7{TaQL(pi19z^^q$P%V5z-f z=ifM_lBotn8M1VgBeSc3C7qdY@vnN5mc}odbkjg*DTKCwF< uvW59y Z6y*Egm$SHZ)*WUO6d{s1sd40J5**Id<(oKN>^zVCkR~D }M!t)U_-u|wfrVh5lWeh_Sg1q9e z(?r(LQ}stJpK9;4d8O;fx4ET4nvwg{lc?Hvo0a*9`O&v1%NCV >30ZOMgt!uLhtlfM2fP|N5yy^dRE?| z?YAj7Nv+Sni ;Tgk}jbJ zJs-f#J{=gxP`3CGd4^LDb;SzUTw@PT%$rN|a#+87 LisD1XhPp%SMVUBI5y6m!1neQ#Cf?MVPR~{LFeYynhTOe*+?4#YFE@!>5?3a>BAyRJy{fQlH40#7oZ5C@w z8M$bm XT2;Vwtsa{nvyDN> z>3oQ}>}ZF`AHzQ84qh}dQu}c)B>$!J+01TMl`TP>r{J~OT}4Fycl>Nmn!}Ww?t%x6 zx@Bau?z18#*GWkw14G)8kpdq`__t?%tYOhXzQAu98grUzcx0gOdp p81$p(%vX#Z0K6 z1B1h|?Mt)rF8DNKe&6V}{SimSBzd?;owlkR)Om7p)jTOMebKXt4gE0D@_?C8^S~tV zHxDXsFa-ykEao{z@SxV#9}7;c9jllhxA?#&nUjSga)y0}E4JKO>t4xzDj(X5=}h#r zv7f3s#dphnWnyK36r>G)$pK!yFb@gyjjgaeYa#+5|8UIY2 m^F#oY zGuBhI{2a)&;O?w3!<+|1Pk_I-7fEAecm+zKaTB0>;aBNpW)J!va(6uVPyW&2ls{xO zfqpuTO=()zGS($lzLw}?Wzhy?M`r?2@j@n*cKy$N(rj4yb3KeF_aY924R#Lg842zT zEDse1V#48rG(Zm|RulPwh vHJ5HFMreWIA*Gs z*x1GoSeU*@e&(xV+u>}1MiP1(<#-9R@~-7}T=vZf182s~f Y$%P@N9=NLYwJrouV?!2dSDJ+qzTy4rpQ$S+Z- zqv2C7U4~C9+Ag#9vXC7d C6?CtEhxGTDx&451sfrH+({oX9DUp4a;^0N-x z |HZ1iWFF9WfhQr4-F s0Yx`u@jR>zQ}=!@G(W6Zjbt0*%}VUTJ@3rZ zTs7y?m1+ !={?ttzo#kw%qZWW z^Yn&x+UnMr5d&P@i7m`Lt&ka;KR!_uV8@^vBjW^^Sbs+u#8Owm24543~&qI zAMqeOofEoL!c($C8rP?UpIiQ6Xe4;xj8m4$F&U?>`t@DPS$Xx{Qa%1|t9dG&@(Y)# zXgvZmvXaci&zBx&KAv8-Xg$o5(3ST@%){PNjGZp^8^|01FxZhb4Xn?_WM7w7@-bc2 z04cF`(@go#uH;i7|FH3YX;EF4e^l8X*j=R94x%TQv-Mrw4BmP@cg1)VY~LX|vNjQ^ zl7!3*Ui6I)qTO1u=6^o=z+6HYv@0vfk-=K;`zo~Gl!LZLM!PeuOnmijE^f9F#V>6B zqcJ_9_7iroIu4BANx!D^<65*mn`DF(^CIfq9o_u@1G+SFtOfH~H}>$jsh#4R8o11* zm<|}Sy7oklrmC_V_q=__wGMtdJsWvz!@j6(f*>3wh~5mYTY{I;!_QWZdKAthJaB>H ztSemobz(O~qSU66N8TvN2e4@M@k}!Jjwc+~7*0&*hl`c#;s?+d>8*&Rmt0)pFl+}p zwvd#S?C6-LvNT>-hD@eq0ETwQ4zAoqY&?<&EGVFmNY^JWrhgQA)A~~UWuTl-cKMl~ zK26@@q(Cra wM?iWi(wLBQUGLmR)4?18Xs^<*Y+vJuD)jZ%y7GJ2l5^I}%+Sv-e~x zT|B+M#8LE!gn-%6T1-e~=#vGwAnb8;&i4IHSd5EY+~?~IxY02lp)A!{%9HM=rX}Uo zbjSJ|hCDdN6|A r2E+TO^qcxYuI1Z-__Aq~rDrJx%NkTu}Gd(aLu)7Z*4$ z>$_aN7dl_4Hzo8>J3 #w#we%%Eo-|TJs*+@>xG3SkU7@*d-y>lJt zzx{{euoB~ymS}Sc`7W|ja?~sF$r3ub-a-ZIkS^p_VspaEAezV!RcP}4V6emj;?BK> z{d*vWx`ZtmnlWAZMm&hw=>kV8r=8+`RFB7<*D0;gfzTPz$WvzMv(s_sF@z(QZqfe? z{XkA)`SMYSYA2Wm`TB9|Gq+77B|y;QtUbCqb?OQ~g%2k$X 8C|!9jls9%88q=YuvJn;;K#l+q0#gYjPWi4f6f9c-AUvp6p5Hb$7t0#FZ2)H= z4-a7vo2@|zwWIglM5>R@$la1UOCSw9w530BoMw^|ymv!Hofrwr`U}Crdu4S%j995& zsTk|KxZ=O%WVx}x=Bgg5mOl=_^MW^Lc=;~dL$}n+)kfB!K%KkIC7=mgOQmB+&;x$) zb^4X%Zx0Zv`tkwn?RH~Lv_8T#5G#{|h)-)zTk8L2+-b{bXlRQ3ZF&Bq=$Aj9ne?Mc zb%cptVcU1OU4$Rz{3PZcWG#h^Zm%vsoQ@EzmxippeEEywMg2!g9CIDG%Oyu%@dB}I ztU4(464+CFpD2uUM-qO$LK6Hl&t%<)h(*f>-i%O@GU?rkN^JySh3$V0TkHot)<1Y- zrAW7DssBzo7}c%9q%MnP;46Sf(B6!^G`?}3+frnOm9dfmhdq+eX$pYZgktmg1%G zOmXH$2b@Lncw?upo1^GUyMypUOi#%b-9ZmE$PGg}ci}RX%r!-)V_z#1?%H_&2utO8 zg~i1fh4#-G1$Bo9G;tvNaF#EPh@4++O%E6Z=H4f^#K1(#JE?zQB9cC8D>0&KU#*Zq z`kzxSXL8xvlg}w1daIg!tW}0Cl0oCNTi|gP 9*lT=JKXpE34DZsxI8KV!U`B~Fbtn-AQXy<#-~Ar>CVpq8 z7G^=&q|wRyGFsvkw{k?mw9gJH?aYkQv3--4L56A*J>P>pWc{8Z<@BoIup~Q7lMePI zE0yW}4MF}WhS#0{nJrOtUQioQ9lpY~q_BPo3Z>YG083`9V#HbP`N60A&Wq}7W6Dj$ zqt{46ci?_v${D@i=Sjq~P58Ai)Oijr=U_5vqt^)8tAC_6@=)RDu(5|&p_)z2$y|jR z`uCzBdrdkuwHpyHn24EAM-DL|gkoKuQ7jm{0T+63jF5fTGko}t^tgOfG qxddo;U^Op{h&<^85OKxKd>L~Y@d$@ZPK7X7p91ihIW$e|L% zj`+skEx4K}5-sn6t$XTdoUD%B%cfjh-Zo}xwp>jQo2{$Hlg@? 3e`DrFK`R+-5V$9rlnMfA%5mjY@3fvH0 ham-#$QjcyrI0@+@a?`KKV2dn!Z>(3SL<3_G=_mo4yu> zfi0C9CH{8pM;!4kek+NPc1&IgsNtxAJ=vHRhdp_Cu1tUv<(dP?&u8FyZLRF+lbCPv z H($FQWCoZmLmLG>r7zQx+w+UK>;%aUr1?HRlx*d@q8Wz)N_3~<)U zXB|Ep5m=QtN^7fNo5g{Zqd9+S?C&%PTRSrDyEx2wdeTgJ@R|l?Ex#+I?o=Yd8ZrK6 zjfSOQ8E^b?`NsD=Bo3zeMl5Sx%&7})Z!Q`@VPiGMr_!~`B3$;H80|JVSPDeST+RKB z_t!Mrfp5Kd>$@K`Ifw?LRQRp02yd|F1@Ugw0F>~u{Jfu1%}-07#D#mciCZcduuU<` zNR qrKD zjbTi$%K6Wmqk`#wt(9~xzlYy0B7ULozHjJ%2(Fg{$1NZ{TsZnCxJ5y zJ@%dN27O6 7HHH6D{(v^%@E1k}t<9ij VUNBQk2?1 z;)|8TBz~GcX{?_2P-Q{rN_U1VDd342jxhzZ7&++1KR3bg?W2HqdQ2 Dwgt6slKfXX&K zCCX=h_tsFT%2yA5QMPKGKnefgf~j;alytTrD;Vl)(>{H^B3r?+kvQRTIQ8T&pXwOt zWkP3tuy33CV~&ZNBa39#1GHU=+m{YuJ~+W8vhi;T{s(j;=qw?=8seXNYmZd@emB=v zG7eMj&~RQaNadK+weced5cxr&znhG6!hE!j)$w1OEn>Y0qTVOMhJoM-M7>Se`f1x( z$PBm1eaHwIi> @!y7&0J2XE&NYMf*08*7c){O-jc rpY*Zr|-U`1ul61?e)=0nECr zov5*PrsUo(bNS?&N(qzQGo9oTQ><0&gDX#J&}YA1i%Fq%6;j_SK^g-}Q|?J=jcL;G z-A#hyb}V9HjsOC^7?00mHi?xb8AZw`Zep~W%-OT9z5Ghw{mWguq@>0nOodkZUBzx{ z=nz?O%;SZ6{w0YLk>Vl8kt>mGVP0RNlu4%V8QB8qW>*{jodNk1%yy-?-e>tIw0?85 zK6%&TSNrRJdVopLbc?W7noI9<*u>5L8O__2d$H(G6~R^Oi^k*@8?V^fO9PZwn!<(9 z{p!cE3k8ay*oD9tKBt>hpq22P81vzfr&+uDD{wx*Ld5XNaJ&=u!6$JrR)rt7b5yo& z!cW$@3zzHVm`&FS%oIAOvz0d%em2_fW}>S=!MVpJmcsB!d$98k>qDjvytsTF?0!_R zJTgyJX-nILeEnPFkg;2o>)pZj$fij?c^jXnKWCr)*#ro_BS(CKtpcxzMdruI{*er2 zT9!F35j+o|&{|3>_~R77*pK>_INxQas!dI$m6yEyvT^;>_lfx_$`GIL18Do!AOnGH z kQ>zm(vEfHRkX}{d4m8R-gFs0rZvQCmkTX!*(0oEx``H-LyxnPp*qL54KSp+#dBKMf3)Q1-Z#ccns72C@#Z` zDp5S-XkXH_!7HOh=5T{>90h&zjwTx5GO%WjT4{?|zIlOPPH$- =PjL6$94h*ph{vW%LJ}Mg`B_{}d_E<;$MTDm4TV))!%gM;k z>Vd7Jv7^%UmZaPxd2O?n<=raK^Brk!99vi0g;EQ>U#Mc&z-;FSxc?k8@`jdlv14!F z>)J?tp8VD5ky==`>v?^h&q%JxO~80u*f!FBg_3Fi`;|>6_~4MpNKlM_x-VSDdv!t4 zavzMfI %r8gcz3} zT6;Y7*OV&H*?cZ^MuD=JC_DGPDy?sYNn3U ta09Y6* z2MUm{oLI3J8F>U PtI76ldX%`fL8m3iA*^$@2Ne|P-@^FAt(&FkMxevY7~|Q$0K<6*bgJc9eFObLXiGsD# zu9b4od~iRwdX8Q!Ze<~e 7UxtGSaptkm*P z`TwK~``kj ~i!8S{}cAU>V zMep@nHQ#=9DOsf|U=n=Z5WPMTkwUoO;YEd56U!N{bAuPHe=qQ1{yq5@4}bL#n$x~w zto%*#d{ahzp!_ B(WczYL!McR-YJAw7>^8~`Cb7i47mnia|HQT8C3pNGVLJu0 z&J;FaR&U2}$kcjxdx$@f8+E$y-O{)5@>*kZ@KY^pO4z&ov$ay(YZ3}u8#x(0A6%Sd z#1>cYTmG}_xb!6j*n6<+3u06lnh~On%MnH +ABLhTf)ylgt4d9pF47* zeZ2F0gV5ae?{1^wf>+3H1O-Lx!C5V`T|avME?e&|y~*GLGV7Crn*0L+7MzE*3wh&= z!@iOIcP7I|qCEUvZ?AmPvmm~vYMe(xGh81#*`2V=@r-SH7cN} *ummWYxe(4gI0sz z%w|}3@3?5rAao?H(D2ey9;7eCFmu(9iT?4n%Z7dD6HZi#=E2ky`vv}pG}56l9G|hV z5Ip|3kLo}idlcz`of{S$%JUeZLI{bqe~0#4FnW)bjer+Oxjsw+&Td*Poey3|1+Md+ zc&0LDW~EXdR0?l`%PPCs+uNd}i|@1E4E6Q5X+NA=sRR6v_(|7Pm7j}
uJhRH)dsK%G~q&p4zmUe{wy! zk`eN|Rumn3DuFb^*4&JKtI^2XlOm^Aaq(T5^C5ybk|9rJQrKDGck=UC39t}2`~V>T z7N2;%*<2)2+HBmIzNH@KJ1&owfWG7QQF7^G?%~U@)!s-Ihc9(>uNp|;?N`Oa>@Fq5 zy< U%1=JAB(OrMZ>AC|o1SLN1*91Xw}{3U@0yBwoc#y1Cy95=kTS?R!5bcT zy*Cq|e4&-Lv?Tp6z&CurF!ozZu5k^AhLHm!t8m!|yQ9tq(e0!`Atx=1Imir)Nas^_ zluJl3ALgyvR#z}5H6%l6RdB15i_L^YJsji!4a$zzizBR#Jpe6%(6E_!`pU~QB +a=Or4hwA6^Bh>$$SXnB{)V2?zs03pi9b)BWFzs1()2_8W@iR1%h` zuAZllzu)R?QF INsB`EfT{iDt3597Afl!a~oDn+Qm?V%*kn z58Nn<*R};9p{e3N#`}v!gadW3pC7HLWv(R2SOVFsn^_2XSet0#!WZuD_SMbpIj%GS z*a8aYT8eKyG%TC!0&8fL_(cS4yd}~1rvSkxSj8!eCg=Yn=`8%3e!n)pfrx;hba%r5 zL8L|~64DI=1YwlGXc$O|(xY2qboXcpMPRfjy^%UfVw9BfMW6Y5{(`+e+h^xK=Q{7} zx-T=D3M `#6tb zeeuj7t@s&VxE!%XFqTjRFvLf5;B}XC@Eq)+?Z?50w*$3S=gw&2*DQd2P7Hd>`WdY0 zg`%FT)v x_RnK_v???TI9#URxOrxvavILdfMPy;s z@9b+IN)0slHhEblf_;YzzCr~CK`ocWSep|OyABfYc+9Pb>dhW6T|J-7ifPG&dr8 z%friq?(1oH_s_pDd>QEE6c+i)hcgLgahd9>gguB)4Lb@#ATWKwwK%s+#*yM`LR*js zIY%W-gsd3UrkJtM-g}K>qmL6q*8_F>w`UHM`es u?gS99EUHfFt*C5vCL6wOYS3F_f1 z2OqJ-qt9`|Q_|GzIpHA=*!@K7bJOw9kq3+(4(-GbMv!BxT0NuV6c#}DdG9YjYL!_y z<_(jbK(u0l>_ts?O~6Ts&y&PBagPv!TfZ(|&8`)a!WvdzNl3BYMWj;?s~rBPMcCZO z&4 5)m5oS|Tx(-VGs*96_+)GBE^Ne2kgRBC1b4#KDA!M9-D9C}emdNE0jh_K zz*tuer*lPsFndXjlc6)$$uYyxGACBMs#URy5NHv{dTR$O%a5t@x2FGj^fM$)cF3G3 z(nj3;u@-njVBu;LR$Eq+i5CLEy(oRiE#zCMv6{@bzE~nMRe{9xidN~j=th$JtDWyG z3#>g%)}OQ^;^u#l?Y|&4M`utLalH1Rz%moVU4;C)T*6?1_fg?>&}jpcs+)&_5_=qH z`75t`T+AekyCd4QPI{9NB=vAWSD;#Z>qgp^ujbnjIz6TAIE#?X1mOzZ8T0Tm*{Mme zWnp=+RTFTctt))lUno&pc`LKfRMEqovEUk7b9EjBs9%?rDZ1a>X(AM&C?rM%vhML@ zhx_NAwNV@78oU!=&4J_42LnaVxKy5ia3?E5>XT-~9Xs74@IWO2t}-P66hXr%yg4x_ z>f++E(ms;&ant{9#3%`?CDQo9z4FT4LQ&6a;-Y1<0#~B)%Q7Ne#g6~IY*6?FWxok& z?mMp(*^ZtG<&>hJpda0kZ1BESn~Q@`k(80H72e FVc-&^Zu;HyP`&kbH82FxdS?FnE4_jBYnq77jqCS3*>&}ww%e1LBk+OL zIwBl T;{CW=GBR4ODqgseTrD>=gPbjGZF3r;X zX-SuyBFM4n7H9{Y-l4RUgk1Qh6$T==4ZK~yLaj5wfNCQBC)8LBg|~zYhI{tEt>J-F z0%r~r2h29&&q_oDlMrb|U2O95exA`Y^q)eJana?NuCJKo<&eHTdw1EdR=4}rw+y6P z3Y^qSQB0#WDCrgkl&wfdMA*C21^B(rD$uW LsUM?A9oResBH$!1&ieRW*YOU073QY+;C^t_eKLTQ!ePzV1FH}>7LuE!z- za4SA&to!R2y?>}po8RuD8e{%OQdY^#K4EXJVy6;cc_nZA@gkhl&Wq%rjoyGc>F?H| zUBi^`xRj*VLHsst7cfe-9?JV29zXEF;JFok7he&*Rf9L1Ag)K4FH<}=X`9_CQiF}n zVP%lMlOB{1@36eRom1xgr7a}_WZOspJNi|f!GY8i)w4twY&-b{Qa<{EfLMk`b8sKZ z1l)}wkF1KLrjuOQor}WIqa8QQA{P~b3Xg0Qe++R#`t|jR4!R?hhOTns+V!sUPUtwV zMwXekHauvF)j1;CQx--D^^!z}CmZKHEA~){5F_YCDZZSIcAo;bm}s%(AaL_pOGukZ z^@(`Cqe>XZRpci%ucMb Fj6L|LlKdohL zl?zi`aaSz&;?f8g^dkwTciLco`9~m!aN#W&YY4m-=_fF}?F1z~04*N4 #lc?UuQ>ZeNb1LwB>)S9Lp8 oYzX@~onnaf_Y6 zux>#k`0bjSUO8DbX+Bv9>yvUVdEl8zAuYp!WokOWj@BEa953%Pov S4%fhX!JWCoO>6;2s#a?Q{_f|hM&rhy z@mu}BZ)NASKn_@6E;&>$excRrmx*WQHKoKlF~BDx!&KqsYc86V
{N26W5DG%OM17>w%>)4&A +*7WUtwP&-# zC+QJHd0q5OvV<*_$5G$w&^cQ7{)KzY1_ebgW+q~#jt*NX#zkitG^LdhW+k53_vT({ zEcgAY_Seib=r$d>`fS^o4%-t_Dnd9c<6E6t2SGvKgo)}`m5V|&@#E+h^t~Kju^m(r z>vzcs- };eX-5Nli)dxa@I(K&PFHfZGRI>M&SNnTw}TdlIF)j~}ncTVnM7 zqerOUm}rj0U&o6&+eTP~zVq8 2KcV8ZgO?FWnyEbI2FskZ!c?iKDMY zQdwN9AAtfnf?ho|W>e;&zo(59TikNIykOHy3jx<5ZykIM+B QYn zFjR!`hrUIx3IQ3M*D@H|h}1 4+a#0+kLVA`aj3ADpW~_>(l`q z%HuYy(^F6{cmN5Hs2fAPJfvH`0ctIOp(*<67F*QaZ%pb=7zK6n)Eca;7)nZ836o99 z>gvI9vxb3>p3trOstD~9zHBHZ2H9}6HHyijH>e@>F2IYH>rj>n64AmX{m%F8qLv~u zzC8U@EX}N}f`T(6y^qPCg-4sB?b(gAt)m1x0tcK8@{A#^vt<{g-XRK~tCXHMIzEAK z>Gn_M8&^6cCOFSG<>G9_pd*r&5A9U`SH3`Y8D8B6Uf>Hcs22KjB0}l+$53!Jl21hm z9xXNzuMX;u@jfp0{C%r=X@mf>6R6rzChAZ|^S-$iS51!ZhEB5JT|(^ lKxT!!AleBgB-8XWeNR>*p>2A$0G`N6mx33J*yAq`VX zI|B$l&MdJ@PVMKj$ZmGy6D2=;IAD?1mJn=!UV2a)IA5UQHGoD7QBy=i%?aDY)0grA zDIjX_#_m$fA?F?< 6F$I$A_)%9#}Z?hK)=e{touX<-O3*%t~NXSXC&tpiFJ6cCzl82w#i9>xBJMJ$Iz8 zdk(t*KeBTT^o?{GZ0$r~EGGV`T4tl$5}kXCzo!ddK0WWj(|roMa3(U3gf1w^`1=~v z_hMV;^oNTc*s%`CBJ+f74H89^fff_+&Rm;zdAil)3)GgjQ=lxoJQvEAd-6*hsqCeb zWYyoY^SZVI_k8^~xekB>%lJg(kAR)aLt?f12qkoGU$|dYo&OIXsIknSs(F;{&OzKf zmF5?=r7fRV01IfEvbkSXeEj~rQG?U`Zp41OoZ)}>f~m^S<_zP^s|$q+8-D}>IvmRc z8v-Zm!p3t6G rTxKK;nV7iRswAHX XwJqUnJj~;O*&A7As{< zTp{DGuu--^Sn+7!Y~%01vtK7aezbej*CdV37ts%tQ6RT9v4+XcA2kl_74V6`Oa!`k z|7-iIE+u9ngZ>_7f^Z;HU)MCJG0SbSxa(COEN_ch(9{Daya$s0o(~lM$hI*NJVcd` zIdfKlm2T|}4V|Ehw~{Kttsv(B26rPfNlr7LEgraIC*bGLHHOE-0Qb&p1cAr!s;j`Z zmQk9aIV0oF@4<-Q2k}}cMR)Z%=U# Nw;sMLQxd}ymSp^GdpVM->z z )-U%HX_G{Ikimee2XsflKy)j(2o&RZq>>^ut*VSgVuxFNpW z#nfeBvd&R{PfpG#sh96t3R5C|+h(1qLp%*&q4JG4!7CcHIW#X-N#k6h(Vz8E1%VYA zNrF~ZA&n_1@tAlr^?DJ9)8i<{7CZO!$EN5l?b391+x7cS|LIui FV zq{!5_I%qRyGNR8wq`Xl6drSip%uG!Qp>L*bYbz_O)4}5`rK7x`L_$L0Z!LQ6at;T| zkiyO!b=47q1Y+4OSX4>MlEd=)PD=n`ZAY5D{&Vv<|Ij+~f)14rZTVbvd&418+}1 dYBbWP8Un2f$i}XW|#ET^pou6ez(oZ6mwM^FsRVcGu z;Zu%vY9fUObs`L{7~ryf9y-*dbN&|=BDwruo|iZ)V1NHQ!+@HMU4~9yo7jDPXvcO) z+`88-J1%xJt`9|11WEfS^oPBOR|M(3@X5ET{igUb2**FVHxip;rzr9=8sC09iL`gH zp&^b(4G1TZxTg-wOXJyR-@*yhEW_=d3prX|-rI7H{fU}g v31=m%uL>eR%|JU&KsoEU&l%TLVSLcJMOFgBOop^ zE*_2@Xa(1W_x$Qz1L}10&O{|1NNcZrmGimz@lss^)&WJEl)qtISjn)Wgq%vKpO8w> z8t5vLF2x%W)NdziJ}WkEXe^N7JSeTO?bdOG$Ltt8Y2f(qGx@{B7nD1#%T2a@;Wmtv zgk3c(G8)F`)6v`h$WX!>UZDPPW$HmrSElXa?OJQW4pd~5T4(Eoq0umE6u^y}a}AD1 zS^)w4(UO>%aSrRRZvAq>lfhLc;$mWK#t3G=m_M#7ltPag+)(Dx?z1 P*xizb zy6?}Rfaj5MH@EHPkLX$~Dm*RSN2$7&kohSSo(>B{=KaR9mUU$g@J7Hly8IJtAC`uv zcCk(u7A=`l|5><~c>}ebptL nDye 4F58dt$pJmlKH;qdI?b|Ee!g2#eb7w81>-@!%{M}v!UE+uYtOu%bvJHi6 z(n$w 2%u8F~#obEUJRE9_Fg2d22Exf9 z (?9JtK?tqfYy8iPC^hs0iZUDFlJoF|u~h>v?_=Y`e6wl) z(g+(ML=Kk0m0)0R`Cok8dxzZE^tL-x?-Y$Fi4OwFEeB`mjYd4ZS6aD<3-e=ehnv&n zyy`A<$(PAiJ9v}b#D~VFBH{0#s~;8bHRD%(iMn iBjt zLFune-`FOf_~(oH=wKFw?w96RjVT#e3>;76o4&V8RC5(cBiSF`EW2Q3wPsPGBc9#H zrxH4 )MBk zjFfH`l<~0QHphco2DGeT$A1&z)p#ruH!Yj@qt%Z|o#k|yj8A%wK6Iwu6u-T?x*D9Y zB9<;O`4L@ly dtR=|U}rPL;}sqrfF)^OCAttMz#C@u-Cb zdO5nPq233lYPeQMyYeCabU`N_6Kv0&XjK~EK=u7FL1ub!v2(dS?<17diP!7v }Nu?IuX>h(0KahTaN{P&LMEFU%u<>(-QNBt!gS!GN25eh+JIW z)UZ!JiZZ`duMWD6av6*gmJfoc@}S1vy`-flTEGmw8bdcb$ez3YLfE=zJ!QP^170JG z&tnW(9*FRYLM_0o*2?eUBN_%o=GPEkpA0gQ@#*VNQa-Mm-gaeziVrSv=sFj|@o7s` zy{!J0;DDBPGiZ_}nQZ(~Tw(^4Oc}ZwnGM=H-w}6I*{V|jlCjE1Q9k&eXNe?bf z(VWTdv>MlFk)4X+g@GN4bigT(g`18MkQBY8HwehJ3TUlbi(M4#O|A7On4Qy5pH0U1Wzk>P=YUXaE zhO>b@7xN~{aS)aDqZ{E)aI-@TZ|nxM!IxcQ(Q_@}#FqoU!AjVH>Ti{5@qtHoMQLTL z1+sgi8k?>pPfoWk#i=vm*ZWMVwig3& 6Z`bg6QFumV3+rCa <0v}0b=a`^O%F*uj9p;8dYMPJ9Rocd?C2kKv z)h85wTfhLOo+ZP>pt0Ks7SVHMm4(e+ daVFNQk;2t@`}au{b?MZDq|)_(=D)E{WEXR z(~;I1y?(g$a@%em>~ocK6ICG2J_7A=bVAU21e;Z5d^-wiv>U^)cLfa=%;*hp0*K$= z(b0}ouN)^5<1-8edEo7YG;dhddt?LjEcEj;BQPOJrw{oX>9D~p3JozT-@eENYs;ML zCTPmQ&N3aWR{Dq&h_+{UcWqe(?RU(m8b^kydaeh0QGN)_YxaLqxjeP#lj8HO#=Rh6 zF=1+@mSEe@wNF_g9{b`4A~L8r;Tli4RePd`X@B11MdK7k6vEPMup=#O*USjCWQiSk zMbj+0=Ma!xF-`lvt4Ab{e)(cs2J$(d*!s?kd&3`LXqD)?06)Jb=OtphkK9lS-dGzm z=^j4*89`D8|L9g013*2wgD&{alHq_10Nx%6Hn01Ib!A@;;<8i0Bo2rca-}Blm(94I zb>(oIxjQ7VJGq(*YmRsAP_6Xw!%qZ0AJp*C@O^)${W-7#5&Z_tf*pBHFo7_mh-3^p zBZ&;P>MkT-1-Jw{WO!=yf-T>3`3Jso%%z)nlWx&LG8UA$f9SN9bozQ{pc+^gL4pbV zf{)p$xc{d(3?@-&Ntr|$f67w>nSmLXJfOw;9E5e(%>(t9ze`(m4)d4y6y$vwnureO zfghqC{&UalnA7jLus1WH>M<$OFdkcn+q;d*WB`7|0W|5Awp8{*kW+@SWO9Gr-Pc!Z z9|94pJB`>^HDLf*j-*k;sGm*{gf=>le&pT`IygPQ<_Fr%<)mKSKZ}$*YpQ&F%n#V} zny`G{xyBZ`6L{eFKJxhT9WnY8E*{U%RLt_*LHbuHP)mCP1G?x={zU85(D<-FxUMhQ zXuT#Qnq}}sXppi!5(HxQJ#j00iH_#k kNaBQ%kx-wbU_qM0XLLN^<1ZT=i^2mh5 z8;jd&%{jchhN?V66SNfrM7@}^uo?w!=;VVe>wY5Pt|&L+<3T=N_0hkUa+2!g8>JaQ zH`lKBITb(Ov;q#57$S-6fCPJ#!rCuySU<-LKdy;({x;kX@xP6L`a;Yvg17UudguFi z%GKw0AJxR$S(T8q%{u=et9Dr#>|%TCte9O6$w4k2aORL>4!0noyHw~!ZSmw^^v=?8 z+a7J{3fbi(vhZHi44CUB550jcQh5}3?%2ix#(dSgJ3uE*Kj2giAPyIel8A )o#WzmAOu;_91{xB+ay8ArXQ( zI@ROjcXEIuxCUWVVlLi6x=;%p5vufWiNJsF*CgfmvBVMy9ikM{wj#a*sWjNxb0&pH z)gPQm)nKr~1_ueTkp!1@e|o$M{jijo4Z4 {PjtxKeBjrVa8$ zN1_b3ThVjt%1)ExC0*z|sc|Rqx%6`?#xmm-u=U~_kQGT6v568PriDpL+_~=QDkQPe zFH$r|kHFdx)iW7X7ghEIB&drdTZ=F>%OJo03@#btd8+Q96t7`q2U&?I75=k-23{gL zQ(lZ3=tJ=o5Ac6b4nIsTPHD1i>69)$Rnsgm>nU4CI%yegi1ZDPA?u6in-6o%B&-od z=k2R~@A5++gi`VI=2KCE#MGwihY-7}+XwXF89jMQ=((dG(N52Mt78N+zn)Ho7EW`# z^y>3cY5qP-q!W?j38^2O1xFbQ+Ah($ v-Mpx^WiR%rfDm-Psr(H zmx$Z^GSE~v-&hJ~!LmU!%~z4Qd7kVRNKMzd0F4$;I&;2%zip*-P>X4=34Q5uo)T84 zCo($7Rk=OQ%Hgr(q9g%`pung+j6WV2CG7SiveZ6-%uwUFdOc)jTFHoMs(3V~gC@t) zs49~S#aAKUMA1U!ple9 zYq zqix!3T4NbdH;e!Ntn=|BRh#pnX4DDQS5mg6y{J7u$IDvB#AcId8?cw7`fbZ`bYU=~ z;1@?IGoTBI4rFMiGyLL?r^>*^o9PMi6g|}_hLj| Oyubpcp)6Spvp=_3j0QH;h0l@wySP*p2-or;z#9UBxFT)WV zhY49-vL6Ze$P^rfan 1F^aBt0gYUf$FL$}5%T2gh73gf gX53rBgQ5Z3J|q>H!Lk{klmSB2E@@jmqhw$Jeu@7xn L9h6Eq+D`>7F_DS}wH^K5rl%1Ptc5QL1k5}K)uKa4FM?Y=E0v9|& z9QI{@$tI>MP1ciPmOoyr|Kk`3sW4mIwG6)#pPr-k;aEwS4xp~ErQ?0sMoH4V;k3=s zORHYKholU6=m12kUN$@6;G`O h3z;rtKhpY{RF?+T%d&-frTjBn#9P zfuAjX3B<3i67aYQ)(J*=9sFp9`a^Y(K=ZT40Vdg{t48q_CgaSB>R}1hQadZQ4@M%M z^R^>*Q5u2=Yg4OjqVzi2(^2H*x7+yMoWz6*b<4S$uN|XJTEr#;o|Jqohcx@<&%?4# zwv%J>e=