From cce6997b0760b78f2e43f7f9c5166185bfcfec1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petru=20Bogdan=20Brah=C4=83?= Date: Fri, 19 Dec 2025 17:47:23 +0200 Subject: [PATCH 01/34] doc: database schema - 1-database-schema (#5) doc: database schema --- doc/schema.dbml | 258 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 doc/schema.dbml diff --git a/doc/schema.dbml b/doc/schema.dbml new file mode 100644 index 0000000..0f1d394 --- /dev/null +++ b/doc/schema.dbml @@ -0,0 +1,258 @@ +// Syntax documentation: https://dbml.dbdiagram.io/docs/ + +////////////////////////////////////////////////////// +// STORE STRUCTURE SECTION +////////////////////////////////////////////////////// + +Table brand { + note: "A brand (e.g. Lidl) having one or multiple physical stores." + + id int [not null, pk, increment] + name varchar(63) [not null] + logo_url varchar(255) [not null] +} + +Table store { + note: "Physical store of a brand with geolocation." + + id int [not null, pk, increment] + brand_id int [not null, ref: > brand.id] + + timezone int [not null, default: 2, note: "Encoded as UCT+."] + + name varchar(63) [note: "A store might alter the brand name. e.g. Lidl -> Lidl Poland."] + description varchar(255) [note: "Anything, maybe some navigation suggestions."] + image_url varchar(255) [note: "If not provided, the brand logo is displayed instead."] + longitude double + latitude double + + indexes { + name + } +} + +Table floor { + note: "A floor of a specific physical store; each floor is an individual article map." + + id int [not null, pk, increment] + store_id int [not null, ref: > store.id] + + // According to this: https://www.ricksteves.com/travel-tips/trip-planning/european-numbers + // In Europe the ground floor is considered to be the level 0. + // In American English this would be defaulted to 1 instead. + level int [not null, default: 0, note: "Zero stands for the street floor, one for the one above it, etc."] + + indexes { + store_id + } +} + +////////////////////////////////////////////////////// +// LOCATION REPRESENTATION SECTION +////////////////////////////////////////////////////// + +Table edge { + note: "Represents an aisle between two reachable floor points." + + id int [not null, pk, increment] + floor_id int [not null, ref: > floor.id] + + // These two must be on the same floor id. + // That id must be the same as this edge floor id. + source_node_id int [not null, ref: > node.id] + target_node_id int [not null, ref: > node.id] + + name varchar(63) [note: "e.g. \"milk corridor\"."] + weight int + + checks { + `source_node_id != target_node_id` [name: "An edge must be between two different nodes."] + } + + indexes { + floor_id + } +} + +Enum node_type { + navigation [note: "Either store corners or aisle intersections."] + + // Should be defined for all floor except the highest one. + elevation [note: "An elevator or staircase to the level above."] + // Should be defined for all floors except the lowest one. + // This schema could also describe a store with underground levels. + descent [note: "An elevator or staircase to the level below."] +} + +Table node { + note: "Client reachable area." + + id int [not null, pk, increment] + floor_id int [not null, ref: > floor.id] + + number int [not null] + type node_type [not null, default: node_type.navigation] + name varchar(63) [note: "e.g. \"Start of the principal corridor\", \"Milk-toys intersection\"."] + + indexes { + floor_id + } +} + +////////////////////////////////////////////////////// +// STORE AVAILABILITY SECTION +////////////////////////////////////////////////////// + +Enum day_type { + MON + TUE + WED + THU + FRI + SAT + SUN +} + +// A store could be opened in a day multiple times. +// e.g. Krotz restaurant opens on Monday: + // for lunch between 14:00 - 16:00, and + // for dinner between 18:00 - 23:59. +// e.g. If a store is open on Tuesday between 16:00 - 02:00, + // then its operating hours will be stored as follows: + // TUE - 16:00 - 23:59 + // WED - 00:00 - 02:00 +Table operating { + // The registered store must include its schedule for all days. + note: "Operating hours for a store." + + id int [not null, pk, increment] + store_id int [not null, ref: > store.id] + + day day_type [not null] + begin datetime [not null, default: "00:00", note: "When the sore opens."] + end datetime [not null, default: "23:59", note: "When the store closes."] +} + +Table event { + note: "Can be a national holiday or a custom defined downtime." + + id int [not null, pk, increment] + + // It repeats every year if both fields define only the days and the months. + begin date [not null] + end date [not null] + + name varchar(63) + description varchar(255) + + checks { + `begin.year == end.year` [name: 'chk_valid_event'] + } +} + +Table break { + note: "Some days off for a store." + + store_id int [not null, ref: > store.id] + event_id int [not null, ref: > event.id] + + indexes { + (store_id, event_id) [pk] + } +} + +////////////////////////////////////////////////////// +// PRODUCT SECTION +////////////////////////////////////////////////////// + +Table product { + note: "Product catalog and details." + + id int [not null, pk, increment] + + variant varchar(63) [note: "e.g. almond milk."] + subcategory varchar(63) [not null, note: "e.g. milk."] + category varchar(63) [not null, note: "e.g. dairy products."] + + vendor varchar(63) [note: "e.g. Zuzu, Alpro, etc."] + image_url varchar(255) + description varchar(255) + + indexes { + vendor + } +} + +Table article { + note: "Product commercialized by a brand." + + id int [not null, pk, increment] + product_id int [not null, ref: > product.id] + brand_id int [not null, ref: > brand.id] + + price double [not null, note: "Base price decided by the brand; may be increased/decreased by stores."] + currency varchar(255) +} + +Table stand { + note: "Links an article to a a specific place on a shelf." + + id int [not null, pk, increment] + edge_id int [not null, ref: > edge.id] + article_id int [not null, ref: > article.id] + + source_node_distance int [not null] + + indexes { + (edge_id, article_id) [pk] + } +} + +////////////////////////////////////////////////////// +// DISCOUNT SECTION +////////////////////////////////////////////////////// + +Table discount { + note: "Links an article to an offer." + + article_id int [not null, ref: > article.id] + offer_id int [not null, ref: > offer.id] + + indexes { + (article_id, offer_id) [pk] + } + +} + +Table offer { + note: "Promotional offer of a brand/store." + + id int [not null, pk, increment] + period_id int [ref: > period.id, note: "Optional active time period in a day."] + store_id int [ref: > store.id, note: "If null, the offer applies to all stores of a brand."] + + percentage int [not null] + created_at datetime [not null] + lifetime datetime +} + +Table dependency { + note: "Required product quantity to activate an offer." + + offer_id int [not null, ref: > offer.id] + article_id int [not null, ref: > article.id] + quantity int + + indexes { + (offer_id, article_id) [pk] + } +} + +Table period { + note: "Daily time window for an offer." + + id int [not null, pk, increment] + + begin datetime [not null, default: "00:00", note: "Start time of offer."] + end datetime [not null, default: "23:59", note: "End time of offer."] +} From 6e35c9a9329571a1789ab173ebaaf8c79c91cb81 Mon Sep 17 00:00:00 2001 From: P Date: Wed, 14 Jan 2026 22:17:27 +0200 Subject: [PATCH 02/34] doc: README, original goal and updated tech stack --- doc/InAndOut.logo.png | Bin 0 -> 83112 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/InAndOut.logo.png diff --git a/doc/InAndOut.logo.png b/doc/InAndOut.logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae2eea7ab153241f524f82b5024e067aa2c9327 GIT binary patch literal 83112 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 literal 0 HcmV?d00001 From f55d975e30d16f315debb6104f33b58103b10710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petru=20Bogdan=20Brah=C4=83?= Date: Fri, 20 Feb 2026 21:19:23 +0200 Subject: [PATCH 03/34] tsp-design (#11) * feat(schema): store mapping version * feat: audit fields for key resources of our service: createdAt updatedAt * fix: varchar2 * feat: one word for schedule data of a store * fix: too many not null constraints * fix: smaller `currency` size - varchar2(31) --- doc/schema.dbml | 114 +++++++++++++++++++++++++++--------------------- 1 file changed, 65 insertions(+), 49 deletions(-) diff --git a/doc/schema.dbml b/doc/schema.dbml index 0f1d394..0d34b11 100644 --- a/doc/schema.dbml +++ b/doc/schema.dbml @@ -1,31 +1,40 @@ // Syntax documentation: https://dbml.dbdiagram.io/docs/ +// Visualization: https://dbdiagram.io/d/InAndOut-693154e7d6676488ba8f6f4d ////////////////////////////////////////////////////// -// STORE STRUCTURE SECTION +// OUTLET - STORE STRUCTURE SECTION ////////////////////////////////////////////////////// Table brand { note: "A brand (e.g. Lidl) having one or multiple physical stores." - id int [not null, pk, increment] - name varchar(63) [not null] - logo_url varchar(255) [not null] + id int [pk, increment] + name varchar2(63) [not null] + logo_url varchar2(255) + + created_at datetime [not null] + updated_at datetime [not null] } Table store { note: "Physical store of a brand with geolocation." - id int [not null, pk, increment] + id int [pk, increment] brand_id int [not null, ref: > brand.id] timezone int [not null, default: 2, note: "Encoded as UCT+."] - name varchar(63) [note: "A store might alter the brand name. e.g. Lidl -> Lidl Poland."] - description varchar(255) [note: "Anything, maybe some navigation suggestions."] - image_url varchar(255) [note: "If not provided, the brand logo is displayed instead."] + name varchar2(63) [note: "A store might alter the brand name. e.g. Lidl -> Lidl Poland."] + description varchar2(255) [note: "Anything, maybe some navigation suggestions."] + image_url varchar2(255) [note: "If not provided, the brand logo is displayed instead."] + + mapping_version int [not null, default: 0, increment, note: "Used to validate cached TSP solutions."] longitude double latitude double + created_at datetime [not null] + updated_at datetime [not null] + indexes { name } @@ -34,7 +43,7 @@ Table store { Table floor { note: "A floor of a specific physical store; each floor is an individual article map." - id int [not null, pk, increment] + id int [pk, increment] store_id int [not null, ref: > store.id] // According to this: https://www.ricksteves.com/travel-tips/trip-planning/european-numbers @@ -48,13 +57,13 @@ Table floor { } ////////////////////////////////////////////////////// -// LOCATION REPRESENTATION SECTION +// MAPPING - LOCATION REPRESENTATION SECTION ////////////////////////////////////////////////////// Table edge { note: "Represents an aisle between two reachable floor points." - id int [not null, pk, increment] + id int [pk, increment] floor_id int [not null, ref: > floor.id] // These two must be on the same floor id. @@ -62,7 +71,7 @@ Table edge { source_node_id int [not null, ref: > node.id] target_node_id int [not null, ref: > node.id] - name varchar(63) [note: "e.g. \"milk corridor\"."] + name varchar2(63) [note: "e.g. \"milk corridor\"."] weight int checks { @@ -75,24 +84,24 @@ Table edge { } Enum node_type { - navigation [note: "Either store corners or aisle intersections."] + NAVIGATION [note: "Either store corners or aisle intersections."] // Should be defined for all floor except the highest one. - elevation [note: "An elevator or staircase to the level above."] + ELEVATION [note: "An elevator or staircase to the level above."] // Should be defined for all floors except the lowest one. // This schema could also describe a store with underground levels. - descent [note: "An elevator or staircase to the level below."] + DESCENT [note: "An elevator or staircase to the level below."] } Table node { note: "Client reachable area." - id int [not null, pk, increment] + id int [pk, increment] floor_id int [not null, ref: > floor.id] - number int [not null] - type node_type [not null, default: node_type.navigation] - name varchar(63) [note: "e.g. \"Start of the principal corridor\", \"Milk-toys intersection\"."] + name varchar2(63) [note: "e.g. \"Start of the principal corridor\", \"Milk-toys intersection\"."] + number double [note: "Uniquely identifies a node for a specific store."] + type node_type [not null, default: node_type.NAVIGATION] indexes { floor_id @@ -100,7 +109,7 @@ Table node { } ////////////////////////////////////////////////////// -// STORE AVAILABILITY SECTION +// (STORE) AVAILABILITY SECTION ////////////////////////////////////////////////////// Enum day_type { @@ -125,28 +134,28 @@ Table operating { // The registered store must include its schedule for all days. note: "Operating hours for a store." - id int [not null, pk, increment] + id int [pk, increment] store_id int [not null, ref: > store.id] day day_type [not null] - begin datetime [not null, default: "00:00", note: "When the sore opens."] - end datetime [not null, default: "23:59", note: "When the store closes."] + begin_time time [not null, default: "00:00", note: "When the sore opens."] + end_time time [not null, default: "23:59", note: "When the store closes."] } Table event { note: "Can be a national holiday or a custom defined downtime." - id int [not null, pk, increment] + id int [pk, increment] // It repeats every year if both fields define only the days and the months. - begin date [not null] - end date [not null] + begin_date date [not null] + end_date date [not null] - name varchar(63) - description varchar(255) + name varchar2(63) + description varchar2(255) checks { - `begin.year == end.year` [name: 'chk_valid_event'] + `begin_date.year == end_date.year` [name: 'chk_valid_event'] } } @@ -162,21 +171,24 @@ Table break { } ////////////////////////////////////////////////////// -// PRODUCT SECTION +// CATALOG - PRODUCT SECTION ////////////////////////////////////////////////////// Table product { note: "Product catalog and details." - id int [not null, pk, increment] + id int [pk, increment] - variant varchar(63) [note: "e.g. almond milk."] - subcategory varchar(63) [not null, note: "e.g. milk."] - category varchar(63) [not null, note: "e.g. dairy products."] + name varchar2(63) [not null, note: "e.g. almond milk."] + subcategory varchar2(63) [note: "e.g. milk."] + category varchar2(63) [note: "e.g. dairy products."] + + vendor varchar2(63) [note: "e.g. Zuzu, Alpro, etc."] + image_url varchar2(255) + description varchar2(255) - vendor varchar(63) [note: "e.g. Zuzu, Alpro, etc."] - image_url varchar(255) - description varchar(255) + created_at datetime [not null] + updated_at datetime [not null] indexes { vendor @@ -186,30 +198,32 @@ Table product { Table article { note: "Product commercialized by a brand." - id int [not null, pk, increment] + id int [pk, increment] product_id int [not null, ref: > product.id] brand_id int [not null, ref: > brand.id] price double [not null, note: "Base price decided by the brand; may be increased/decreased by stores."] - currency varchar(255) + currency varchar2(31) + + created_at datetime [not null] + updated_at datetime [not null] } Table stand { note: "Links an article to a a specific place on a shelf." - id int [not null, pk, increment] + id int [pk, increment] edge_id int [not null, ref: > edge.id] article_id int [not null, ref: > article.id] source_node_distance int [not null] - indexes { - (edge_id, article_id) [pk] - } + created_at datetime [not null] + updated_at datetime [not null] } ////////////////////////////////////////////////////// -// DISCOUNT SECTION +// MARKETING - DISCOUNT SECTION ////////////////////////////////////////////////////// Table discount { @@ -227,13 +241,15 @@ Table discount { Table offer { note: "Promotional offer of a brand/store." - id int [not null, pk, increment] + id int [pk, increment] period_id int [ref: > period.id, note: "Optional active time period in a day."] store_id int [ref: > store.id, note: "If null, the offer applies to all stores of a brand."] percentage int [not null] + lifetime datetime [note: "Precise moment in time when the offer expires."] + created_at datetime [not null] - lifetime datetime + updated_at datetime [not null] } Table dependency { @@ -251,8 +267,8 @@ Table dependency { Table period { note: "Daily time window for an offer." - id int [not null, pk, increment] + id int [pk, increment] - begin datetime [not null, default: "00:00", note: "Start time of offer."] - end datetime [not null, default: "23:59", note: "End time of offer."] + begin_time time [not null, default: "00:00", note: "Start time of offer."] + end_time time [not null, default: "23:59", note: "End time of offer."] } From 7d9d6174d4e382ea3860ba65f925eefc77531941 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Mon, 8 Dec 2025 23:30:32 +0200 Subject: [PATCH 04/34] absolut nimic useful --- in-out/.gitignore | 24 + in-out/README.md | 73 + in-out/eslint.config.js | 23 + in-out/index.html | 16 + in-out/package-lock.json | 3974 ++++++++++++++++++++++++ in-out/package.json | 35 + in-out/public/vite.svg | 1 + in-out/src/App.css | 16 + in-out/src/App.tsx | 22 + in-out/src/assets/react.svg | 1 + in-out/src/components/Landing/Logo.tsx | 64 + in-out/src/index.css | 35 + in-out/src/main.tsx | 10 + in-out/src/pages/Home/HomePage.tsx | 19 + in-out/src/pages/Home/index.tsx | 2 + in-out/src/themes/colors.ts | 8 + in-out/src/themes/theme.tsx | 27 + in-out/tsconfig.app.json | 28 + in-out/tsconfig.json | 7 + in-out/tsconfig.node.json | 26 + in-out/vite.config.ts | 7 + 21 files changed, 4418 insertions(+) create mode 100644 in-out/.gitignore create mode 100644 in-out/README.md create mode 100644 in-out/eslint.config.js create mode 100644 in-out/index.html create mode 100644 in-out/package-lock.json create mode 100644 in-out/package.json create mode 100644 in-out/public/vite.svg create mode 100644 in-out/src/App.css create mode 100644 in-out/src/App.tsx create mode 100644 in-out/src/assets/react.svg create mode 100644 in-out/src/components/Landing/Logo.tsx create mode 100644 in-out/src/index.css create mode 100644 in-out/src/main.tsx create mode 100644 in-out/src/pages/Home/HomePage.tsx create mode 100644 in-out/src/pages/Home/index.tsx create mode 100644 in-out/src/themes/colors.ts create mode 100644 in-out/src/themes/theme.tsx create mode 100644 in-out/tsconfig.app.json create mode 100644 in-out/tsconfig.json create mode 100644 in-out/tsconfig.node.json create mode 100644 in-out/vite.config.ts diff --git a/in-out/.gitignore b/in-out/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/in-out/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/in-out/README.md b/in-out/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/in-out/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/in-out/eslint.config.js b/in-out/eslint.config.js new file mode 100644 index 0000000..5e6b472 --- /dev/null +++ b/in-out/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/in-out/index.html b/in-out/index.html new file mode 100644 index 0000000..861b328 --- /dev/null +++ b/in-out/index.html @@ -0,0 +1,16 @@ + + + + + + + in-out + + + + + +
    + + + diff --git a/in-out/package-lock.json b/in-out/package-lock.json new file mode 100644 index 0000000..ad66a82 --- /dev/null +++ b/in-out/package-lock.json @@ -0,0 +1,3974 @@ +{ + "name": "in-out", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "in-out", + "version": "0.0.0", + "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@mui/icons-material": "^7.3.6", + "@mui/material": "^7.3.6", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-router-dom": "^7.10.1" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.46.4", + "vite": "^7.2.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", + "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", + "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.6.tgz", + "integrity": "sha512-QaYtTHlr8kDFN5mE1wbvVARRKH7Fdw1ZuOjBJcFdVpfNfRYKF3QLT4rt+WaB6CKJvpqxRsmEo0kpYinhH5GeHg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.3.6.tgz", + "integrity": "sha512-0FfkXEj22ysIq5pa41A2NbcAhJSvmcZQ/vcTIbjDsd6hlslG82k5BEBqqS0ZJprxwIL3B45qpJ+bPHwJPlF7uQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^7.3.6", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.6.tgz", + "integrity": "sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/core-downloads-tracker": "^7.3.6", + "@mui/system": "^7.3.6", + "@mui/types": "^7.4.9", + "@mui/utils": "^7.3.6", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^19.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^7.3.6", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.6.tgz", + "integrity": "sha512-Ws9wZpqM+FlnbZXaY/7yvyvWQo1+02Tbx50mVdNmzWEi51C51y56KAbaDCYyulOOBL6BJxuaqG8rNNuj7ivVyw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.6", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.6.tgz", + "integrity": "sha512-+wiYbtvj+zyUkmDB+ysH6zRjuQIJ+CM56w0fEXV+VDNdvOuSywG+/8kpjddvvlfMLsaWdQe5oTuYGBcodmqGzQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.6.tgz", + "integrity": "sha512-8fehAazkHNP1imMrdD2m2hbA9sl7Ur6jfuNweh5o4l9YPty4iaZzRXqYvBCWQNwFaSHmMEj2KPbyXGp7Bt73Rg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/private-theming": "^7.3.6", + "@mui/styled-engine": "^7.3.6", + "@mui/types": "^7.4.9", + "@mui/utils": "^7.3.6", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.4.9", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.9.tgz", + "integrity": "sha512-dNO8Z9T2cujkSIaCnWwprfeKmTWh97cnjkgmpFJ2sbfXLx8SMZijCYHOtP/y5nnUb/Rm2omxbDMmtUoSaUtKaw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.6.tgz", + "integrity": "sha512-jn+Ba02O6PiFs7nKva8R2aJJ9kJC+3kQ2R0BbKNY3KQQ36Qng98GnPRFTlbwYTdMD6hLEBKaMLUktyg/rTfd2w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/types": "^7.4.9", + "@types/prop-types": "^15.7.15", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.2.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz", + "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", + "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.49.0.tgz", + "integrity": "sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.49.0", + "@typescript-eslint/type-utils": "8.49.0", + "@typescript-eslint/utils": "8.49.0", + "@typescript-eslint/visitor-keys": "8.49.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.49.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.49.0.tgz", + "integrity": "sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.49.0", + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/typescript-estree": "8.49.0", + "@typescript-eslint/visitor-keys": "8.49.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.49.0.tgz", + "integrity": "sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.49.0", + "@typescript-eslint/types": "^8.49.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.49.0.tgz", + "integrity": "sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/visitor-keys": "8.49.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.49.0.tgz", + "integrity": "sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.49.0.tgz", + "integrity": "sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/typescript-estree": "8.49.0", + "@typescript-eslint/utils": "8.49.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.49.0.tgz", + "integrity": "sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.49.0.tgz", + "integrity": "sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.49.0", + "@typescript-eslint/tsconfig-utils": "8.49.0", + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/visitor-keys": "8.49.0", + "debug": "^4.3.4", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.49.0.tgz", + "integrity": "sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.49.0", + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/typescript-estree": "8.49.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.49.0.tgz", + "integrity": "sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.49.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz", + "integrity": "sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.53", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz", + "integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001759", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001759.tgz", + "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/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", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "dev": true, + "license": "ISC" + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.24.tgz", + "integrity": "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "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.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz", + "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz", + "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.1" + } + }, + "node_modules/react-is": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.1.tgz", + "integrity": "sha512-L7BnWgRbMwzMAubQcS7sXdPdNLmKlucPlopgAzx7FtYbksWZgEWiuYM5x9T6UqS2Ne0rsgQTq5kY2SGqpzUkYA==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.10.1.tgz", + "integrity": "sha512-gHL89dRa3kwlUYtRQ+m8NmxGI6CgqN+k4XyGjwcFoQwwCWF6xXpOCUlDovkXClS0d0XJN/5q7kc5W3kiFEd0Yw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.10.1.tgz", + "integrity": "sha512-JNBANI6ChGVjA5bwsUIwJk7LHKmqB4JYnYfzFwyp2t12Izva11elds2jx7Yfoup2zssedntwU0oZ5DEmk5Sdaw==", + "license": "MIT", + "dependencies": { + "react-router": "7.10.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.49.0.tgz", + "integrity": "sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.49.0", + "@typescript-eslint/parser": "8.49.0", + "@typescript-eslint/typescript-estree": "8.49.0", + "@typescript-eslint/utils": "8.49.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz", + "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", + "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/in-out/package.json b/in-out/package.json new file mode 100644 index 0000000..dd01905 --- /dev/null +++ b/in-out/package.json @@ -0,0 +1,35 @@ +{ + "name": "in-out", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@mui/icons-material": "^7.3.6", + "@mui/material": "^7.3.6", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-router-dom": "^7.10.1" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.46.4", + "vite": "^7.2.4" + } +} diff --git a/in-out/public/vite.svg b/in-out/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/in-out/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/in-out/src/App.css b/in-out/src/App.css new file mode 100644 index 0000000..85ffc66 --- /dev/null +++ b/in-out/src/App.css @@ -0,0 +1,16 @@ +/* #root { + overflow-x: hidden; + background: #FCF4E7; +} */ + +.m-plus-rounded-1c-regular { + font-family: "M PLUS Rounded 1c", sans-serif; + font-weight: 400; + font-style: normal; +} + +.m-plus-rounded-1c-extrabold { + font-family: "M PLUS Rounded 1c", sans-serif; + font-weight: 800; + font-style: normal; +} diff --git a/in-out/src/App.tsx b/in-out/src/App.tsx new file mode 100644 index 0000000..6f44340 --- /dev/null +++ b/in-out/src/App.tsx @@ -0,0 +1,22 @@ +import './App.css' +import { ThemeProvider } from '@mui/material/styles' +import { CssBaseline } from '@mui/material' +// import { BrowserRouter as Router, Routes, Route } from 'react-router-dom' +import theme from './themes/theme' +import HomePage from '../src/pages/Home' + +function App() { + return ( + + + {/* + + } /> + + */} + + + ) +} + +export default App diff --git a/in-out/src/assets/react.svg b/in-out/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/in-out/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx new file mode 100644 index 0000000..9b9af3e --- /dev/null +++ b/in-out/src/components/Landing/Logo.tsx @@ -0,0 +1,64 @@ +import React from 'react'; +import { Stack, Typography, Box, Button } from '@mui/material'; +import TrendingFlatRoundedIcon from '@mui/icons-material/TrendingFlatRounded'; +import theme from '../../themes/theme'; +import colors from '../../themes/colors'; + +function Logo() { + return ( + + + + IN&OUT + + + + + ) +}; + +export default Logo; \ No newline at end of file diff --git a/in-out/src/index.css b/in-out/src/index.css new file mode 100644 index 0000000..a909113 --- /dev/null +++ b/in-out/src/index.css @@ -0,0 +1,35 @@ +/* :root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} */ + + +/* body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} */ + +.m-plus-rounded-1c-regular { + font-family: "M PLUS Rounded 1c", sans-serif; + font-weight: 400; + font-style: normal; +} + +.m-plus-rounded-1c-extrabold { + font-family: "M PLUS Rounded 1c", sans-serif; + font-weight: 800; + font-style: normal; +} diff --git a/in-out/src/main.tsx b/in-out/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/in-out/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/in-out/src/pages/Home/HomePage.tsx b/in-out/src/pages/Home/HomePage.tsx new file mode 100644 index 0000000..d504016 --- /dev/null +++ b/in-out/src/pages/Home/HomePage.tsx @@ -0,0 +1,19 @@ +// import React from "react"; +import { Stack, ThemeProvider,} from "@mui/material"; +import theme from "../../themes/theme"; +import LogoComp from "../../components/Landing/logo"; + +function HomePage() { + return ( + + + + + + ) +}; + +export default HomePage; \ No newline at end of file diff --git a/in-out/src/pages/Home/index.tsx b/in-out/src/pages/Home/index.tsx new file mode 100644 index 0000000..5d87102 --- /dev/null +++ b/in-out/src/pages/Home/index.tsx @@ -0,0 +1,2 @@ +import HomePage from './HomePage'; +export default HomePage; \ No newline at end of file diff --git a/in-out/src/themes/colors.ts b/in-out/src/themes/colors.ts new file mode 100644 index 0000000..afb4166 --- /dev/null +++ b/in-out/src/themes/colors.ts @@ -0,0 +1,8 @@ +const EColors = { + MainColor: '#FCF4E7', + StrokeColor: '#95C649', + Accent1Color: '#EA982B', + Accent2Color: '#1C0221', +} + +export default EColors; \ No newline at end of file diff --git a/in-out/src/themes/theme.tsx b/in-out/src/themes/theme.tsx new file mode 100644 index 0000000..4920f7a --- /dev/null +++ b/in-out/src/themes/theme.tsx @@ -0,0 +1,27 @@ +import { createTheme } from '@mui/material'; +import colors from './colors'; + +const theme = createTheme({ + palette: { + primary: { + main: colors.MainColor + } + }, + typography: { + fontFamily: '"M PLUS Rounded 1c", sans-serif', + }, + components: { + MuiButton: { + styleOverrides: { + root: { + borderRadius: '80px', + backgroundColor: colors.MainColor, + border: `3px solid ${colors.Accent1Color}`, + padding: '8px 24px', + } + } + } + } +}); + +export default theme; \ No newline at end of file diff --git a/in-out/tsconfig.app.json b/in-out/tsconfig.app.json new file mode 100644 index 0000000..a9b5a59 --- /dev/null +++ b/in-out/tsconfig.app.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/in-out/tsconfig.json b/in-out/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/in-out/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/in-out/tsconfig.node.json b/in-out/tsconfig.node.json new file mode 100644 index 0000000..8a67f62 --- /dev/null +++ b/in-out/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/in-out/vite.config.ts b/in-out/vite.config.ts new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/in-out/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 70f241827f24000403482d00cdd4366f61b2cf92 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Mon, 8 Dec 2025 23:32:11 +0200 Subject: [PATCH 05/34] ups1 --- in-out/src/themes/theme.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/in-out/src/themes/theme.tsx b/in-out/src/themes/theme.tsx index 4920f7a..3724766 100644 --- a/in-out/src/themes/theme.tsx +++ b/in-out/src/themes/theme.tsx @@ -20,6 +20,20 @@ const theme = createTheme({ padding: '8px 24px', } } + }, + MuiGrid:{ + styleOverrides: { + root: { + backgroundColor: colors.MainColor, + } + } + }, + MuiStack:{ + styleOverrides: { + root: { + backgroundColor: colors.MainColor, + } + } } } }); From 6d35cd43d867e42fa98c0c6c812cb38d9dd89b13 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Tue, 9 Dec 2025 01:04:25 +0200 Subject: [PATCH 06/34] fix font, display, others problema zoom chrome idfc rn --- in-out/src/App.css | 38 ++++++- in-out/src/App.tsx | 21 ++-- .../fonts/creato/CreatoDisplay-Black.otf | Bin 0 -> 47948 bytes .../creato/CreatoDisplay-BlackItalic.otf | Bin 0 -> 49232 bytes .../fonts/creato/CreatoDisplay-Bold.otf | Bin 0 -> 48036 bytes .../fonts/creato/CreatoDisplay-ExtraBold.otf | Bin 0 -> 48356 bytes .../fonts/creato/CreatoDisplay-Medium.otf | Bin 0 -> 47492 bytes in-out/src/components/Landing/Logo.tsx | 105 ++++++++++-------- in-out/src/index.css | 37 +++++- in-out/src/pages/Home/HomePage.tsx | 22 ++-- in-out/src/themes/colors.ts | 2 +- in-out/src/themes/theme.tsx | 4 +- 12 files changed, 154 insertions(+), 75 deletions(-) create mode 100644 in-out/src/assets/fonts/creato/CreatoDisplay-Black.otf create mode 100644 in-out/src/assets/fonts/creato/CreatoDisplay-BlackItalic.otf create mode 100644 in-out/src/assets/fonts/creato/CreatoDisplay-Bold.otf create mode 100644 in-out/src/assets/fonts/creato/CreatoDisplay-ExtraBold.otf create mode 100644 in-out/src/assets/fonts/creato/CreatoDisplay-Medium.otf diff --git a/in-out/src/App.css b/in-out/src/App.css index 85ffc66..c2ed9e5 100644 --- a/in-out/src/App.css +++ b/in-out/src/App.css @@ -3,14 +3,42 @@ background: #FCF4E7; } */ -.m-plus-rounded-1c-regular { - font-family: "M PLUS Rounded 1c", sans-serif; - font-weight: 400; +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-Medium.otf') format('otf'); + font-weight: normal; font-style: normal; + font-display: swap; } -.m-plus-rounded-1c-extrabold { - font-family: "M PLUS Rounded 1c", sans-serif; +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-Bold.otf') format('otf'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-ExtraBold.otf') format('otf'); font-weight: 800; font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-Black.otf') format('otf'); + font-weight: 1000; + font-style: normal; + font-display: swap; } + +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-BlackItalic.otf') format('otf'); + font-weight: 1200; + font-style: normal; + font-display: swap; +} \ No newline at end of file diff --git a/in-out/src/App.tsx b/in-out/src/App.tsx index 6f44340..b74cb01 100644 --- a/in-out/src/App.tsx +++ b/in-out/src/App.tsx @@ -1,6 +1,6 @@ import './App.css' import { ThemeProvider } from '@mui/material/styles' -import { CssBaseline } from '@mui/material' +import { CssBaseline, Box } from '@mui/material' // import { BrowserRouter as Router, Routes, Route } from 'react-router-dom' import theme from './themes/theme' import HomePage from '../src/pages/Home' @@ -9,12 +9,19 @@ function App() { return ( - {/* - - } /> - - */} - + + {/* + + } /> + + */} + + ) } diff --git a/in-out/src/assets/fonts/creato/CreatoDisplay-Black.otf b/in-out/src/assets/fonts/creato/CreatoDisplay-Black.otf new file mode 100644 index 0000000000000000000000000000000000000000..3f7f6f5fa1bf5e6bcffece96f571e1899a777d2f GIT binary patch literal 47948 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ΌPvfDW7|XHbKus?j70$Jrl!1?i~V8 zm5&IyXJ#{c*JprkA=j!l!{S7)CU1tVTYy|W+zeY2xq7%6^(AtJcZ(=&5rr-AvGd3w zg)O46MHIG(!WL23A_`kXVT&ki6@{&$uvHYcio#Y=*eVKJMPaKbY!!vAqOesIwu!=1<=qOe00c8J1GQP?R8*rN}N>{R60smQZaGbJUc1F>k9h47 zuRY?mN4)lk*By!MONe(~Bb zUi-yszj*Bzul?e+U%d8<*8%Z5AYKQ=>wtJ25U&H`bwIohh}Qw}Iv`#L#Or`~9T2Yr z;&nj04v5zQ@j4)0RpM18URB~%C03q-D2A3=R7GuNz-puUIAQEBz4w0cxpJu0mpl~#{Rt4F2P zqtfb8Y4xbIdQ@6HDy<%sR*y=nN2S%H(&|xZ^(eG=Qlo`%9bcLrVh4AvOFGgxEz&R~tZzBG~V z4A!78P2^hxHSkj6tCF1W4A$tK!5WNVDJ|a_tih}!k?#!FVAheycLtB?Njat`<(Qt7 zV|r4K=}9@JC*_!)lw*2Qj!E;!^rRfqlX6T?$}v4D$MmEe)01*cPs%YpDaZ7r97oUm zyg3dJ`2?5>X^(3xe;hq?rpLffj-zMJGJGfNIC|zpzLRwvJ#!-8$vTb^5Rp3;j-!sm zX5>U5`8*)Uh7rimG{=S!jSV9j8%8uXjA(2a(bzDev0+4G!-&R)5seKa8XHD5HjHR& z7}3};qOoBFnmGx|92-V7HjHR&7}3};qOoB_W5bBXh7pYoBhX|6%5!WOfj-ND92-WU zPa?;L5seKa8XHD5HjHR&7}3};qOoB_W5bBXh7oAyG2F$mVMJrYh{lEyjSV9j8%8uX zjA(2a(bzDev0+4G!-&R)5seKa8XHD5HjHR&7}3};qOoB_W5WnMnYHHFFru+xL}SB< z#)c7%4I>&GMl?2zXlxkK*f658VMJrYh{lEyjSV9j8%E$u)BwkZ5seKa8XHD5HjHR& z7}3};qOoB_W5bBXh7oujEzYrF1YSqv*f658VMJrYTKL9!Q>)ljtJqbm{nE9t{u$&m zg4M#-EkN$XsD-VGnabx*j9S>2$ekFqic7Ux-Kd2%nZwavE$m3-e(74poLa@4TG)d0 z8FOl33nF7qEo?#L{)$>?n8-EyT4K!YN1;q_gBpdZPcB}U5jr+ zT4K47yAa=ov_$Sgd>e8Sx&QEO$Vue>!?z(Pk^2wd2KV!rS>s&UDV$f~0rJG5Q+Ows z$PpZA>od;E~^PuW=E>OLm`g%R}^{CN#l;l%i zucy8qR(lL-o`BPLJ=?#`-5 zOgIeW`C#>k2}Jfl>J<&@6%FbY4eAvQ>J<&@6%FdKzDWw}g&Tw$h1{Q3uUJv9SW&N7 zQLk80uUJv9C{eE{QLiXbuP9NkC{eE{QLiXbua(VuMTvSviF!l{%E|Mf>J=sG6(#E7 zQS;1u@}l?T5AVr~-jf%-Cog(WUi6;4=skJSd-9_9%8MH1MUC>JMtM=Ayr@xL)F>}% zlovJ1iyGxcjq;*Kc~PUhs8L?jC@*T17d6U@8s$Ze@}fq0QKP)5QC`$2FKUz*HOh+` z}%lovJ1iyGxcjq;*Kc~PUhs8L?j zC@*T17d6U@8s$Ze@}fq0QKP)5QC`$2FKUz*HA%Nk(ruG;+a%pKNw-bXZIg7{B;7Vi zw@uP*lXTl8-8MR- zr$L{0ahK+4v^%_)ZRJ@-jI*-NSy|_-taDa&IV-!Im0iv%o}5)YIjeYbR`KMl;>lUX zle3B^XQkV-((PI4_N;V!R=Pba-JX?h&q}vvrQ5U8?OEyetTc93aj6+2piLMHac6Hc zMnDxn?(A*WZkcB7mT87(HXw&Pdz;~tMD7l4)^3?*XtEq>p3>F~eKO54Z?iPnthzU= z?#-%uGd!~e-?Hs!mIj)ofo6CnX|nBThG&ujclI{JGnwYj-e&EVY1VF;X80=0^KJKL z_$rZayEnsEi6uh5?cS{2GR^Q+O32-z&Dt%~EUPt3pUu)|v-H_4eKt#<&FXnJORLS& zYO}Q3EUh+6tIg7Cvplw09@{LBZI;J2!(%BwclI{JV<``Np3T}V(=4B9)^3?*?UrfQ zZkcB7mTA^*nP%;lY1VF;X6=?~#)xv0`K{*AelPq)=)fVjJkjNP9JQP|b&l~Z%3ZM- zXa7a>@LPgef6cBDG) zbgXpjbUfpzavXNN;`qSvk>hucR>xnXx<-wQniF+b)c2z{M(v4uJ?fk@#yQw|t#hjL zR_Ei+BIk?FUpX&C4~)JhdRFw(=)CAn(dE(4MIVcPBl=8qtE;DLv@63k!F7{sp6f2x zQrAPSHLi8864!QDh3lZ}sOzNbbWFFH2{9{U_Qd?k-N_yA9__x~J$9sb&}Z^w*|6FT11@xhLz9jiK? z>Ugf>c~1{doF~yU&@;@F>Y3xY)pMukN1i>N!=AT1fAMzp_VbSRW_YjjF7~eQKIGlw zt@nQ9J>O|?r{SGOn;49e<28Qgsj_o$@#I*Z8|#ogaAqrdT9?7{J@LC2tj?Yn`&#T{ zv4_Qe6#GoB(O&)}%JZBZyq}7D=ir<6@(n0^82aEj7wuFJUo3SV zC0anSMbxOVGnyl!CEGRjg#}Nc#2LuOc_i*I;Qj*cC1~e%@}ix&c2|y)<)}U1ziyX< zx+DkcBolVx8gDz_k2N3W7T+(wIRh#UnnB~dvJ++hgq%O2Yy&)iGXAr&QIL?DX@O=q zyMHOak3plIA4|ofRKq{{{_F4hX3pRIZM!sINO%4#d_RI*d@lHuQu;5;QpPigz3tMr zr&zm&OY+*E$}gVO_NS76@fqdwMNM=Cg?6g+H=LpZZ(u)%PgOMRgp+;#7Kb+dH=gHz zKLY&!<&J+fZhd_$_@BycxA@mnZ;u%Ni2wSN%{t>$9>f9eCgEO^OP?1;llG_V|J&Se ze*XTQ81l`O{&&8OLL_UCZI|li%eeHvL;HX3-ga;LX8P^X2U0Y+EnY`j=7nU-$g4Z_~brsbBWh{xQdaD7y(UnE3DZ&N{(F4B+Gc!FgD=~O ze?MY>(eAXjKElgZpuI7sFHZP)#nd~Z9o-xg9J8W2MD>iC;mnLqj2`X^#?*G`)G?~# zV;-L;=y}~cgT3rd*LGUkDZkSj=yN5Z{o-mo*W$Sn&vkgN!q3FT|JcC)(ZG`{1Gs{? zLb!NhWf<2QTwHZ8$Hf(QuD5fwovZAXxVXa3_4O)T2XXPgFYtdaaD|;GMdJS{q36PP z5%^vJ-wNP60bZT&&QryBn%J!I&peNW zD;He1;Hm}JEVyF9^$MQw%=4Xjx--vq=E=@sTs+m8XFBt2k}bHl;^L_!+i~r{wG$Ut zI?8czm4j;>T;bsQ23I$@w!xJRu4`~rgKHW*rI}|m^HesT1jus$c{cM`b>RD(R{4Gh z-`oh`;#(VhXM=BSgmLk0jZ3xOjK9B)`3amm4n6XGE}qN9Q@KV#%bdL)3kk+UV|+)S zCvouvE}p+N6W45fcO%MiUYhgKJZEby?&TR|Q zIcLr|^JFZZNpc){CqR=YV(~mIo?FJ#4e=i;kjs@_J`eN=&Qgs=OldhTuFG*%j%#vUi{nZh*WtJd z$2B;vz;QnfPr>CJ2Wvr(twoyaY<0M}PRUhDu2J&&`l@fwk#F-v(RTkX*Q_Y_S#Y%? z1s6{Y<>{bfp{?<_Cg7Tgi>L1K%)J|M@w~km_&pQ9XW{p3Xtmw)4X}KJPWFk>@M&bVZ)6$deU$t|CuW8c4&%~?5#q;nE;HtuP5Z6C?Mgu&fL8o!Piu-u(9naxB zfjpkU`I_`v0ljix+?UVWhxq$6%Jb~QnHM#R|I>jIJO#5q?&e$`XYx3Y$7g3O?ii12 z0G6HCQvo`TQ67J)C z9cSw}SI3#UQe0dy<9Zoa%eLX-N*UM5xW2Iq7tf&N36wm4lBZAd)JdK>$rC4e-Xu?( ztir{UCV9@}i@12kBu|*+PLXy^p41#1&y{R{&JIJ1SXqT;>u`NliacdGex9GA5pYPo98Jo`6rDfKQ%)Po98J zo`6r{T`gRNxQcKU<0`>bitB&YA6uZsmW%$_a?v08oS(etiw)2sRtBM?FWNswuhY1P zyT|`e#O{;O*2({iVmJ1{L7rDpyMGqDlkf!c={o`cU>p6BIqUr86a|FgESMc(+$68!huIO^sEYS$N1d<-3YeLsa~LGdIgo&&{Gpm+upPk`e2 zPdxqU-|dU=bf<3Mb`Ejv9OBwJ#IA&6=WgnD#JnO-e`#ZV2^ZyPz zvem}BM!48V?TKhufoNEPXo$1bagBn#c}flU53I%CJd=he((pVQo<>uGizm@Mg)%&a zW&USCM}l_jApiePvR?c`^9?&*CB9QsFx)j4{z@m(CzYuwQis&*m9zvc%T{Kuajxbr-ozOVeitJ;4&mt32e z|I_?i4w;mL>psx%1ygMBFePf09x!DZmTxsAo?rTuY|=wy611)m`}T`~tHZp9g7 z={RF-AxbU5=Ue!f*vri|I0I}o`bCdmr}nkj?Y0(ouEQr2d)_wTl+Mit@A;VLv0r%} zb}QH7pJ$)Ko|RRm2_Kvkgnb4RG7cLewM=QU$RCJs+~HMLi0zYp)2q^-8cy?T}O9Qu|In*9*+pT?&LB>fJqD9AzmdZpj4;L8v7+ZBG2gx~F2 z9t3Z5NWTv0*Kvt{qoiM_^xH-Hy-dF3g0D}4E~wM)(CKufXW-KvwA>A+ zXWocfQP*zi+Ks&-H$ivQcqctoU+6s#&jS7nrL<4IJEV7q^d2R>JE8ZT@R(iDwM)A0 zE?v8%YnM4>4ucmp?v}3I=4E`kW1s1(phk_mF41^5Y1}D|cfp>H*B}-3-dTF@D7|B5 z44;YVJq6(r6_>D%G+%MSES?$-_f)Y;L&A(VYwLx@*GxMJsZbE?aWv19z-g{=j|r<*rz`Wbv}x zI~U%OyJ+F!yB029xMKCf#Vh77SeCmecPR=!IRE|!au+RLvO>QX&0oG;i3JpW{<8MW zB@fMCykPzfH%^^8e%AOUOII&jxZv&;iMI^Ct_P z8yveF6^?4hamUXb?>elgkx|!0O^liul@*m6bx+jNs8vw~QR}0&M(xDLngdaXqK-zL zh^mYFP1L!l)~GgT2WMaBb*n~4S`iAJ4(KkiUi@q~@Vf6CoVDy^k$D)g(%c6Hi|1`QP`bcyQ zw&uKx%{jk~{(bZxqd#*wT%BB(xq7%RclllYTmxN0uw~~O*F@KMUDI4yuG?I9yY6?b zay{${Bzmm7dM0{&%ZpcScsSm=CML9L?Tc^6S@*at$AnY%czgVWVo$s^HD;JUcKRl0X7zVn zzR4bYP0W=ZujPx)eQ?t=J2yT3(z=ABPi*j`zk|U2B`HI4f>O zlik(sI%A9-XUEl!vAQO-M9+JmqN!KP}k$bY-8)ZL1f4KR$iXFwlDknbjuU(wI>Zs2J7zU6aCiv z)?oX6tD|+n8tJvldRkdld5l%odcDhD5o7nYOYFW@3DZ{Dh3j437JH$4UFlQn%b$F0 zYwvf;D-WHF`_;@70}``lT@`Od#k^R!rDSKH@{QkLxj4A`onxcbLj=(ZTTiJk57jtg17h|XPq3-Ya zy^cpc*7>P^ubt}hCZnp>ik_|O?Wq^myS-MH(;M*QpyGp4Jl2r8o|acmG<@HG?JKid z5}Kmt`eUup?uoT;*Shc#cb2t)Bn12VZ@g z-}}Om4J#HE#9NbN&RuiL&agACnc#J7X`Sb6UD4C(VgJx=1+48Z%X49>-NSmoZ3pb_ zF5Bbw-uv*@XPznB`s}l1D;F(#c;&qbzAe^N@AatvpR5k=SU#^c)#{BLYpT_x^Y5P!-_M%yY0Rn0`zIy%+)oZ4{-i6zj(^?QDAw`{+6_fKzpy^rrU&*a zM^-I;c-8y`D>oc?G{JVpB)xg-`FL+@MNjLuZtJpXuh|~&YkT*;RQdG%H^tk>-Cp~u z)>E5cmN)n9uc=wE|GVE^aOd2)`|f-*!3RZsdzHhw*&6Kh?%VM6=6J8;36InJU$?mM zI8F9@FI=_EQ*8}!T3L%d-gJ-8Y2Dn~E%qJ+22bnztGpq)<13+9??ayM*@rgm*cb0D z@mPzj9#*s!f1k%|$Gbtx?M<{iD_b|Ny4wRkY4uryL#w1jp3|(J-JbAxU3O2e)x+U!9kkN=V3p%} z?=KI|yZ-ul^Cscuo)?zdJ>A|-A!|VE3~PY*@QFzceY|J3uJl@|4li1Bm$}=Rj%num z#*9le3yitbpwo>$1ll6=j4?kp<{pEtkmCmi-5>PY(LP}mfbJ0bLKqOBw~o#fMjYrq zq2FYlFy=vn?h^V<=&G8B4F(M6SqHjH=BEZ-C-WnN&bxWRnEg?B!`d8-LhlycC-j%h z5eJ$+bfD17H$O4xo0?an&{r}~8}p(Uq+#)Wa^?Y zIzV^H{D(0O4)eY-zcLso;HwCs+j9Og4N@%=D9m|=D}MmwfBK6Erk`J--(T8Ae31vJvtQNMKd za!zoTL`O$wL>EV&admNpT<^Jl?P`nZ6*DYmT+HL{Yu)4BRqo$(=+U8XhZO8qeFnQ# zf8DWb$16JC*fF=`eH|a|c+4}>ljh0t+~UdeRC!uF=dt`8=N;yq>4i=Woj&U9?VR3uQs<)1J3H^~{DCjp_if)eU(i?Rd){}tOZP7EU50eY z>+)Ea_q%$!4)0oW+0e_jU-t23f9+P(ZD;qC?gzTpcK@h*bB}@^+j{&ewoB~5*m1Gf z$F7Rq6I&JgT5Lnl_?{zs-rY05=c!%^y$1HWs@K)MZt1nO*VbO|_wL_&Xzx+IztwwI z@0)tx-us^35BEOU`;Fdpy?@pFOz-oTce?z#%XeJ<%;lArzjXQAm!FMu#;uCWi(4D_ zlen6=|L7CdC%ez)KD+un*Qct_i9T=id8g0&eg53{mcCE)E$#bs-(7uQ==+PlfAD|L zKi_|!{{jC7|Fizr{lD}7DLy_vGd>jmMtnp3NAaH}xD)y$|RGfT96!5BS{`(N~PT;_55XulUyRAMf~l*bc{UcUy1mcDCO21OJ5% ztNm8Xj#&Gx&xcuW#rQ(joYrzYr&iWop2ODTvDMb&E^DQoWv_Hs+mE|^_MlRK>*Qtr z)=oX|@%VnWb)}VpFvw7tvdXdL^Hk@H){)p{cD$=4wVq5&eCtOw^_Y1*Yiwke*VBHX7^&IuFece;>=f@_x?XiK;!|hIS z4}11K>aqvB=awveW=(Aedrpi!;NxU#S|~ozZH=_*V((qNWX_s+%kO^UkXp{e+QEL`J0+gPm95QI zkK6qNtZ{#~#&uuRx~Zpidkh*u|4YZ8dwXNk<#u|^8uafTS<=sP^|m~RUOfC^-0#PH zWDl^f$QXHL)}~uu$d2z`HSo4OXO4=q9jAv_Gfuv->A6UJ_Z8i%>2`VKX-3ya_n8FN_XzHUW&ETp10HfV5h~SRh?+1EwIw8v^XnmpOyBul@@RJi5X<4-EF7YX>q#k zGu&ov$9-1X-B#M5_9AcFY5P>fPFrB7O>8Ij2P^G)5%bx()~{B!4qfGVvh_Nrb;ydu ze%6rod+V~jcUWC)?@doyJs$NxY4@fl=`p^Wu$es+@ZaU}<@>Glp4LY6r=VAR<6^(BC}a(8 zooo%h&tnzb?6*EZzxu8}SP9lDYtZ;Je8~ z>{0R7busTf`Ruc`eU4TxzBzl@!t0kOB;Vt*{W&wQvxmif+wEJ7N?6Hwfcja3yR{Ct zrrP7Isog)e-au`>YdOzao^v@zui28&{oJXtBZqz+XSoxbL4DegA$9_(|E#2{ytdCP zFD9ul`z$gec}GkKb5> z9j(dG_Un*u_U|kQ9^MkAJPuOI2c3E#iEw{%^zc9gNeK%&``n|hr`uw8u zw(GB-pF3sdeb4QOJlA7H^V>nz4e`DetNhk7kgEr|8-ItcPlDC|s+^xGa@l$-Er z*}hlb>r=CL$%29e)Ya;@YT#@3pg#6&JKFZ!TkYkRv%fVvVT~0ZTk3hr4^wt&{TU=g zM4IEYPWH669J0Dwsn)ge5UI!>Y@Ku4!|dT{2xyDqd`r>a%7EsF75KMUGpu_c#+wjh znq{Q*mq$LG@K#xMO%rr}RkJtGhnD5!+_rR1f^S8Mr}Y+gkyPiOeSTN0 zed93HCBg3h+fi1=Ylq67c_E?S!wYWwPM^8=?cRqDDlFG;%em>+pgz`YXvc4DwU*n? zKijhtitPBFpu!^n{%JXXinYh$xK5BXa- z0<8gr>&je@id^Nc-GzhtrlzU1J<|VtS&>&*kkPPB#*YQ zjJK|jd81_K_LutXd-ma56A;I$?b&hnx_#C*yW9CsP^G)A=ryaXZs)sgvAiGQ=^TjB zh{N)B|1j7(@;_qVd}epW_JrHFRWJW}A1m$;A6b*E@8JmY?Cy4A;$1i8t_nT5CBZsiUwNy$`yYaP zSKPC0P9HmZYzAD)|89mAolt2-$KJZ+r*(C^fBNE!yBCfhzhvR93BGZjt31A=Keh(o zf$fKAF`yee$SbTY$dlFm)6cK9ZjC*C>+4sQ#dmLgzpU~^W1Q6~x!z8Vx9$JBrL{{; z_fM_V<|eBX#x-TJIZKw$iMOu?sjFj-?OvXf(7kn)wGY`3Av+1wlaT#TPJ-`Kj1vky zt$pB_w}G|S`c8s~n9q>uEMsnQQjNs^oB#t+pIk_+4=}|7r-#X0xmEF_o7c(Z1ee;zN=}b-T zT&Qj4iH5sLg^YORUXy);bTqF0r3; z`)pf-;%R>04L|YVaTz|xfuPasR3rjZC@Am$AkV6FOUKIX`i# z^<_JYb>0R7Q(JGk+5h>q3Rw*UaM9 zo}2yiJU%NH)@mJXjU3?dZAN8-uo#9mKlHaQUhlD+P`}`<{w4m;*L^G2c3UZ~ci*UL zu{y>L_rH9&c>N3UCzDE3$$P#_~=pnFl#10@f}!~bR=Z|$ZZ?A#k? zIoyr&Ph`MXKmB0GOOcP_?5s!NeT(6Jy+FMeyl*kQZ-al7$F~^Gt1xnuIh<& zt~K()IRu*A3opBUr+(rY;_;ms?|IVWY|ZOwtz#2?XN;YCVUwNOx`}CP9h&RbSPVk{ zvfcUlnV!}hmYE-ubYVrm))g-MrkH*gRwVsDge)r(H=l*l={ou^ntXZ@6-s|!E{l4GdccXTcXrzg0obrqh)bS6R$4lmVe94)h zcP4mffV_!wmE&KF97LZTMd%zJi?8iqS_28+;EKkm!W*@=Nl%`I4&p~kA##f(-k%M3n z{zu2}fvBVPQ7jOLB6qK{M3xyO+#8xZ$mUoPPw<7{F4mKKK2Fg{>vvk~kM6A~arnp+ z=FW|Zp1-GNg@UUT?3>{fKoR$TAwNZ(mBqSa(E9v`?xrdOn5E*N)e))HHU- zNNyKCBiW%I0zGzEPR-3tRWgh;z}Y5+Pmbd>CwmQ3AA5*t^d+1t7G$zf_=u5`%3NK0 z$e(;lk_eZ~BN!$_Pnj?Wp_+vVU(7K*!C+ooFZWk0jn1Pj1k&s0gj>k8q!}5?nRzjL zgY6;7Ni)(hrdLEza}k<eY(^kXwRn~nq8xR|lISM1Zwah{DwADfVu(JAT>qE?zh5gtJQWSGE z!_A%mU7Q2D_{2bN4qAaITCaBVppj}3*kAESPx=Gw@5tsN$xO3XFsG__MtD$w_Nl+9 z3#2+p_!$F5oj=u~T>#oqq_KgD8$_{W_C|M~>eWv@;F0$tT763r(~YBqaTFP~BN`~) z5*C3Dbxjt%;?-VeB`&pO;!5xGZkb2fWK1Ksbon2H!Vc2Vg82MvY%#*!2sBl=kz01Dt*OvziCw}hyIL5)SQi6m*#(v{*2OYfc5UP4 z9H#C=h*%D{x)2wUCC32h_c6u*;{)n9srwKv1}rCZszs|8FX-t`3k>hQx$$RsENtYJ zF$?CWE`N#Ml@I0@r@tHj5-iT|Lm!F$0O8|>n=Jg6`g9UKZNlq*C-PgSplYnjtPSrU zJ+?&=1#;Y$%*yLF7yjvpc*=Z}rXsF92Zz=kX!@v{pKm=@zH#?KBu(Vp1<9*s*e#i3 z2Ob(@&sn@?%@W74l3fQYY#Y~ZTDwu9=$m4W(Q;zx;oQSVY@dBtR&%N}bL=K9_N1QO z?unsdXg5FM6~8@c$D2w};8UaJ=--yVvtos9>ij_eIm!vqPO@a~zkhu5QM={nKYoq7 zXg8-JY*Z+vfY)mUDSEm{dh6+rwtaBK(J-REKIodXw_@9=k8K|>`6#18X=oT-9~30* zO`N)Il6}(DB^e2h5e=h9Ukj2l5^|?T+oHEl*_)t@7*Rj^+BIoj#Yam{+W{KJ#+|CG zJ9g^g#bZ+7TSGm5px!q{@9Wz8%QCG{?UI;l6de&V zb);hLm{v5S?&U!0JzVt0dp{#qnmRyqX&xYhS^d=d;@JGQW~7~?iN$mA7dV$!fHjf6 zvNSju-d}b4&xz?=Z85wzs7}O}G7cJRw z(6*~^|Gv!%^%*W5SX{gy38X_G^#*zCK8s^|@IE)Jo}7B-|9-WJ#x`C3T?a&P6;$=t zWYVi$5&bO!JV2@fNhXw_pcetc_Y|ojl~B?m$L|K=-{UFZt@p#H8aeT>lkgVaJvs@0 zN5NGqwY_-doaaR9`M8u`3gVF2>`@R)`r8oD)%}pIa%*5+LEhKH{;gPm z@A2c2FY+^%7W{qt0sDdC#c8=KmSwDQbX_5d*2@#ZLu@dBpGJ|Ja_X6N*5YmZc5mBO zx!!SX{omgy+OT2$Ul+@9smYUZ1^w4D)l*Mdmm?6x2(Ji^ot~LR0R6l(L$x7426e=|t55p4nniS`b7yN%Y5QpzF}kU2#+ zel9gy{yA*tj@4<7WO>=&R;*vC;0)Kb$~Et<*|gbKDVOB!N_|(W-M0PI>C}Ph6YC@KpgSU~8nx3;^vX}V!r#dKH$A*UC+pMC8}8o^ zZRpe~G|0#2^Ps1WpA0kSmsD2n(Oz?B&YVAYro-&Hj+DkMtQCc<*g9HHM&0N!pJCTd zwxYU)S+aszvbHcw!iuw%tIL{bNfXu?`WzAN* zd07r~zEACS2wrWE$fj5CBc}9hHprs2-)o|^XnpTBYVBy=K{n_6kDk8|Y&>Bp*JH6w zfEC7CioT{(TjjEN&wHfy5Efk^L?@fIj)W#4sr~Ky4{pGc_`;!9$=OjmAHvYBLC@maoj=aJF zX#QhY*7x7jU$e+Pn>yrz8Y5!}Q}26xfBO4Lv{Kk)F;Xm$I??3*GL1I$GX4Ul*GwJP zHPM``!%fd}IVHLVH-tGmc?5Dw()xSWbU6D94DhP#cR{(3(eg(vMN$RE`S~ym^dGge zIO#=&br}Eu&g27|)&qpZ#P+LM8l`}aC>QZo8v4UM>Z#F8W0%j%oMum&z5Rsa3H6Pk z3APV~_iWiqOxi7m*u=|Cel$oaR1aG%Uq-RM{0e1;aaZAsf<{wjSB^Y(9xr5;r`_NS zGOd=TH*h?MS(;{}e1lt>=5Wi?nP~P^0T57gT^zHh-FPR;8H_p__HBDq?s)Rc6N@^U zpJJI1FeSKx4Y}-t{Sr;w2sHE(4YK`T zd_e#Mf7?!Up_xmRjM>AOKc`2|f-v4v`l3{)ISaaS&;(}-0H30S4mbFRAMVV#X)q6F zG(>COQu=CTnbus0V2<&az7E;w6==vv2U3DweMH^COI!gjv1lO^r$f455tl$tG{wRI z*zj3vxrLX|xQgvev<5q3{vnuS25R83O5v@VVp+7az=!qZSJdV(?kapy&}g-}D~FCD zk825Xj9ybmRL{7#@@x6luWm?FE_|E*(Ed9ADgE1+3y!b9nsoZLp;GnuLHl~z z16c2UgQ~|nh7OZd`I$93p=fWKgFd7ZX>;1UN%1yej|dV>5h0Xd9m#4c^D;^maX^$x z%gR=lAG4Xg*%jxuFzzaRQP61Twyqoy8>3lCQRCv+IPE5S;3kR(v3d;64g}#E&ZQx0 zo-fx}2iC$m5X)Y}Nd@s>M|xHxSJ-qOyNYa{S!yFG8o+#lkXQ?gZ5Y@J^)IU+OgZ-z zG5EEc-D_%WmdsN%J1^VFH2g8-0wacX6DFm3Ey$6za!tvHr%sj3j!`T*qhhkB*en$x zw-Q5aaSIntQ(}#ldBDk*iZy%6-r8q3cVZ9K_%QA&d{I!M8jpR&Pr0(zz`#|&z*)e+ zRbAOHYP{7_jxAP&Emn>#R)sBAjxAP&EykBIP)(t(_6yPeWLGv+on^ITdE&F3-~RS( zJP*fC^FzWoT5rtSc*3M_Mh5-NHHTY0)3l1NfWCJXPD{p_bduzjWavBC}>C zDu>gecJ;Trq&*Hudn^xo^QF^A54QEb7)I@WyIj(EN*Q(NQv7fBX1P1J+*WmTB7+CC z>^=S-SN&S{p6`2io5-Yv$^Q!~hd@Q>gs&C9oYhm0~_@cn2z1Ee- z;HJCc8l9bBQ-TKbQJe;7s~b6SVKG7Ud_` zGa}X8}=7+tjjrd$tN6VPRE{@5Gfs;7FImm{$e&p{ypN*bVp>gL8q9N z)yA$onqgwF*F^g`251v%ISBx~5K+R(fjn8gYqeBi_0H!vckmV*N|&4-zB~!>1qcrq zy|Ghx0{_z!NB@oc0~x-6Uh#$IESTfRew-dVZSYN=Ot>^_;7p3Lhk`v_$*+L48?E-T zK9a?-P>FVdZhat!%#*syS3Z!$2kIt``=l_0Lr+GqbAa^Ve}9zE?Uo+N;R__%3mpGI z4$ngSbGy)9HmgHIxNhf4_Qzp3r=GG{DgFadRkp|m&1=X@n6|1SyUo(j?l@zd!1@IN> z^12_fmA1T@`a4hU1iOwJj+ZrRp4^ryt zg}JHrAmEKPdroO)5VT*Awo?&9HfX0r^n0G%bXXg1?KuqFa~ZbhFl^6d*q+0%J(tbYuG14A z_h!`W(Tf*pBp?_-P;lxkP=F2O{@muG|KJZgPzQ|$?3BmUd3v>QEpMK;j?>aS=B(2@ ze_G3**RA6i+}pa^cxG-na3!bI_I(*ryrTQR>h8odwTs6@+}*#cUbGBFGcC8J<+bj- zNNt5OPsG+QBZvGbjj7cWd2_XFMip|&fI}_S|Cr8bz(g(v%;2wLk#9i`tyWh?_w*D) zP{g^_UAl88;*xL^ZV_Yr{p-e%8`h}|h220goXF zNP4UZ0v@{r0csa7r~;bXu4NS5g4X{1ixy9to41c(B3NCdAK@{KyI7B30rY=Gvho}@ z=!kslwfgNlTgZ;Y;HBg2gQLnXXCRk-Q@mwdyJg*$B3seAE$?hm=&hR~+jx0zZF!^p zi>pg>k7)eJ&NoMIA7K~a!o8>H6X%EwJZfCKbY0$3Ti&{*?<`f~1J8h(K1S|6Dco+J ztfpqsE6YF}^`emetuFR3u)KlSRj5L_OjqQFIMVO0^g( zoikPwbdzHNQLJFqy~t-Ycdpd3C$Gpqo;=e)RvU#Nc5;YC>p8NTA;Nkl=*MXaWR^a3 z0}59ELy@18#WoVLh^FNfmdH^5Bn2`s^LyExw$cba?Q;SBSCDc#OJfB4QFIgiy@EyC zR4oJi;kNSKr|k8IW)54tX5rh}j{Wl|>>XlNGpE0) zu3V6^+2NTJ6FJguzPA!_yxt|B6-Y>^%gDzn-Zm0eq-36hg|xZA6=r&ac=^%=(TX*@ z>)cG<&o|5FXc0|{vrPdnQ!Di9mm+!t7q?`ZO-H4(vd{{;MM`r8*f?5_q!?b3mM-w5 zN>Y$pt%PSXlOC&cKPl?6Y~4C%fnJ3;km~>Ne3Oa1=gWuCW=U)Yl=m?HBK8AF!Pz61 z-G$5mcAjbqdFpXBu&!+at_$;o=%s^3E8mWuv<3M~bHH#7s)JlNe{y>B?Rv++`j3~L zwUhaq>srdu(<6TFoY=(7;@V`Tw*39#BlfD2Iq{C>6py1N`>T$;pA%KCL?vhDB-&%= z?mr4JxKuNU&fbNbTEi!_by>q&SVM<;DUmf_YGKo(T-L2dvu>WaR!#MH3@l_3SV(TQ zM1zGa%Ezx++)}!Y(@KM@Dj8MDs7eM8`LEP-Dy+qK)&s~&zeOHms&U^Ws^-OfWJcmt0)J#%Z;S#=q@MY?L;XSy4@A9YQ-C%WHt&+$iP+*@^kaz3!ts8-`3 z!%Jv28_M~GtyZ^s*QK4`+v;Mg##VP*ec$R~t7rPw`ri7!dLR7|2=pfEr$ITNqhF)n z=F-d8>A%wdp#Rg*%D@aS8{F|{YPuPE8~Pdi41tCS!z9CWL!u$YFxRlu@Q$Itu+va# zIAZw7aMp0aP;dCka9`8P8=9e(mn5@flN?f4sh>1N8ZM2L#!6w*Bq-%)N=edeDO1Xo zR!i%o4bnzw%h~-0jvt?MV8VnsDKlp5PdV!_X_@QSxi_@$K89C$3;c1IwBUaLBL8YF zO4ow)uFQlqFT^*UxM?)+$V{$)Tlu6rH^pdeJ2TTL)){i;KVcpcN&1CC9cmcTz=LJs zmhh&JPr^ZPY3g9qgvm&WO1&r%GH`5j0Ov!1%^w&K3B5Fkwpbws{+

    cd_XW8Mnw%UY{74|K3vt&ti}oP|$N;52gS z%-P|V@T9$!%W#iVYCWL0-r7q4I)MACucmODghaNj5KA#@&HU{+lSC2c_qsO=qfB({ue<{W*ix$u- z=yo04yfG4Y^wQquP@}bP3^`Q`eosvaZ&2qj^^K-;cw^H!sB{pD9a!CW6g=%n^M7|V z6ku$cF@!QNHCpfK7)WjD?JkwCE1^rHt_p{ySGIJea`W~>N`vrq?1+UUElfA0;?*n# z)>g6|{5RWHZrfqrv2xq0Z8GerWNZ0XKVGi@ou%?p_Pir_&i43`n*%K@h#@W9EmjE| zS+>+^ydIp@a0#Z~DP@z# z-C?#-! zVCwq`{6i1ha5hTVh=gI%}+6ZHENm zqmQkTr_K56a2t()igkhJNTaeE2lww+u!J|*_t=y239d))VR#<0rIne zvDojzK)|BTuXf=U0YQ9fjg1%2tA(k|O z5R;V_Er))~^%TC@U9^0+1)t92#oYQ*eAzhD&B&R0NNcHS^CDu}oK8%67teeDVu2(B z*2Q669M;9z>hM%8$sSKI0j-w~zT#m13l_~EdCx(=7fj|4z2f@w@u+l~=L%7LtP{uj zx*{t*&6zXC5%87X3#{f(sQHt7uchrhw6s0e*V=RQ9-NZ^HEmfc`7>5ww_F@|_-()p5{i(fYZ&WvLgrJQ)o3v4AASlhO+t|E$ z?eXUS^=)$$`Lk9sf>ot1fDzZVJ3`L=#w(e>@sv?i#8kL`MeSyKYzCh7+ z)Vb-rbc1zax)@!&E=8B2TcTT~+pOEIJFF|$UD4gf-|>8bYY&<^G(A;>VsFb-E9%rs;e78<^>tv=Xg zIAl15D-V7$TsPb@JT^Qxyu`H!VEBt`hHDT0$yqpsbK%@Lcg~CR=KQ$9S`K~`=}Z;S z8@i)+(?FAga{tySy0wR;7;=GU*Z0iZhbRq(E<{9D=qwvdI(Hoj8HHMIc;&<=zi_e|Sk8am4Av#nMH4x!W5ITH;(7~?X zf7YIgn@Kw=YSGqmih*h=##nPP#wztBBH}f~WzIzO97Hg#9jy_Q7_})VR7Wg4XK!>@ zdNzfY@zCOWIrK%EBT&t@Wlwry_M|7~L;{<#xpf(Nbpsh~Y8z@I-MtVZRCN^NS+@Mfx^P zJ|X}IyC(nVMfA+R1BHX>NQB18#;AX;PPfecL=+S*KXOSuoHp^Ubj&JCBm1e zO%9@Z(HiQAjur2v3n%u1&ooIsD-y(oNN-KU%K)xE=*$Q934F+P=0P`%ZlL$8-tQSi z`{HVo<%;?_zp6hK>rR(f->~yIgZ)p3)hU+^lT-H=6xi9DxVY5W$ljoc4cB!*B6fIP zaH{HGFJ_OX;?=v`Vx!i`D75-5u!i+u-2(@S=n|MGbmW*I)b(-iqisbPtw}8Aq72+7 zArUdjCq|K%PMxBth|2PrxU1Wvdh68?$9hcl!gi?Vo;10*!FmB5dp+kVh%t8P`B|OV zBAkde&4y#sHi6Zu+t9tBC}JBAPn))J;sWYTL}5{F?IP|)gDdZ`XnidwqS=W^bj%Z% z)J#l;!kTYtV3x+;A*Jf~6gq0};P>+hesstxVTj5%RBu%sX-QX=TLIr)ronER+Q}z zq-j*lz^N<xIxQaJ54j7o0(Y!nt7m@00&vZvLxy@!i_Ha`fd=qzdoDwv9eGY^E1 zorz0CShI^^;F5|fT*B+EpWxC5=>oJA9jy_fJxLdCOVWw_K~&kIgmxMWVnJSAD7K@Ci{Mfc>tia89FC#z7oSb-7rL%XILYbf+dz5tr(W zu;5A-wRadEk>MozpC?a68hGwb3+T(|PX7Y)mq6E7u&AN9}_0%9DUP4wbAYmlfz Tm4}FmJ2w&d7GmSBRPnz7i$dZ{ literal 0 HcmV?d00001 diff --git a/in-out/src/assets/fonts/creato/CreatoDisplay-ExtraBold.otf b/in-out/src/assets/fonts/creato/CreatoDisplay-ExtraBold.otf new file mode 100644 index 0000000000000000000000000000000000000000..6c93831e5fb8500486837d2db54d37144f0da4dc GIT binary patch literal 48356 zcmdqK33yf2**3h+Nlp%&0|x{G7{~+)${-0s65_-xiVzSa2~G^6pa=*E(pPgP=xfzt zNMaa*%mk>4VK5>gMuvl}@=_!k6KjNmP0?aotYyb{+vdOTJ2 zOiM8)x#s2xcMP3<$HSxXc?)CAx~vKP`akno-(JQz@VS{X{o$$e&V?V}V2lf&JEzT@ zG4;MKM@M_`*)bexGjXCtO!ULZAC3R7nECL+$J*C)dDj^CY-6I{eQ3t~IadF#erAk! ziZPQ;JUsQWdFIdKkkxS&AZE_ghiClOUH5bRpO5^D=gnQPuxX#^kNku2d6IE3t1+LZ zTz%KQZLa^biHbUhGv>p7pC##U|F|Aa*-ibUFGlUg|53)tv-rU^QRPkTAh!>nXGdRD zNzI=%>ZV4Txj0`=TrFqndZNaddTtLIO}yq;jGg{2aI{yn50|rpMLHb zojukJHs;E=qONGVo;8}^C#h~^k9ML}XaRpZm~ZRvj{n&zqR(`{ly;hyCiPM}%Jeds zm(tOuv$^k5+GSds$1kO0Oegb`OKG2pGaD|Y+oH_XH$UEu24f=-k=&UCN^@nMuu={x(mhO8kBSN#B$(X~z5ov*yl8O1&l}CFOes z^!+B!%!Lc*W%ld0VEX)7^A;|+X2Go4*UX*&K)|iEHU%VEc1Yw zX%>RqtITwBHU9QDDL7J*nuZ)nW{8<%9!0MCW-4+f!P2Ih1vnl>Df7(?q!yyIBr_ak zEkLQWafa88FpuFAUNsb-&j$6kBliQijydN4O}XEenu%+_Tk`kI{rggx|7)55@pXNF zK%PmEXFg<}1^MQnlvHyK+Rop9uN>-cAzGek`r&s0^hmwV!?^`0k>$_E-?=#Z06x!x z`QG-u8va&yf8R#fJnvf^j&7Ikh_19y{cjvG`0VSS&ynEqH$R^{oKexP7*(9YjLjN1{`LtI@0gUGlRNp&yY9Zngu=`I^Vy;`>(_1A zv~ly+ZKd0HyzsLZUwV00+3vl2_PzSr{txC%nL6Xch0o7^;OzYSf4{W&cXR*n$LR}x zbMCkAoS*ra*;4+*y$^o+^UoS)EvYwo!NP-wPFBBP`|f+MT&Rrv`pl`*#{BBhn!1ky zPx^oIz1G zhB_uVraB&Tl1dx&H>F+n zozm`8X@4@mH7A=+H@)8U)26(pxlPlX#x&j1l=j!Czx?Shmz}OUec*J(>HVi)J-zdE z>FMWBr=2=@>h+J#esuby+K=A<=)_0=_0hqPwtlqyqo;q>^O7A%y#F2GOfmPE3nsyF z++5`>H=UfzP3NeP=?vfB8RxHZbT!>@I34Atl{3!t#JLWR`TCpScox0HlcuxdC&+&r zj{9&d#4*`)bI!!yXw%wxKmH=kI(RM1_~y6@brs|DcTKc&ml^2%1nD~by&p#o4jcb} zU+arnCs*YUFfsDC2rPQrn-<73m2^_nw~0e>&)GC_4xZ}&kj%bR}3&z*}< z&KG8ER1f_96OIO)gWjlj=NNr>eCKd@nhuf&{H@1P=ll%ZU*do~eD|PS;)XnY_aGPG zOS-1cf8dB(iSy(E9DMhH{$D}6z(vyu9LJ>luQ{OYefOY^@&9HXnz_2f$)&oZSr%-{ zI4(CP8gfJ(Mt<54IF!xMUci|%K{j$b^vUBc9A!9W<5-1*=Q=u{2IpPT=6Sj=(or@! z=zx1F9S8q@WA~0naBrM62`+E}eg^U|KW@s_y>o|YExr9GWFR+pL02P967}gk4}0P@ zMc$H>ds%(T7YrW*ojpF-Z3IcpYQIw_)qt zhOKiOw$5$XI=5l#+=i`l8@A4E*gCgi>)eK|a~rnKZP+@uVe8z6t#cc;&TZH_w_)qt zhOKiOw$5$XI=5l#+=i`l8@A4E*gCgi>)eK|a~rnKgVt>a4uFUCm<)XCQ5!vKqepG@ zVEEAi=h;$^TIx|tJ!YcLPtvv7!W^B+RXR^4`-K5vP#6-1g-eBOmq+dLs9hel%cFLA z)Gm+O0h-t=n$ArY%yfOxvc5z{{GB06Qw(2^wf+x+7;R z(^J?>=ldz0Djd-CBt9LeoM}p@HKUN}+p-l6oQ zrv1p1EzA`zQ(gJO6~Y2xp|D6;EL^D)RtZ-N*9c1_&sL>Nh1-PNg*$|0!d=4M!ac&h z!gArO!hOQmg!_dRlCx5HP?8+d`3UN54f{C*><&G*h6f||6Q&9WKx3^<8Z^+_q(eWg zVPnUEgJ65DO(t~S8g~jy@CyUNpfDs13zrI)smy%g3Soh;P*@}^7M7^|gGxt~KB~GJ zP>xUb;FCT0WDh<=d%%2DpVA(DhW6kyvZXb(O^d+-_BgU`?&e1`VmGqeYv zp*{Ev?ZIbg4?aVC@EO{J&(I!x@D)tc9(=f`h_nYE?kOVe!H0W_NPF<%o+8p7e7L8G zv4@}2%;~*IcR~qeK%cNJO6X+T3EL}A2WYR8iB-;yI^S96@6nmL!smpq2y0YM zov>c`3C?#`jhBn}I51m_rwD1nbbJ~IPLBXfgb`r8JV_F)y%w{C0mzet{KtXJpCqeJ z!c}ER=P8e07!U@9Az@g!R9K??5n%()BpWAeHQBg@9(b^1(;DR`n?&SEHc4o2GOV-) z*i+a~m@2%s=?k16(6j+Ku<0}~P3iQeH;^9G6avy~CCf^aWu?imQl6pLN|u!-%Sw}B zrId$OnhYyF0?cmuIWSl0$+)wU%`C|_TewUz+YH)#GC zutXREcGo@99X_uE(!5i;!>-N)2Q>W=nAY?uFdg!AM+r5+K`5uYyk&P-7jycB0bx)W z5{89Kg(bQwBBb~0ZceJkY9a5+?uK_|cf-4~J9^CX<_gGm2G|-JxB{{ z=P+oa2ksH#2;t4bEa7-zo=Wx$1Hzy%Bn%6e3QJV}I+eU$xIws4xJkHKxJ9^C<(CS# z3AYP(2zLt0gu8^hg?og1h2_FS!iZ`=s@By=Gj+mxVFM)W31-g&>HT`b>X@eY>nZQo z6JGrYp2*Ux_mZvllCAcV9rltP_QLq~JU*oz_QLp@hy>-)=QSwOP1D4me$*N zP-AcSx8uM>@Yq}atvCGJA*6c>$z5;s!aS2IyjD3mD(eltE&_+CoZ-R|!jZ~zv(j0@ z@xlqp&;GYJJR56d|Jxg$?R6mg-`?76=Q4MZ#hsd*R;dg?pbx57w!=5l$>Qs?-K47?h)=4mJ451&V9nyg!_f; zuY0S%?v4JMnmnZZhxO?Z$#7Dwt`?pG_CZgS2XqTPO+`p2LT`QGDLVkWql7--h}ch< zDjcAk1DhIgK22%%K7C+Ovw=fQ3*az)I$StH$UdkK`XFAFB^)oD0K4sjp6CqljwTy8 zNws9_Os>*-lE*I$2!q0qFf3duT&Dc_!WF^-VWF@{SS(zr+E)oz3)cus)QWX##d_fe z;YQ&m;b!3$;Z|K$D%>XAF5Ds9DJ&E267Cl65$+Y13tv^+_X%GU?iW@_+DhR;;UVQe zBE3ZmPpT44ip(of#LpS*oPdHa6y_Wk7T`^nq)gHQMrIqB{D$=mmnx9=x! z-_Ow7_cQeN{ooU7fb{nL;1h`S_Wj@!i1haT;1h`S_Wdwx<5l$b{orSKhTgs(`YE2F zx9DQLy#K=!98>XB2>3Z5SX z3r|5S&I5;_Ogz3c7yGyrwK_$uPC=_#qhA;h28AJE zSh!SJqIx;sPtkloMf3d>&G%C@-%rteKSlHX6pi6iG!{zHSSUqfp%jgUQZyDy(MUc; zW1$p{g;F#YO3_#-MPs29={ZGuPSIFB1y2CjmWbpzs#c%WnQCE;^jRmY7dAltR9Q=^ ztR+>}k}7LSm9?bGT2f^#sj`+-Sxc&{B~^M$mEKaNw^Uh6s;nhd){-h~NtLyv%34xo zEvd4WRJ9^itw@!%q{>=SWi6?)mQ-0ws;nhd){-h~=`Ty@FH7hzOXx2f=#P?*<2e`g za4p*M1(3brwa9rINXx$#Z8-yEpLi`~W*)yVAPfpa!mx0ukaLG?Q8KXsX9mD-5`Y|~ z41nF10XbF~VB&D+4nW^`2AGTy`v7>?4}m>}y_Bb)(y790A>jc0cEFJ)OcxFk4rw}o z^TXhE2Ve|C93i|}IHu_XoEa<3(wT8ek5~G3r6=Gi=>Yg!=A5K-wlJsZD9+?6J-O*) zq-UuWvsLc`YVL%uZhJ<0^QsFYSC||fjSRgDE772@mC8}keTDM-fLAX)4 zNw`_KMYvThDiv-MZWrzl?!?GvfO%Omm+8zd;cnp`;a*|6@Kxp9Cwxt~Usxe+R0?0$ znS+w{kghr`rjF>-h~$4$dOIn-RSP*P8vu(Xa#S|JoYMKz(qsd)G!Qm(9_SM$!!ifL zCV3`LX}>Ta3<^WSuyCocM)~W6^}+_6Pm?vK!5WVsO>0b(HKxHDk0VWMOw)WbP4mq( z_|;OJ;jA+a<1ym3Du>pX24DIjaF}qoaDO=%s8dTD}B4t6VMl= zq2E6byhCT$@26p$M$8ei_fIpEg|jfiNiz$SlNOi;%}{b$U>bZ2krtQ+-$JAXrop!m zId4tF^A;lKt!a4PLgc(P4bNMMoVTW7L`V783pWTi3O5Ni3%3Zj3QL9CgxiHXggcwc zQO?VfwoGSs33m(k2=@xhg|8~-KH+P^{X+KsX&BcLU)LGVXVc)}Dd%DFazvVZQ+ZB` z)lrAEx-|H!4JIA7Q3h;{YtvyHOvmBVba|?D*v1=3cZY{ehiwph zp@ekU2Ggm+YlXCpblAobApKIh{8GC7QaYYLT*MiAr*zl`%O5MGcS<+ol%{t|H@7QI z@0705dpf++d8D(2Il^4wWFbfL>97ixxkP93RE}R55C(-IVOY3SxJ;7g3s(pWgoVN) zVX<(X+O=M|LAX)4Nw`_KMM#g7j^3O|kCcwyoJfz9j^6w&;LDPh9w{AtI*}eJ9ep~H z9w{AtI+3IObUfc6a z44k!P;9e$j)|P>LnaEjNhMt{fXx5gYSzCr?Z5f)iWoXuxfw39u<*Y3OV>2RWZ5bGw z5jkti0GmY4+A_c< zggbX1u&1zB(?X>CDV-|3R#)-P9R$991RN$DE*v2oiFyZtFMc{kHI5Z#>C8B#$18oi z(i56~jGTO~I0!sa!b#{&27yOnjxbj^SvU(mY7p*U=3F9q@+7%m7!U@9Az@g!RJcs7 z$QP~<76=Q4MZ#j?I!U-*xIws4xJkHKxJ9^CSSs8m+%DW9+}X4Va=t8S%XDU!aJO)e zaIdgj_^NX56TT+gFRW18D}}G?%t6U{NLL+}9*#(pZz|78<*62O+&&2RFR@;DN;*8P zs~Vu0OxVUnAXhpv!9KB9(_evH>Bz+0O5|)P6Za;OYZ;liH+h~PNwENnR@n{sb{~LdiI;CXTO>9jhVQoC>vKUGBq2@ z#C=4aaPE_d`{+ELQ#kSI5Ip@LvWFUimJ%m5oddGR83K!CI#*aBtQ4NbeKAxe3{?q3 z7hK!;~g z8l@V6IoEk0r5YirMo6lWnD2DJ%5f{$-bj>Bw!0;UFXdx*~2JlX_V|?6tr{>=V=e4WDldDC8lW)qoj?|n*EKI21cvz8?C-? zwEDi$>h(se*Bh-~Z?tw1j8=a)T6!2QJ&cwfMoSN)rH9ed!)WwM=gnyKN~6^)jaIKT zTD{U}^-8002h}1Ed!^Cpl}4*q8m(Sww0fn{>Xk;TR~oHeX|#H!(dv~(s}CBj{R3m9 zhcVK_80le*^e{$x7$ZH5ksiiK4`ZZZ-B2Dob{o zCA-a%-C~b7+M6Z2#r8;8c$Uh{lHF#>ZnI>!S+d(K*=?5WHcNJ!CA-a%-Db&dvsBkO z)iq9ajZyb&XS9<5br;)iq9ajR&5` zCRg4mx5GBh0f#kR01g+95Z)}z5{?&6fXBWaR>A!1g&Tw$g`0$%g-@Ca(3D48d!rEyAt3s#Lg5$o)2xAUTm^yh)Is zxJ$TOxJS5GST5v_lu5X2SbL3Rt`pV+`TR5i$QEU*McHW48Kl{wY_%v`Ey{*&d4?^@ zhHi;$Q8rq{Gxp8vo+xJPiDI^%C}!)4Vm7#79=0eOToBo!Y_%v`Ey`Alvelw& zFv3sSqHHiiWQ(%F2$3zyR*SM>+mxRz%8_m4$k*kd6}33Saej_`U5Emn)8P#Zj&}$`wbs z;wV=f<%*+RSzWHIE*I_k2<6b~a?vg#tu7bsB9fzAag-~La>Y@uILZ}Ax#B2S9Oa6m zTyc~uj&j9Ot~kmSN4erCR~+SvqkFWU;a)uLtTp%IY3FfZI_kX_&pFG0+?jAMo?ez= zD>`>O%t9U_*9T|mS?Da}If68waL!d}3v`Dr!TjP3w)1o6&k|gOYoG2$elk+P#3R?2>HBv37%1$F;8F|TL$bY?4>jP zlui|1i`G2>NuC4_gq%-69;VYVT7CkOOaU%a&V1ntVS%tvSR^bKu2c!DgsX*XgxqiQ z1jdt;iDPu21;U;YBf zy&QSk%aI4kndWL*9wZL|IZDri?GZUj&qLot>4D$;jcatu|`24(C4%yBCxtnx3WMeuR zGAxH|9|F0XbU9@E6v+KW%OTr7Aa|24$6T3LaellU^C2Sl7cGahMD8zIt{o%GwPR$t zc8o07j*;cyl;v=L(Q@q=Sq{m0=BP^M{-WjDF|r(zv#vTJ_ZKaP4(SzCx0(kmM^Q`3gzCLXxkL z4(SzCx0(kmM^Q`3gzCLXxkLJf*p-XC-7Ha#znv$Ux+- zo|TY+$d#9sD4EFhpp_{3v{|K+SE=MxDtVPkUZs*(p>@o|l2@tZRVsOvN?xUsSE=Mx zDtVPkUZs*(tK`)xd9_Mjt&&%(F z;w2c{oJX2#;w7jNV>pa(_5ryjUV>H8g+Q)}mtdSj+pM6QXK;8`V+YvLssH4(WcUV>2*k!#{57&UDI za!tGhV<(>Bns^DuPDHMWmtgEfgv}~pvr5>k5;m)ZEh=G)O4x##&Ka{so@a|Z&lZ&VInGeGTTmuH<+}V9lvxYp zy8ITDN#qLn7On1Wk>}YW&$C6IXN&6EiV{9ITTud$>+)Ms0+H+TTTud$>++?Ns#H>y zN~%&xRVt}UB~_`UDwR~FlB!fvl}f5oNmVMTN+ngPq$-tErIM;tQf*UR+f>&!)wNA^ zZBt#_RM$4uwM}(xQ(fCs*EZF)O?7QkUE5UGHr2IFb!}5!+f>(f)wNx9;VpA$Y`f~( zuDZ6XuI;L8yXxAmy0)vX?W$|L>e{ZlwyUn~s%yLI+OE2`tF9fYYlrIEp}Kact{tjt zhw9p)x^}3p9ja@G>e`{YcBrl$s%wYp+M&93sIDEVYlrIEsS(IM9iWsy^Q?lfZQkWGV&97r@xH+MBeEytK>4ZqD-wQQ!C2UiZZpLOsyzWnPrlp zOfr;7hBC=eCK<{kLz!AprdE`x6=iBgnd;i5x^}6qU8-xB>e{8ccB!sis%w|(+NHX7 zsjgkBYnSTUrMh;hu3f5Ym+IQ3x^}6q-KuN1>e{WkcB`)4s%y9E+O4{FtFGOuYq#p! zt-5xruHC9@x9Zxhx^}Cs-KuN1>e{2a_NcBss%wwx+M~MmsIEP#Yme&Mqq_E}u05)2 zkLuc^y7s89J*sPu>e{2a_NcDCs%x+6+N-+us;<4NYp?3stGf28uDz;juj<;Xy7sEB zy{c=k>e{Qi_NuPEs%x+6dPO7Na@AO_8p~BSWv0OEltHyHGSgsmh1)ewigs%zr3puY&z}T1Tp%ti?$W{0XjEK$vxe8x_5fPDV z))g545V>Yuq4m%Tt%p`sZ4F$S;Vnso)n7(}jFS73}m znYm_Nf%fh<2c*>l(&_H%r>fV6r*T0J1G9*|ZKNUH~=)dSGpam^MIfYe^4v{xzZ zRZ4r6(q5&sS1IjPN_&;kUZu2GDeYBCdzI2&rLR&@Qj(r zcLu8r-x;jJn3?(c&R`YB%tXF3ScNe&u}H{w2CMLNu@T632CMLNk;r!jt1wSwEBMY} z6~=2szB5>5_|9OJ;X8v>hVKkkVKhPHJA+l=i^z8dtH2kL?+jLfFCyO=tO8#|zB5<_ zzKDEhunK$;`OaV!#?nN-GgyVOG?8x&RKZG#d}pu<%rZaU8LYw_meTT_!74m;B=ViX zDm-;0@}0p$x>FA6PC2AI<&f@_L%LHA=}tMMJLQn>lta?|A>Ap5bf+BBopMNb$|2n; zhjgbL(w%Zhcgi8%DTgsK|H2%`$oxEz?_?d;T>dad=4X%|1nWACkva45ovg!{0TKC5 z)?v(mhc}|fh7njDk#oa{=7tf?4UfV$ zE}ElY{|vCFko%>Nf_=xWQE*MJ~WbBut@=Hgxx^Wb2@(gEx zN5LbJ`=yV93tr0zFh{`!u|QZTED{zAxxeBlG)&wkWQ>=i&@hqvD~>|9MDDLR3f&SJ z>E$SNODq?@DrBUWqgt~#sx^zF&@In!zw}XPm6C9O#Zl;xI^lllqtMuS#8zd@gm<6; zB4Z}JgSHbHGvOVyoyf=r??752BOAN}dmu8h!8?$X$e0H2Ku+Qw;a(wQ8oYzrFXG7> z_ZOW+yb2GH5r1(ExXPU5~GGUCulJXt3);?PM`AS@Iz;?PM`EM&x?lZFw8PQt@5eN=UEpHj7C zu9nQzlDS$kS4-w<$y_a&t0i-_WUiLX)snedGFMCHYROzJnX4spwPdcA%+->)S~6El z=4#1YZ76fKq0H5ixf=d(Ez*>^S~6El=4x2}8S^e=UJL9cWURJ#Q9F^*%-%)qL`E}v z7qt@^&Fo!VyVks?tKNerEJJ!2#yRi7Hi#pHHw&|btvjU|52^;NO##v;)W|2)$S2gmC)DB$eL{_VLXCVv4SWJ+ z;O?v%_=NpH#s{l`Pax78U_DAmZ%`v|Py^4*G`&F$JTq~nN?0XaEo3~X8n8@x=qqaE zD{AB`YH;`Q41Gn7yhM$>M2);ejl4vSyhM$>M2%K9YqYXiBQH@SFHr+8K{*)@szzR- zMqZ)@7B$7ZFDrUq_V7MzcrDJ*ir$wMy)P?zUsm+Ktmu7N(fhKZT3uBuE2@SRTAvZ6X!QJt))PF7SWE2@(fA#N#H zsFM}d!2@8fE-R{&71ha#>SRTAvZ6X!QJt))PF7SWE2@(f)yazLWJPtdqB>boovf%% zeM+6Is7_W?Co8Ix71ha#>M)L_JhY-ZjAMzkqB>boovf%%R#Yb|s*@Gf$%^V^MRl^G zI$2Sjtf)>_R3|H{lNHs;it1!Vb+V#5Sy7#=s7_W?Co8I#ZtJDndg-=ax~-RP>!sUz z>9$_Ft(R`=rQ3SxwqClemu~B&+j{A?Ub?N9ZtJDndg-=ax~-RP>!sUz>9$_Ft(R`= zrQ3SxwqClemu~B&+j{A?Ub?N9ZtJDndg-=ax~-RP>!sUz>9$_Ft(R`=rQ3SxwqCle zmu~B&+j{A?Ub?N9ZtJDndg-=ax~-RP>!sUz>9$_Ft(R`=rQ1``(iw9K`XQ!+>r>Fr z5gM!&;r+3%c{$2co?&WfG0V&|-QIV)byikGwUCuikP&dQ&hl|MNv ze{xp-v(oKZ>GrI2dsezVD~+9%UuwV%Xf5VK z+}YcJ8PIkhclI`Dw@ia}%QV0;YjB1;dmCVrMDFZu&~BLqXmSJ6jMCNseKO5CZv!+L z0{S_6Arc&#>=kkOms0fd*J+EzYp-Xnk zQU<>5-T+%A@@@A9*ea24yEnjAiQL)SpxrVJ+AY(d-7*bejS{jqX^=h}q|XNFvqAc7 z(8#kvT5XV48>H0+X|+LGZID(QWU&ph*alf_gDkcI7EAfLv$p{jOL;i*Y|w6*2G|T` z;LhF#?UrfKZkYz{mTAy#nFj5aY0z$&2JMzIRO`9#mqJ`?_4=s)NN7sL_HH#5VbGrgQ%~fdqiI!eS7r0=)CB)(WTKZMjwhk7JVkV(bds4z?JD5 z?wahH;=128&-EkMQrB`;5zO)9n&smc+8@h?J*y?Te%b51KhW|r??ln zpK)(;Z+E}$KH`4MeZpPS!nA1D;;I%mwwT!B!4`oQ#Vz)>IMm{Fi@&z)+A_1{@RpNX zKGw3h<=&PjTmG@-MNbD$oF~cC!_&u;=9%cZ$8(?ODbIG#e$NTde|y_{yLktAGrfbo zbG!?^Kk{z()_6bmUTk$$t7}>fFfo`VCusi8sIn7rFmf#8#yZ3YVzy$W#aOK!@wXFL z=g5m=Esn9+H*y@sF%w5g(eg=8rgoxA^h=g8R8#$nzo2)ZomgICD(<8Qh45 zlmN{!QcMCOIwasNerO$9=G$JB7qK-Y?|D3RVkEXi)JwT|4QH>-8h#!5&)}Oh_%x5t z^7yQd&*;9D8t(x~;>LdBl;9dgm8{iY5W}dlr zSBjjQ(0V>kXqJPzWDV2_SC6=M)Lid5Jr8rMUanC#e{x1L^DSIHSB^s7&vE8+{8tO> zrHub5uM-kdGv}chKI8vxedka{bA8N}fLyiz;PW58>YvyA&p&OJ=4CGPF@9|&1v)N`uQGy@f zZW8V#`R@HfZ_<31{eOG*pWlD~jt}|gCH=2_>Vzk2_HEzQ&9{E(f2HjIbJsRo(?2i2 z*}MEbe(Ssb`SsuCYcAto>zV&~nSbB6eplMi2lZyu88pQhN*ExJK8yhJ8pNjaCUT# ziy9f76n%{=5OcIetCr4|PkMZwfafjmIF7Pg-Pmegt5B7@2^#=TZ1D;PD#}kP|cph;G zPa_WDS;QeciNN;-;ZsIY9tMr^9eqaPVgxS6-x`l&0zPA;WImVX^JvD|Vr*o_*kXh& z#@AwWEymVjWUZAbkIxSIu_9!;~E@S;JBZLQE>T; zgRNjZ(xXUoovj)N*D1M5$u&wwVx?VRpD_;RoG9C7MA2sZ-TVa^khU&#`9z}PsZ|OBu~ciWE4-v@MHu}#_weG zPR8zJws0@kD=Ex=#~58zP;ZVb@MdZ)d2a&U(zVPrvo_{1(Q$n_$-f4 z^7tH&Q7;+olCdrs>5_3S8Q+r8Eg9RAku4e5l2I)g(~=P_8Od@IY?XUZ7`Kv9D;cx$ z|6QA0|G}F*IQX=V&+7Q3j?d{BladiB8IO|DC>e{Akti95l2IrbgOU*_8Gn+|CmD5; zF((;ulJO=PZIZDj8EKMnCimfBj7dhA^Nc51jpO@T z#Ixb=Xc6E3f}HgC$>4#}A{i@^F(MfulJOxK7xM3I@(i@d{)#rqK8rSa=8{d)8=Z$1 z&qIrdMgi#-;Ik!2Grl9EJ2JLo5C`KrGOFWJ9E|A5c#e$b$XJeyGL-$k>gH+{n0%KWvZe3;&Tl{;j7v4=tXD7SBM7pI)-ZPoc#V&?4{gT4)g~gV52} z{U5#8X?)gzI{tU~?&Hwb@&Ai_H}=5Erv9<-PR1R`yYC3>gMIWl+-2u*mz~31b`ExN z4mNQP_P`$IpY_A%a0i^j9dHhJz&YFj=fK-JSpPX#|2bIyIavQWSpPZjat@rZ@5EXj z4o3V+zEt}^>Ko6iZ~W&H{LlM1_G^@=E2KCF9bAA8Ei$Z~;2F03BRF zjej-mP}>jpj{i=t#@>uP;(LN{H21kbJRW5fqkrC){_A5=jzPJ{vj%l?e^-ZCwh5CrD04OMx{{2{Nxjwu{`LnRs> z6)}f!@ZAQ!*+2{U;c@Z5JGSitY1aNjd*Y4&?g!wW67DGBeiH5`;a-w|*Vef6#2LMa zGbdNCn5XdFQn6UUslhj=VkcnJdHiCJW7Aswo}%|HA$ z@UMS7sO@_tH`O*ZVn?L`+AJI2--=&l=h~6svv>U!K)xUN!E^q9@dtgg!9DlQPqU0o zN1A?wHkX2H{WLv^|3b()1?PW^G-~}?8`9D@C9vJ!6!rrNc$el9e^8g-z2KYjzsdPs zIlq_l2fm5;yPtoX{<`*W&-|klyn%lHQJt4Q{YJL$meaJq>7#G1KLd?Sp^ovp|GT;V z^)zhs2Y>!ic}-=1YZYJX^4nsX%Y@~9%^Ym%hwDL}zhm@o%m23AzfEB*`~yGVsh6KR zF_-n=+u#gV^V;G`KnJX)#^C$Y;_;4d622qKhi_HtY1-pkX!_v(#CM6{+uVjAdTDn= z4;_WiM&q}aLHtPMxCb%FG7w{I7IMwS?{)ZU>;>j}ME_cXanTdlseL1MyDh_&%keuB zd*0TXo3Ym#@A;UW*snYVyOodPOSDg7=gMMJk6%Oz!ajol){Psm+xrvzhRtW@_t@?2 zKtJn&#GN2-627mCQucxj{A%+7m`kQZl97<@c9fls^~!ru|60`Y4t6X!@V^r)F0If; zA9|baXeYiG2fO>OMU?(QkbVfBlI;_-b%cqyV|V5tZ5x~k8i-P@lDt*z6I}%m6~mMn`#H%8!9uq%x<&C>@|3^ z18*`^qUDFM!`y7$rZ@e2ftBhQ9q;U;^r#gx}WCL@tm_w->vNDX|Q-lUFA+QUol!`u651M=*XKL}=78g6x>+ZJ|`jK9rV?g?viNWTv0*YO?wI;Gzz>9>vadzoy>1zW!vx}Z+m zL#J6tkHc?!%wNYNeLH^JOUv!d9r%rruHDkL8+$`0LwD48E8SIJ>pc(m0=|V(+Na(f z(z`=?cS`S3(EAox%vR{yC0)0du3gf#%e-p#qb_RPEnU0K>-cSteWnLd8a3|vj>g+b z<5ALh8|>+L6H-y{t)=&t(mS4v;kT{y-cow^NbhZ>_qNh|t4n(4olWn8y!lVU{&Rbx52>T%KxBEPp=6^&dTI##>U)M{2 zTi|SGl(yK+GmjwM>N{!dFMuX=akSGo9FESz=FgbAaPII~3+Bz9x}@)j#}>|?I&|*r z`}kSU#PRhzCYue@wm*VMdrCf4C-;qkRk z=-%tv%%Qj5argc6mptL$av<{PoLMO;Lx#_rHR93vbF&_v@xau1Q|B+7HFfrVv+lot z_>9>Lr_P%{_r6D`FI@2G!w*kgIBV{l`BU$kHGS&rS#$26HD}hsC9~!%obkZ?sk5if zL&nEuJo4z&*>mPD)Zf`N7A#QW0m?sPe)Gw>KbkS;ff-}(xb3!Kw-1{;Z^`^w56oPc zbk|kW@47mve@g$Hs=KARBW}G>s;W>bNy zd{l1KlBi(R+Ne!YrBOSh_D20Y>bj_ub^`z^kt`)B5W)&`8y(Ga(j0vt?w(p%d zYmWQk%_r^t*hVq=S#pI+y&Z|rM3 z>}&0T=aZ}<3CkKs4)l0$!Ok6Tvd7BlnC$Uc`-8F8kn zqdfNHm>wSQeV(HD?jCQfusOidcq((&W<}g$ZDNfA3b^Qo=-m6w&y@) z>GZyR=S|N|^xhnQMZEXUN9Npr|JFGbiQd=pw{3d8OI7Lodmr`ZP5IA6+Zl4%oxOL* zpR!WM$G1O_6W{*v(fB(s-fKN<%J+16?Fv0F0WB2_-f9u`^ z@3kK5^5f}tZ|~r#2mbV@R}R$FyfV3a_o&y_r~~j9{aL4vn)@7 z*GkEZ_d<{>K0I-8W1^iLbN3Tot5eixcApH7_xgDIVXw=+HpXiY>6K&;Y^KC(KW1P4 zkjHDeV@KVy|IfF25`9BvOdFs5=nHQqSZ~{Xz1H2TVMz4oWx|v-{aiC40KOyk*hs zIg9dUBu*Vx5#v4d_L|u<@)NA9W6qB_Nj;4i?sdG-xHGEpIM}y;>$d6}XS*!NS8MD} z)=9Vh;a9U=w!`g>{bj}aU!05kqur^8`??=be|RzonIDX;e|1-7X`**CB%cy*-Ht!M z+`0dci8sY~9UB{Oi)x(K@uI!PZRJ~UxqkmuMw0box1Ddl<+_T^u-f#y)8qYe&{H0} z?^lc5_8X0hT=q>*#WyaBvEKMJG9ske+_uM@@-nZk0+kf80m-Mvd z{?($!!HXaCbhO-SJ?_RS-n%?Q?wT`sZlbjowA$PJ9&2Bebt>Ou?+eAp+Kva}?Uu0i zTjH&#m?JeXc?(3`^&j!p*x?@Ud%N~Vsy059m0-W^_S#oA)>(1V8Ye=*m9b-jXSGs&#tRpUaV9XZ#h|B9J^hA08a+k|HIDWCmJJ92^b7Ely z!yEg=&WZQ-@!T~Jw`%E}{fXYi4r{vAHVOu54PF#)omvnNqm6TWpYXKLsaU_|H;pyt^%j!HO9*qElo2`M~RlnHS`NY<;SB}Mf;B~wKH?Zm!&zEhySI7Gve(1>9 zF5V9tQyg!2>+CDPT4nXMV7~T1TszQv^m>o?pq1ja91mEIc7-1A!w=q<8kg(#J^SSp zZ&A={)fli^c^hkEt@sDxy$25u{h*7tVOB#suVaUGi}!;Ki@ZTtGkSiPnQ2VRbo00| zLzBz{#@uHxK*x9k!+7&EW1cqVL4#qF<3A0CN*Li|@QxV+hE5naVe){HJqBKwonWYi zF_wAOn8yr;Rv2SpSZn^nU~*wzaA0U=a3#2&b^XC*$Fz>QD&~fmJ7U(mv)mKi5qD#YD_it!F|~y=H?QUrIX1luf)7qbD|K|?vI&|nz(cxIED>fr`aqP<2b+K>7 ze$_FqW8aQ9b_{lWuH*iWf9W*1Q&Fdlowj!>>-2u7-*@iS`JT>OJMZaS(fM%a4?BO_ z`SZ^IeR=!K$6o%#sr)xQ`eWezS8wr{Gj;R@k`Gp89<=slU?dbMu_krCX>;Co?{jL~$#Uod2 zzv9&^eskqrS1!NuNROxqLw%WTiJATI|?k4b1fHvGQW~TB}{wBJ>f9+Q!q`>>}Ik`eK>K@+|Xw5wpQ^yOLuzTM4c&V%8(w zZE3viSsLFhW-)WcEU*(?Rv#-N*77KAdt!V=A^3ahHZ52{ZCt))4ob!58i?9Mgh>k4|a7v9EtF;o|5dw|zq}J;iPn_qb>GGM7Ep zJ+$zlUE%jyaQJcM#{;ZeLkUT4YpC^Z?BoaTAF?#T8tFdsADiY)jkDKTM`QPId-?5x z1bdKs$f_mlUy1WsE2eweKlH{;@$IwUxXIIg5n~#zBHk;)n?y;1E=CXyWzB*U?<*~ zcJ+kk@7$lA(0*^yJ@<|4AD49M8f)Zx@2ubbW{zHO!D<=f`nbMM2`Zkv}d{k6~wFU9#*d8~m8<9+sD9`(Fr z#Yeqly%uYy@3hnZV5cWou9%yw^qE$=l^$oM@3hk2x6%`AS4>YkeWsmmr^o3s%Z2N# z<+xCJdp75JU!@?A^4`>3+8c0je{(GLq80bzgMYGP zv!AmPe&Tr!P3}-NtGgBVU}{pst<_dbmoLfcNfTW-G-(&5c=CNuqJe>9k zI?u({;=Wd*J=MI+Rl-26< z+ymFIPi+6klO+|e{U*+8+3k#dojsz@HFhFPf46Ag%Qan2ygp-m)}4=zOdMgi_*G2% zbMKYU88_yhsTrBMWxow3+TCL8n=QvsOjCS6!kwFGwQbB?>}WLBRZ)#a9j(mYT5bC^ zX4<#9?W14yaM@Q_=j=?kRUU0mi?OCzTV1{>D?J}Cw#H(J(b{U`XuJVRIs^en{q6$H zzek_b_JGOvacS zyH`y2vpua*3BEZ$inrFFuwSCETYmQi@1#Dzwg-&NUU=7iiB{68eJ9R#Ikt1=-35tg zs@3(eK5yFHy4Yir?Ie4XJ@?O7SYr~GVSIl>_JI#RsH&)|tGe_0>$4}{08V2Ye+@}7 zX}LDaD(`5me;vLi&AKrGvgO%rEX!?QW2a`oNEXHUW@FrS7bqBOxgDFW6ze%i^d=-4 z@#l}MRu{6X`mIZRckSzMoPzSv)a&i*`=r?|(_f$T?vE1sJ(it)Wt`pW&l%PTIK${0 zb9Wv)R=Kmb_Klgh-a2XKjfvKY=#i6OI{M~;7f+lx@L<-s$+Jc#`sS?kG(N>ao*IAf z%ll*PTY7i1yV+NMI?x($qH5Fr-HCQm-aR9)?Q-kPov$qwgI(8snq_tCVvYT?m1J$Q z<|cn`k4ao%yJPFBpxo>`Z@3}50$Mmwmq=%B-FmOb`Yd{q$L?btv2L@{9fvaF|Im16 z>?F_Q@s^X53;Q^19tS5FUrn*cxkB+t(1YU>%kdx-vf9%)#kzO3$A|o{hdjt)je9KK zI&MeXI3A1lUBf; z`#%I;UU2{Bab4`_p_z8P9sh2o6`lCAPh#(QV9%*jFYh^caOd>&^qJG|Nc0W%^z!&# zecEaT#d@q8tyb+gN`~><$=1O3Uwqlux-<6l-N&w3o6x@TSI_T`)WLEF)YvHr_JzOP z)#!?8|Am!urrv6qXb)T!JAT%zQ3>{V6g58P_)D|KC$?`~Y*pa&Je)-v&3U))9=M2ucOz{* z*wH$e?)mCxKf=Qd&$@W)Ig0GjzOmgjPooR6cu(wk|HZ^L$u7&?m~5Z09aefw z_t3=KY!8I`{LM+XJfCRwKoxe3<+EoEinlJaueRnT_)epe{TM&IxL7lcLzrQ3E;!JB z(LQ9oSP+j7583Z&pq)z>oUw_I5)q-<6DiEJ_A!(Xtnxj zeB;7c>#D0x*%=9THRnwDq<@T+@%vNORWOE*H{3gGP=XzYym2x0ug-!adnEqLyz63Z zmvxQn|LNn)11UV##N>s!Pyg&g@P7whG1O-{V0q+=Z zLQuSkKu`fu5fl#$-e-&wjS!7u)P$(yG1RP0e$TIFF>l_#-jBlc^!CiobXQf^_ghum zyK(Ff&=~sC+OyfaD#h=eIFLDa-TbP|LqL{j3-|Ag!zxmbx zYT;q@cZ2h=_vie|%Z&!sKSMt;e)edQeTHA~8Gq+cOn{`#rTwTj4mZ??C?}9Q1|`-8 z+i^%P)uSU6+xk$@-iW7ti1w#ZEGJkf@&ga0DC z(rj6KCnSZOAYEz0a@Ne&vHx;_?f$R^=Vp!NI`{@W)PsmN5`_Y#eF}OS#Jr^i-@k6~wQ!Q<~O%)?gDvPjuA z4eAtkslQtGkqvr$o;r>RJab}oXo~qd@U3IM=yBUKr?;vN@;bG=jydVywyx`i?gEwD zBY<|=N`MX_6X^`9tMs9|bXz>y6K$x)FLgz)+~3ssBq~cPIuq5=RM0KOMYew==&Gj_ zRK+|t#tfkznH!NOK}GWV=4_Bt*p&$&d2GM6!Zndo!7nLVx66e|O=XBv&IBRV~CWSsX7W^59~2 zPb6c*2_%>{6ZxJEi^kn@2845LB+n+ZnVf8Ixv?nRz5_-!i_?xGIOl4Zu8>-a{TR8N zWGd^>3wm3Adh6=VyKUf=0G|Y3wjDJiX3Bi=N@@sB%6n#-kl=kVpXe&L;t^kNB5^?7qn591Tl%I@G9WBw zO0uM@f5hx@5_SnQ3Qx_uZ;biCib}esvA9p*MQy8)`C%224gR9YtyxanArZ&;owpyQGxq0IOsd+Nad~T@(IVdUMhRf`Rvck3q?Biny5JYVl z#rLg5LOUG^?aKaC>$Q%^=hZSY*AwJiFUmBnU6@Ah;zeOXYc8jSS?h@TiP}5>ftm7o zPxhND{Dzbp@5+Ab3BTbu9~=k$`DbwL84{D)UUtKtHCE*fb%|lr&RJX6*|26MK{5lpdz4^#eiF zCKEIx9Tj_%Nf9aG&7ZMpS)}$BsF2eWO7<3>5DTDPGC$K)SfccRD)1I-FM8Xa=1=aO z7bCG?VPbLMy_Mqdl?j0p4R{)3ninC4*zyR)c7H{6`(y!j>vfUKu^D1o5G(2;CkNdd zY}D;TelpU+PwMvVq}nA^zJT83G2Dg2QYfSeQOFbw=A)1#K(64Cd;vX7k1X`2Yv7{= z`~|FDy%qT@_)}rH=i)Y>Y8=@%l9;sp8xHWz~iq>vpWm6=BvbmdfiYmz`LAywY&< z*wO3POXqrHG{cdH-i}Y$AU4R+ll2VQJ!^Ng=HhEY2g@sR+l5J%i?JF4Llbkv`#$~#yl)%n!c4!h449L+m*)^K)7 zRq|1>t}d{4*f6djCM<8NacbC-U0~q-VO;X;rD4+y({_dy%ocroY6I`z=jI=+ zT5`^aAYhC9pzg6hqiVpnridB z*OAm^Jh8?7a@ z7E>1^LX16ExiD{jtRXUWp5NHyICPoo?*4h&bSk7!)HVK`UtDt$7du0rygVT~Lu4bL za&z;R?kzKXySw-(uEv1Rxuc8rq(mdvU@teqr>ch$xU=?^8}&UY^v`_$tO4R0o;_FP zzx@sU(|2$2?QvII41F>vhP?V<$ZIkF>l05{BDVX$V(Gax^XY+X2ht($@ZbYJ?--}> zAU*KlBW-!6hmS7bX^`ys8LN^^vy9W{mE65sRC1>3Kyvg}shPhYbf0x(9eju3aPIan z=pbrYFUWo#kOu#K)j1zyc>|%Ft`Y(uTVHn~|I{~0E&9OJPo{27G({F9ptqz zM-Sz@2sAQpK|7lULFlHgV>>R^!p>WyWdE1oU;_SSAhYVxZ>Qgha z=8F+mPx1$IveFRA+smzwRdQdsRsWdX8Gs(t8QJ|2I6PAAXoMb(Y8WoN>)%|y^W;gu zo!-3zMtgc*9{omoWF0=gxT4}f!E<}CO{4PKw(t>BR)Ko# zY@?oR@wsi=s3)d)YsGR#1MF;2<-Y;V8#VkcXXqPPlCbf>jy)w`(x3|t_EUqM#TWef zt@%3+8xQYWln}qd6t`TOl*W1GP_|26+|c~PtA@_7`Hk}%q;-Pi#T$t3Z7|inOd#mZ z!TLo+>!pOEECDgx;Ob#prvB>j;@aKl4&X*tKa}FW9Vx8H-M#uCT9_r&T=AC*=HXO- z1e{u~MGw=K{U$JefJGc14+CCmEdpzE1$^{(1%m4+@Z5z8(*dINmkyOwRmGP~oD?4y z7IrA^qB6Z~(lr&lUrQ^`b5r>6DZ@#tAb*txIqUG6`Etfcq!e|K{T6n;MRLRd5ztKy zU!!1yKvliI+L?rz-G{BOya}CgG9jfyi z=ZwllBTIN)OZoo2 zM^71+(a^oKk1iCKBCzX4V5+sQB{u!Q;lq3KOH22pWD`t_mY6dD|HBzQ~pS zJxO3M5MB-9ufeAr6thox*lx|{^GKEb#NFVvZ%~AwJ(3fdYiYqD4uZCU4u#Vljr#wO zpun(w6m($rFl(8ZG}$@6A;?aApF@ym8G|qTz8`@h<^%Y) z{&WOR;J=r(op};Geu4_i`#(WIiyK{s*ZMnEDvTAUkpo*^xO* z2)jIdz&&;!DUzpgXl(l7XQI%?jyus^Cy}P)$J4J$4<3eBdJo~w1b7uX7zb0wg9FZtm%N9f3k>)5qv)km zi{lR?+F(C$OG;K&o;N@!TcHmK+jVHJgwW>)ZddH~h$#l<H>j z1z8V$?SEl|MFhtLnHmC4JPdCB1^Oy1$)M2K{vsNs4AAkvoQfSJX+u|owP%|A9}q04 z*A}P;P&-_la@lG%GA@@NqEXbPH}tMLXV9gdI`hqKWaQA}L@sxP1N%s9-2~3^CgIAF zV^^*mndL9)(tW2d2sP-+eIL*EF-%)9FF*|XlG81)6?En64;HU2GHQE}r}EN&-rjQJ zNqP{NE-!Va6X`{aYa=$VKy03d*u27?yuz(RSAu$6fqGnmdR&2eT!MOB5ryN|)A141 z4Ify!Vi8_ZWlu)S>-4&`p7`mvcftB@B%Q0Mvp){PKM9U$JsCKxI>Vk6$uGQV4aT|o(~kC$m!OWIx;KOV z7PP+wdKF9uJA{(^oAp%(3rkDq7lnn*pBEc@FsVvH9~UtoQuplzY>vYLML3`k2PENu zc~ufJ0>1QGroQGpH|ON#^n1p(bhPi&FUM9%7iwmg2M2RU!YA$>Zfr}O8o4K+BwU(2 znM2dISg#~zl@w+y+#|9e7RasMvp&B7)rL9i9V&NPhTaw0$C5rN9-tgAvGzX<)Cs{VAg{93Q8=t&VvBVPFcr{RRT zpC^e!&j{HZg~^H{(e!^1fBef~3{kGYnzP-3ha#;2~d;YZ^+l zeinXLbr0!CH`zu1L|~)Ga!|th?;*pJIZxqU0msVa42AoJxkx&<8%3^T5GYaMYOWvP zo(SVoIVfk&dk8i>l`d8;Xyp+jh$??Ad4B{q$-V;1MCY+9TgVmy9s%QSp^71MzWxBZ zh#=xRi9G8v?g1dz4tFz~?GYks{%8cjz8NLLqOT{-LnaUx|CsS}#A~tR%bbm$)8DR@ zUN4o#m0XW~Wz?BkyCQM(8Pz4ppTG|bXf8bsZv80QVGq(qv1C(sl)tAQWV>R3!B5%u zJc1PU8AKK-2IXB(`hnO)g`Gm-kvYc$sXq&KaUI-3DHO{OJcu0&hjy|Xay8?T#M>b6 zQ9ozl7^}Z{7KFXh6=>m5>DsZb`~m37m2Ta=tIT+}nctWixp{$+k-%w8Fi8tpXAXVC zcF>g{&lnfGI(>1Bag;s3{y@drd~{`TGm{@UQ}lwbC|`-5{;gkCut~n92kWW}pvFwH zDQl7z&M?kM+JAlxo-uV*FjynlX~TgScXGgZH3C7*w#2^kikVbFJH<>Y{pa=mcvFji zTfipi?{DM23lLJ4W$*oFU(tgKX$0SY?(Db_L+FY5k1Y4B&!f5wxUJ~+Fx2e~)a_xY z+Zm|a!%(*~qLfFK7NL;Y0NqNQhLEimno}XNz#9W1SCHm>(DJuNp*RtsI)k@Db@o_6 z1qo9&F={_(%zkcfI}WHp0x0 zRo78_hh*w+UEQ$<*&RVxHhWx#ztM3*)sy)Wthvpy`7d^C*pX+*+py!y9U^4kW^4E- z2d`E&8LwQ=SawvoWY3%lJN%3+fN6U(muP8p?WY1kA1bQDxoP1SVeg`Xfwa z4rn;8fQol58G9GH8%EK#L|N8->`2!*5pyxM8y8cg)_SR7AMSlA&<*;*1sKctUlD)x zaU0Dv2}-QIYR|EPOU9p$P5x}*7b$B^QrUuuhmfxKW!6p@DQ%D0CLR(d<>*I6ow)Y$ zYVFG_r;?&~NKCiT-+!P{`;*07?j)8(Wrm>`c`J0)vkN>p$zwQe6pGmqOROrgMD3K)mE&7BsQa)6f@so81E!&df& z;SYy++ZN73dkj8fyty?pi~flMT!S&443lcJIbAJ#;ce>P+alGQ{r4_sDC5`?CO{`1 z4N(p9y%dHvqnC&&&uRBapi9p}oY2O-Ov~w3$f1l+vs})me4n{MHhysHh))qr~8V#i+KaVA?&y|QmtT59XyIP8i;;`N`{d=drITm9kJ9IONt zi{KBx;*hFVA+3GnHTM}m2NQ*}Fbo^c&voXIy;mW(G}nRC&Z00JlWZ`><2hV<&S9%H zatzI)*#EO7x{q11odmelk6r4=VN2U<6nd76)$ra1MNCFCBy(&S&-yVL@Q3>a+UtA4 zs<-%`t>Uz;lJ@Uz%J0mtiA( z)t{=rRPU{L{PUilTJ^IUXyt7+!fG7WAB0*(S|wVgTdlw(#=}G&Sa-m28m=?`!B8V7aZa2& zH;^03jljwSe=d-l!i96uA8HSl|66;Ygz_hmzE~8{)!Lo5fhq|ThWk*>M4GKc_No;x zUvcv7i3W2;7DSQmRD;spU$*Oksl|%pE>^mbE!(#HQH`Re2+^w)h<=K%VxMxJuwBm* zP&weHlAVm6f*q!e1DcIl?|z5zlI)M6^PvLk6c*K^N7!-bB+5gv#~*o@cTO-%)Tj`@ z0Y>H>h-N3T$H&5Y1qZ4*eXyvkY<^LQ20edsm8bb6}kH(J4k=O$MX3o*lt416l zx>0zAKHDpBlRv@?Wc}?^d#}APG_$VunC>2(I33g7zp=q6WC;)ZL?yc<0JR=}T87NF##y`>VLO$B|glW*}`Irj#>aNI}pH zCMr!hL3ep5Q4-|C!V{>*9BsptSh@!Kt2KXBp2DzbX!q{np?(^S)G4I~7>U!M%^r$6 zIe^9_1sg}stbDpwl0V|V{G4cBoT<6Dj1E6D`Gs`Xx{VY%fTU1rCPDjvX?YIm^wEgV zN2F6t;0%0@bm*3WVrR#X$cmab$vC{Nl;hs*L$d<6OBm5<`TQMb@p&r+85+g=Sc%?; z@WK0d!8*DA<9i6`du&JF14|?7(d%kLud80uEIis${_PoY$YIVm#5BRxU@vGcwNYmi zXHuA}q>7-B=$RE}lDGLm12OJ~`TUBsB+E%+O7nGp?g zIcqhThLor|zI#dH+_cp2$oY9^*GMjW_ZyMTqDKE+@!^vv6AlLjC(MnAD4vTV5VOo= zLbW_UhG<#`EJQM_BhuekMlgpAikLk;89%~uiHjB)L~l%UssI%=xhNDZ$`VXNFsU@i zN$tf^3gLwJVD_I2x~B8VVPyl9NWNwV#Uxp$F-j!>$_YZ3g{%`gEm*p9Qo}l3n+8s4 zqQ-kFdQZ|*9)()&4IgV@5wus8Yc}BQ&Yhc{8Y^MpN_$OP1aX=rf~bL$JY?bubcKbI zhEK$b1n9zli}eXuQh)^sD6a4`KF&6>84Dt;c#VxYRHJXce&+7w#GTig z$pS33V5M02pi!NS!X;dkMKri=x$~$BDor_7f|#%n1#=!Wqi}Mt!spY@SW+NpWS=ys i#pGtxbrr%etY}eT>WMP>eKdG3Xi6)qH0+h2Y4^Xl@(Qc~ literal 0 HcmV?d00001 diff --git a/in-out/src/assets/fonts/creato/CreatoDisplay-Medium.otf b/in-out/src/assets/fonts/creato/CreatoDisplay-Medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..663b7899a099df9ef120419c4d0f0b6cbeb20aa8 GIT binary patch literal 47492 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Ïym^ zm_sDXhlTXIWO-e(ye=7DM;p@Xk`b?#VqFEtVN&25)j*EMq`)`ofQ(cr@Qt0oPI$Ja zz&D89b*7inNy0ut`bG+TqY}utl%lwlqPUcT@rR2z!|0R(-(bljg^W%q@C}|}bV`A5 zFg+G^Oi}AS1zvF;>2zU+FjIJ+kS+NXcm=PTuQORHCtK(h`h*KE zma1M`Dm7GozIrqx3yW zk8KDbC&v~0gGXvO9+9d)cqC>BGllmFry@r6$NkHk^QBLgG|v`#g+8HQ7!WQHE>tZR z3zrCUgt@{zVZLycG+ZrQBU~$7CtNQq6uu-Z5^fL{3pWZkNzYe=B|5WNxJ9^CSSlhGkfzmul1-!zT=rfKXqO=G`lij8Twr>GleF4EK+O2d6b zo3QVb28*4?I7Jw~9e~jfBA-wLP*dXghOz<~)$CxPjo8NLhnW!k55w zVTLeMxJy_rJcIjgh_o6at%gXeA<}Ayv>GC4`gjchheZ1)AWa7vc_=r{)Wo}!}aVN zu4mtHJ^P01sW)6tz2SQ54aZaOycw?N-Ei4qxa=@ob{H-@43`~-%MQb3hv9lE4cAj? zxSmSG^;8mWvcm}3VT9~3LUtG-JB-v-BX!kCT{Tiyjnq{mb=62+HBwiN z)K#P8x1;2@qvW?(w+$Ue$#1bTQfc0yqvW@v$L zV}R$enw59TJ@AdQz(Eb?fP;lYgm(%@3C9S>B4XbIuVDVw!ZpIR!ga#+!b0Iox~fRH zL0Bx@DCC^NJ@5+3-7MT9+$t;;mI?O>Dnhd`Va&+#oC# zZWNXXHw(82w+c&zWx{>Hdu1z*zQtlJsX5xBtCZ1is>3rOxK8Fx<(Y!6(`eGqjc3MT{TKqjnY-4bk!(bHA+{F(p95$ z)hJyxN>`22RikwHHZ^CB(&5`XO@@3UL$NLcwW!7!w(~O->oOGUG8F4F6zeh+>oOGU zG8F4F6zeh+>oOGUG8F4F6zeh+>oOGUG8F4F6zeh+>oOGUG8F4F6zeh+>oOGUG8F4F z6zeh+>oOGUG8F4F6zeh+>oOGUG8F4Lx*dyAOLCMcjxyzSnc^r@9A%25OmUPcjxxnj zrZ~!!*JYw!Cr|>tE)(@4((5u&FCx7zQygWAqfBv>DULG5QKmS`6i1ojC{r9|ila<% zlqrrf#Zjg>$`nVL;wV!bJ)rdr4`Q^l+B}HS&V#@d_|JnF=PUtoWx|6Py)3~hbgp)o ziabQl4^Gus=v3sXM4BUtH-$wc5ni_Iwtev(%q!IkGhN zl?9(?9E$*_#UADN( z7I)d=E?eAXi@R)bmo4tH#a*_z%NBRp;x1dq?*ig3AnpRApxyElH`WHm5CS8d3`FXPly43->nsgC#V>$sk zEP`%Ct|nas-983#ebFN5_9~F8Nf)8V%&XWxUW8r|k*i4;L0cl%7cJ6?kwscDvPdgN z7HP%EB5=xbxV~tSR*Woy<~(yiC3AhzBCQx%1kEX{M#%L=i=g>ovsjuhmgbA4`C@6l zSeh@E=8L8IVrjlunlF~-i>3KuX}(yRFP7$urTJoMzF3+smgbA4`C@6lSeh@E=8L8I zVrjlunlIK`m&MY2u{2*S%@@Pwb*RJ`4VZqM4B&==1Zjc z5^26fnlF*&OQiV{X}(07FOlX;r1=tQzC@ZYk>*RJ`4VZqM4B&==1Zjc5^26fnlF*& zOQiV{X`Um^bEJ8WG|!RdInq2wn&(LK9BG~-&2yxAjx^7a<~h)wlJV%=6Nb?+No+Hh3qk@Ipj7OtC^QC{j^v{?6`O<$WG(T^aLT4gZ^(=*kOmkJwQs_YBs-C6Lfyh-o zOQ8dit9q8AWaj65&{C94dAUknu9BClpnRq| zCtiTI&3Pc_#0wx1V@zn_yb9!;cmZZb=Kwh;UVwHEk#ph&TIp1P(La96Iq?FtYKWW@ zFF>p2Adqw71)38tz-kuC<(zl{Rw3LXP z6E8qZiO4ze0*qBsL(Yj8V62kJIq?FFRT4QTUVyPmBIm>l&}t%bPP_oECL-s=3(#t! zo}3deK--CDI453!wiA(a;st0s5jiJbfVLBJa!$MeZ6_k<#0$`NV%<3>UVxQOJi|Hh z0<@rb73ahYFwRL!a!$MeEhy&UoOl7ef{b%cyZ~N7 zDtO36Am^%9f$OtC&L*$Y{MRaQ%`==mT!s1)Im5eJC9GBnt5w2km9SbRtX2uDRl;hO zuv#UoRtc+B!WxyZMkTCK32Ris8kMj{C9F{iYgED-m9R!7tWgPTRl-`8uvR6kRS9cV z!djKERwb-e32RltT9vR?C9G2k>r}!zm9S1FtWyc=RKhxyuudhcQwi%-!a9|(UL~wo z3F}qDdX=zVC9GEo>s7*fm9SnVtXB!^RYIXkC{ziB=;_p%LPefJMV>;Gc^+rTP9e(V zx15(RM48n<&dV2~Od@B%3pKk}sK`^O$Wy4uQz%(4p@c8ZODKWJdHI)60+I9bFQEh? z=jDr}RgttRl2%31sz_QDNvk4hRV1y7q*al$Dw0-3(yB;W6-lciX;mbxilkMMwAvt9 z8zgIkWNnbF4U)A%vNlN82FcnWSsNs4gJf-xtPPU2L9#YT)&|MiAXytEt5~v%B@6pE zz+%OcRV-P>l2t5O#gbJlS;dl7ELp{pRV-P>l2t5O#gbJlS;dmIQL;8l)<((NC|MgN zYolasl&p=CwNbJ*O4dfn+9+8YC2ON(ZIrBylC@E?HcHkem9R-AY*GoERKg~eut_Dn z0*M!~3l@Fp734n)qyy)uKeTC{Zm+Bx|!|ZI-OflC@c~HcQrK$=WPgnvbIXrR>|5bSz9G*t7L7J ztgVu@RkF59)>g?Xm8??9DwV8K$tsnsQpqZntWwD;m8??9DwV8K$tsnsQpqZntWwD; zm8??9dQ~mnGD$3x#4<@Nlf*JfER)1CNi37ZGD$3x#4<@Nlf*JfER)1CNi37ZGD$3x z#BIRyX1j2QaHo*{>R7aWIUl+Ua*3RU--Q-Y9gu5#cA-T?w?I&J-g7l zAaWLd7g`rY&cg3PYk|mF_+6+kb>^J)F4T7?c7NkDdbg~K-BXli`+T>ox?5J=EvxR9 zRd>s(yJgkgvg&SGb+@d#TUOmItL~Oncgw1~VZDRuEyMz8y>eNvT-Ga>^~zeNvT-Ga>^~zeM^kG!G+Hq0^=upyD}3|63xT?ynngB569zX{|! zgB5636Zy_y1=?NA$#(`T(E4JUvz!%ZcTEKHoxuuNhTrm?!3tQ0$R~9L?87wQ8LWVP zhQN4Br{7z-T3r?+jL;%}fpX z&R_-F%tXF3Sb;V(k?#yvpv_F=JA)M%T_p0I!3vBn5;;3ufp#2g!FL8L4Br{7FnnjQ z!tkBJ3d45>E6|!C@}0p7@I~Z1gB9S5$ae-Sz!#D43|4?IBHtOT0AEDDGgtw>hx>NS)PT8kBWuNYp zeY#WjqhIaJbWi>KU(HQzLT{dEpsB@$=Z*W zIgu+C_M?tOzLOP%<`aSJ8wR02)9f1t)i(^PZx~eHFsQy^P<_Lo`i4RE4TI_%2GutV zs&5!n-!Q1YVNiX;p!$YESmq!~X5TQVzF|;(!=UKg{tHw>z87=$IOk)M6T zAnaKLWZy6ddlK0<461J!RNpYDzF|;(!=UKg{tHw>z87*yXdsJ>xPeZ!#o zhC%fWgX$Xw)i(^PZx~eHFsQy^P<_Lo`i4RE4TI_%2GutVs&5!n-!Q1YVGy3oTC;B$ zRNpYDzF|;(!=UKg{tHw>z87*yXdsJ>xPeZ!#ohC%fWgYYFxPeZ!#ohC%fWgYY^s&c0y~UPol#FsQy^P<_J#@QsV+0NAesb`^5H z^Z~HXGf6_O#5e%1iCl?s09^B1uEaP1eu-R(aX@kDfMz!ifK8rZ@9zM3Byzp<0dT=< zxdY4ra6!xw<_hzK`9iL*H~LISsc)u#R1J(9Dr?kp6jI#z^c@Q>njexhO`OSOCNy6&YKV5?H7TAh1@gY1Js?! zJrh1a-HF`U-~(t&{sCi za>t=Vcqf?19fuAfR+IqQi$8=|Q4Qp}qeF-lD}kK#IE4FxC2-x*A>0>4t~)w}`+~@I zM~84<5V_;fA&jgOx#Q3wlOxO(a>t=VCSS-MhYlI;ICKaRhH1`{9D*0sVH}V;b0-fs zkUH}nXd-pS`-0FJZ*D96()qA-#`++YK%Eau=fl$Zuyj5woexWA&hW5I z>de^yB6U7&sPkd$e@mp!hY=4~0;%(1>3mo^AC}HXpz}&|1hJ0Dy}XXVVnps{b_CLi z+|BF=q!YQD*%4g3(j3)QM-d52kmfsIN8uYpzKePkzCq+0UPs{@M80!+6tRW*`F7_~ z#1M-f|ye3$Ade2K_+sgA;zh?_ot4+mxz3S>L`4kSSIBA zP)89NDovI4gR0VgP*vIws!IC;Rq3v;(p_JL8eK$A-t|?w>#NjmsY1KuJkGG)QU&hN z*HXKs3bp2W#)K-xget^@YNQzxsuUBd6ceft6Q~2&R|wexse;8=K4V3dVnvl=MU`Sjm7+wIqC}OVM3tgM zm7+wIqC}OVM3tgMm7+wIqC^#<1oh;8P*sW&Rf-Z-YD*lG7afy79FrFvlNTM67afxq z9g`OwlNTM67afxqRqLv1c~P~zs9Iix_ZT3nT3%EwFRGRoRm+R2l>C)$*chc~P~zs9IiBEibB;7gfuPs!>y3MK7w67uCp% zYUD*V@}e4fQH{K)MqX4SFRGCj)yRu#!z8;|{HrZEI!Q zTG_T%wyl+IYh~M7*|t`;t(9$SW!qZWwpO;Sm2GQf+gjPSR<^B`ZEI!QTG_T%wyl+I zF=Hc5Xxm!ZwpO;Sm2GQf+gjPSR<^B`ZEI!QTG_T%wyl+IYh~M7*|t`;t(9$SW!qZW zwpO;Sm2GQf+gjPSR<^B`ZBN2Vb><}OLrj5gCt;sTAY02Pk*Cs}((~&Sa+V;?HNB^h z^B|DV)>Fv;3n16@p3-ybl%B1p^qe|{d%O+cUE58QJ!XYqQCte42ecA>A+GGjF2O>s>ehVS^Dv|pwgy5@0 zuIvqIwMWkOml69Q}0kWZ74>=}|hL$YT`_6(`z8In~)vT8_H4auq@Sv4f9hUBp! zd2C1?8tz?Hort(FOCwMWkOml6Vhs#kXFlt zv|1*F9_32&iN?@A6@DgkV3S+!=yI0{8$9&xamF)k(wyno`;Y&n!C)_Me*aC{VZ!*I z8jMHC|GdEO8_|J${I3e(rg`(B*LjVj!$n>BGe;Xoq9fVyh-0p!(D7SGsbi<(HOC3Z zM~-ujddEM)T80e_8yEIy*fU`(!ivM*3i~`fGQ3;(ZQ*x^KM?*xcux5C@DIZ;M|6p} zHR7I#nGsnLDkCi|M4YVwb!9h#;!9o+Q3rcXD`Z(7>)P}9$wUUav1$GGF&UEDq0 z$?kFP2i%XipK}+xce>wq|E*ceW*wXLZI;&Tj%L%F&1v?NX2s2_ntjylV)JgzZ*JZf zV;tOTmi>3`DmxAbcaG)0u@3QpJzLSz;$E$7@VhNoXUmIYM2z5UVX+;>HWOP(5sFD{ zIkVl&X!PG*?~sHr$UBHsHFUTZn(^#K?2yadC%N}z6#nAAliYQ(4gThilZ|;AuMdY7 z*kJ(&-=S!%2Q|Z93MiN7s9AHx3a-ub-md3W{ zHy$~7=3|_}Tl|P4T+iji8TK96bNCo%-qd;q7j{F6h23iN_mvN-xAeVaa8unfrExZT$>r7MR_=U#uzTx33t?|y0H2(a1G-;xJnYbSlcVlYQ z{Lj!6{NcW1O~1Pa)bX4AtoJ9lnwDTK>%cR|pt*Mr_oHasC5L;EaIXpY6w2p*HQbwq zJ1aPF&3V+LG55wDNy&KmYd;;QudI{HJm2yJNxs zt+S0j@!h32MvQ;O|NPEoov|wq;s95Za4pHz_Y0#*<6ZXu?b&~S|NS>HR_ z*Rkzt+k6w3{&&j$zjtk;H~sta8>7p=;y1DD-(UYtzQ!{CvnTVvFY{lYtyf$9o2dJr zd;WJn)4qzS-?Y{K^$h;w7M_WX_}{kV{-;;|cXGb{%=oGX-#jP&`-t7>H{Zf*=iqr` zOb6`n@tUb}L^xVG20QKvYZBHbY;^e0i1>(`o!-a;O`10iYx)bf$L)2$)oe6d+0Acj zKC`*M`8#NHarBn6@tlk2Og!h|ISW4q2mfOO|3?EybvdTX5nYbwax|A?xg5#mta}j- z&bV{FowMznW#5d0GwhsSFU3)Yga3Vj|9fE{(j5QA|5HMngzqBoy#T%yz;^I*Tb(9o6~PGT&JaA74Eyp9qzc+k9$6I$7k+G!kG)sTX5Eba~7Pj z;Cuzw`*F1&*ZOg#AJ_SDl^@smaZhLNO|lxt8XVk}gnN>#$5DubGaa1g;4BB{I5@+> z`3=r)aBhP$8=TkRtOn;axJxtlXs&{O+zF8T0CMHvw{770+NylNgKutR`H$lL>&dueeeE$*Ym zU9`A|7I)C%{#o2Ti+g8r=Pd3`!u_(iTNd}qD#gKlvbI47?sdkU&bZGR$DBFhycaUL zC&_-CzMCI7`PlI@XwP zp74zm?(E8aUAe0(_jKisuH4U+ySZ}b&{ZgBHI6kn*5X))V?B;S92_Aj!ohht&dPC4 zj&pIGiQ_yRXW=*p#~C=Tr{ONR9OGauxG(Dgq&d%a7zgJmIZMeoO76r;zrZ?U9LzaR zzRev)8~uB!#-2Fx#BnE%I&sHP?heZN7|zCUE{0?1oQL6ljNA{DvoYL>k@GR!g^@Ed z+yj)ON*qn%j-TA`le;X=NBy|NBKKG1?uy)7kvl7LUq$Y!$WbPaF>!>6<4YV};@A>L zmbi~6=Xp5G!#N(#@Nj;IvpXD>=gbaA2OAe^EsT&;apA`4(^V) z9S3(tUbvS=-=Sp;hq!J0*|W)ZAebd@!Wu2{3^iZx%oV$Et;v-*lPcm8i%lY3HfM@sHT z$=xWq7bSP1&NbVNNy&}0sBzK79{*VJu!oT`topyn2 z^hrLm=#zEu$-`Ho(Ro<$JgkV_D8Tbf9y`c9mu<{68^zw z^mn&oxJTB%e-8iWZ5Xy)Dp6h)WY*x|j$a8^q<`PD@w~k8-)rzcf5!2-MvXc^i?gu7 zIYgRsh&1OAY0e>DpTm7|4)?@AV1u*p-?Q-Fv+&=u@ZYoW-?Q-Fv+&<@hyv#j1H|kH?QthdR{Z`<|u$Esr08N6dTT z;Ofr*H+bYz8}Az7U>mg!qG1W5A^yi94(?aO-D>l|X{L5hdO@84=nhvKdo`)MYO`c^@C?%=)-Hhd074DbTW z#{X}{M^|v}2>;g`t-h~+px<}=V4VLy{K2!?z|LR)H0sz;*)RunW=lXn4Zpx&^O18R z&ZD+#|L zSH}O8!hcojYNGI8XnNxQ#Qze(e{&mv-Ag-RC(&W}Za6;OvAbj@ay)=N$WpP#*i_`2 zfzK`Yuh_HAt=Ro*KH5dkVx{(NSnakDS1!V5DAv5K#4eqy4Bqp>|8}o16R|@10RDgW zA*@`Phcy?qSo3`n>kPb@Hx6O7_b2!S%%|ovtoC-`IqQbTZJ}>G{$Cfh><%6H-^=-b z7E++eQ0R6K%1+08<%5vF5>h_EiUkM$4#SK~bJWp;r%fl+vnT47g#Z1}4?V9m)Nml` z$Qq6?Be6^6XslBok2+38O|qbs7c0>H&}AX&u^6lNa!)ozDyf=n+J>I6;i1&s{%x1I2Y&E3@Z+75~g>uw+*4v9q?6Y$SR@aak53pZvH}td@QH*?)*D*-ngHM#K+zPvA-iun% z)-KuFg|#8~!FIHGbKO;6**y#Q0{#o7tWUc;WOs+`9wxho!|sLfn3rH{r)(W1TRUZI zr`cw9LKZFVlC5244?a;?XSx@q(c;dlEZ#~M50}NS!J3ZOp%v}kLUwN|yJKVwpO&(F zQ`y}uySJ3xTgvXuuh^Y;Hlq*MW$^#nKKiY79Ua&@Ky+*XGmKT={N;c*L`<4AZH|c% z#?O9g=4{hN$p7{H%{mXJ`4=$^HT7KitHYJwO>njyN}Fe9nja(G{Hiq87r+v_I3mnA z9FFKgvnEfPGh^`7*)yk2nt#)X$&XBZ>PddlxxS^TzsXU5b6EY&;q`4J>^}BG9U@Nt zZK%_F`I<|uu6?<~jeS~~)(%G#wS^t$5Yd%CMFITJag)h zr)JF<_2lF!lV(nuHD~IiX^%{O^wGhSr_Gr(bJmPUo_cuB?5Cc5a?+fsGp5g)^vKkQ zCrz6={n4q@r_Px_b^4siQ)W$?Hfbg@K0W!zPfeOOea0O9o;G>*Y$c{p^U1RsPtN$s zv!+gYY)<@yZVykmF}`MCn%^7vuX)ZOf*LgFwuG4- z#*~F2#K4E)v}TtBVFF%^P-}i=5FpInFgUFFjWI78^R_W>ILy1oyk*Qg24M>Sxf{-F z-V1}fn!{lT(ePRG2V<%o=D0B*8U%4fcKkDRb0W;3!LiQZ@qu`6UNDIH2zI#RFys%v zHU}K$BV#5TJRb}mygmnROoJ+C8}l>cz?m7w{L&yE;D#|z8QjS5I5XFnnGQ3@nE4L# zgu^^+9LTfWIG&3@Y;^qE1p_;lI?M$)A0Bc85iW`yX^t_DGmdj%u~>%mtFTRBC1G2_ zc7(kd-YWc-@aMz7i0BkC56g}IWkY3HGIXJ7=cc`y_HR1BX&IIX^>Pn)k9N;;Z*qs+pSv$LYu&7KvjNQ>YxZoj zh0XGtZEp5@v%fbFYu*Xd7KP0>H?L|D-lAoTDJ`C9;cKzE#fP3&p7x&co++MRc=meg zuL-}V#Wk7NJao;bYj#{y+wzWo(PGPPPfP`K)bp+nd@x-gb4{P}|Si zUTpi1c5U0mw(H#Prgo#-J=bn^yP|f#Z})1uH`^V*uH|)euKVeA{_CE*ZuNB~*IkI2 z6!TcjjF@>b8)6Q`eAfQX_D{5*)qZ|^U;EtlE84GZzp?%P4*fbz?J%>$ybjqNayk@t zIB+iV!&g(~AKj-?NU%&SHeb>Kr{iWFW*dN8NjolpkTI})IPh%V6GUF!2O^sU= zwvU76{+*_DI(~!uhS(eKyJ5}^i*DF+!`>SzZ+QKo=ht8Ax!&=~2J8I| z;q{Nc?!Me)m)knOKH7f&QcvssNY4VxUH|Dk$Id6*v)vo4snJE&%T8;q9d6Hc71=L4 zJ@%we+}8e5x3#)Wq1*G;nz>f`ajWlfD}A1$sQzMjsZ|{PY?{+*a?EYT<7g7O{J7I@ z61l;2DubNqXqpf(Q?f6JfvHxWKfs>A1R=Cx6x7Ga#xAn2z zB>JMu8k}?Lq!k@wxo+QUC#;TraEa6Usq3S_)(J26Yx0*!tKF@q?bMvui}%I5?3BQ* z{p=Poueo1c;Ix0{>Xh@yZr`~k@sW1tld0C=1+nq2%K9HfTh5;rKbjsh;K9s9+i2h*fu24>_J=?YL1!vdgvx@h|c&sfix}$#j+WqdRd9O`$M{Rqp{_%yq+@3%B zj%Uuj6mu--p7psk;q$0z^{=B)@ zJn~M_tA~CYXFX&;szPXJ@%modQOcUzt6jAdyEJ4 zI7{6g`;%?%t$zyNYVC-&Q#RQtf3{O%{}7pMrA)O_tdtll<@Z*~DJv!RmdLJl%42ql zof4yKtd@TYw`SrhE9EgOrK@tBvQvJq9Cpf7J0)2q{n<*{q>?=L5UYM}eT#XH74@;< z)(-1T^t-!mwA@y=&9kcQj`zH1-Sijti}p=+$I98aS=}agv)u=Obli$|dhW3L%(aH> za9cC1*yuCX5NqIZd!RM6k3G~Lm}U)(^!(Dj%DrH(JAAg=^M?C;8*9a-3Fyw-D}Lwp z6#GusSDrrLw*Gb@+s;Fp zuXuSw+~qQtXWH|p>vvM(o(tjiC2dY$?&kVc-Ij{F-&tW>+g;fF`n#XUSl9KgvwPdg z$$jlUvF9T%zPRJHPuicXyf1a+j0bL=5!Y$5(@scFzs>F$li~6#@SV1vJ8nIDx>fzS z3q3AGowdqQjeZwCv^*Cwcip-=F6#3`1-r`s7-Kc>eBAD3_wUu$jzg(`%-d7`S^KjG z(g)s={&?TGThjg*8FlvKos)09{hsliI*%!{n)>2kq&qJRv--t)@^FKWI9)$to}>Pn zFT?BSwy{Qhdiuut5q3+Lef;w6&aT!M_6V1?KElq8v~sOePR~5waVv73HS?I&|Foli z3{0{OdL@7QvDMA$e&ccb#&P4Go%C4TZ>=9Yt)r(e_lO*Id9d^I$ns^S`#x?TdTUJA zu6K`3?E27KdjfHtBYXa#t95&+U%Ou74s!H>mRV{;FD ze4+j6()&lf7ikhGNy4|6@J+z12*?!4>{IjmsptzqOk3Q@ElRM56e<|{`!|H5> zg8BJ?)-7ZnvBFskryUr(?T6eebx=G4{1z4zT*i9*^ie zX8Rxh5Zv*_=WpD9%Pk`x=n`k0is(IN`_ZGp?H_#8xBY>KnT21X|)wC^`*$LoGF6!n{vqpS|?t)b_w8?2YC z$Gd%Q4~koq7X2spS=1A8*jgjsuWu9avfIAF`i+%uxgC|E@LKzZf$n4VKaYOdy~k~} zi9YMH&sf)4XRLP4v#!g->=Dj17jCYZ)mGE$T(>ndy8804+g$a-tnrO053YJI`Z%&$ zBb+z8tU9}$U1wj1q-Pkz|5_M$tkw1qqV9_iy0_sW@H>~)#(Hp})i=g!()*;{&F-0; zVt0)F0?t@gexm*1y$=qFvpx0?SKD{RJmK{cV4U{$N{id0|}Uiqh$Cx3|LTKC6H-gXX2v#+tbZoU#+gkPgoIgc6e^|kO%Kej_eXbqb9m!@mIqJ19&w!_ZAaFiA$HsL!`;?(9}MWWEDjH|Zg`3`vBwW}$9gRD z{F(Zf&p0X%x-Z>Q;r{!CH{Eu48+*uYiS|vg_HFeqTen48H&rLvDBd4%k8ykE;Ko04 z+Ik|i(QVz@#yT>=effo5ZjaT`7qWg_Z7mKtj=JmbMJNk{9_^3p{b*xc9(>?L{WbR9 z+pP3RyZypZ{p@a3sMX=2eOAVO7HPG%!>s1^#B@B??HjF`v7U<%^4>XX-#iD*R^Q|a z_ocYkp_skzauaLcDR^0Z6Z<`v=W_Ekb1zMpH{I=dz!$pI3@wEV)^FflYan{iyYPy* z`ssG~<>@Zl{lFuA`aHPBa>uStnCG(lyxZFv6zkdkxVs!>w`^nYuJ31Uv35D_wvlkz zzc{VGK*~JV1>E6&`;60b*YlxEj(Hp1^#yH0_FpbJ>~Pk3^QZ3m$_wF_K7euqUG`&_ zx7m-?Z*$rM|32YD{l!S@nadZ^lC_?#zv#St(dD^_?5!?@=itg7zEJ(nP!G3fGiti} zq_y#+qq59hf1&=_XsdIN8oOt#T?tPJw^m#CMp`}pRBd&JFSNON`~%%$?V;92YiQ(W zuibxhoM*fH(xbOT!+zbJhu_)!XRAfbE$(+Jm#*IxTb~W^V#EQ z%7@n{x3LQGY_^+6+A}Zz$^LQupPY8HNUIPJ>iUGo-7o&_(eO)a+gJ}@$&+;XsNJjn zsMB^u+P#oYWV(5z_3-cD{gKv<^?R)wFYk4FKE$P$x`kir-Ns&OHCVs0z7X+a?3MNy zYbDdx3-%XwzTM!okp7YNTkA*mZ*`qj@`O9X?V0|3sJ$h>~5`)`lhdAD1A|9;T!d%MeHkFOsv z*Q#V=r$u;uhx(q;b~mf?FK)!dO6Mn$pIDR5*^|&pzSeGi*ztV*%<%e|cI)WFmuC)g zc{Zb=U4Qz=?m6zY?x^h#xuc%$h~GE4J#V`|b4Tr7?si2z^Y;m#pL0d+{^5rGk9^dA z_Py?5zH@HtW!xu8)t_F7o9jN~w)({4f{hof(hE_$tz2L9ANOr}w>U29nVz3tnvh_Z zxZa+A&+k*)+j0H6**}Pj+HL>fbT=z5w(wr}^X_hF7p^$sK4x8e%<%~xR1@0N-)%KJ zW;YA|#(i(f?I$na?efgEA39|9I%Zuw=9?FEQ_68GcXjlM%HO|T92f8Ent6Y}AKbs? z@PgQG2wGJGt?pL8(5yZhfaW$cVt>$eHG7p+p)8n@?HZY#`kKIVR{{>%05 zefr~b_rqJ=Z%3ZoRUV3~e=p(kd#;J|pL#U*u}G`arN`I1@4+S0=6&w2|7{z4y7iXz zi1m=uMkD-}_H)kqkt(^n>&$8E7TfFeAeNx!iLbj87#hYx9pAiGH56 zgIK$UCqCJ=@67{^f4Wpj-@K*nsOsN?;q&;7dM$JJc6&DOf9i?$vya1Yl~$X$sPhjX@H79{EcmXlV3%CDG@;xLejCY+1G#oK+Oa=4 zzYuk~5cR&5*v9%LTDtq*IT^d>m(Hk?v#zN37iG;`^lbY(?w^`CGcKycYKE$~JU9Ce z)yE#X8;+6pvt#wnV^-okxyFK@MXxDY^s6;-hh5{Ib58ilvh8u!+wv7FF~LrRv)FIA zI&OZ#GO?bKzPC`#XW-Ba@O!k|Gx7s>{mO8wu8oyZzwD6PzVULJ-Mv1|X@^Bx8JCwi zJ=VMr+?RHTU%Ix9^+V-ocRAj6*2g=0MA}XyuS1fVe~8RhL?j+A&8@J@&7Gb!l>CeE z`kXe10Bg`_c)@AABhmD@!@kD4!)Z5-wC=QDu*cYIoEFm8StG1=Xb*Wt?sGd{gi3=@ z&xGfX)th5KcYEG(fAOc*rxXw#a6K@q_|-V;S=au@caB&R`{v@8ckPS8pJj!`+heyM zyDReM@ne$WY@h3qSu-Dwed_kLky{IAOy-Hi*X}tR>vNFc*448 zkM;8DRv%d5k9;0gTA%5Qesxps+TX{0=z3=MX6{vXF}dwK1v zZ^x|r`I?2RW3AbHY+q#5_MhyYyR$N;=C$3Y&TRituNTpdv~EbMMcX|wvA^AJ%-RX7 zCd8&?d=VK{x@6w3=gx`w!Sp**r^OZxa7NAf-AAvySk^wO^jO`bciN+o+~K(O+vARE zVz^aqb%@@xV`b4Ran-lKTKa=(XK~5O9eZNRf3jnGNo-B^q*rhIfwOqZ{VOxtXWajj z>5syQz$z%9f*_)zhzf29 zRHL}GxZzTjp23T6zcb*s{Pq2SoH&_GX71c`?z0?IWVC1od6(7HTr9hL_u^PrSMRZd zaBal3*sADFk=zam;||168fye`PDRY=jq+$CK(gG9V{LgB$SPSNR4UIQxe2$~_<@rx zbHYbv#p8^T`#UxD7m&w_EzhjhV(D!>c=G}YXn?2&uLgakTmj+YouI?RGfm9r2{(Pu zqV&^-3u#A|l3tTjX61#N^iTW8%?=oC7@0NaR)`6L?6~5{J>h-^zsO*RKH&!l^e?;l ztSGj?FWsd7qc-)o;!=anN^wr?Z10sOHt{(Zyld(HTti+)`uRi?xcB4oqEjPh7_4mN z5A`Z&wVtSi;7{kbx;Eyfq z#==+_V1y;oRSolI0(=hc$nllvjXym5oQ*`LuS9QY6L2E5K6|Z78qWK!42|$Jj+=Y3 zwl?d;rHcpV1|~|Ce1(4{?yK<}&IG2tG6FOvE7k^*u7;T9_Sf2GJcE#D`aJM~B=Prx z^pbs&J~lWpcKZ@jE&s#zpK?kKFj@H1_X0AVuYAY%F+JhWZ#um1qVaOZLcfK}S4{dz z>W3nc`iJ029tM5hfRf2?O$V-up5ce`Gxr_5vPml0l(}JVa?;lJvxQ+nUPJJ++ub1` zt6|=o1dOap0>Nxuk8*}ZC4ci+Ek{F)2wR&x2ErRQQm{%TKf|2TJJ}%T@BPjOoTXe1`?^1}J81XdF?>KHCl-u&d(k7W0VcUw{<@5S~hNkWQAyk?x#Bca<<4O}A{Is%hP2!rQ zt%l=5+Va%!&C1q{q@8;X8z%oOMtmPX&*WEK#2?ufA0b)UHqtVcY-prn89O`{0Z*zt z`XUUxsM=Ky1IpDfNFFUdJ$L2z-zQwL?>)hD$dGfMPo#?)zp%`Lf{e_fqC+85r!ENb zldOiWvj8ze9}D!wObJ)U#QHpe9pH{&rbX)M>xgQJBK5F7_(3b>_)@rVNts-|E7edd z$BU&bR#>0A<6vRR)qP)G-kX_o*>Go4k$sORBzKMP-6Y742A9+jx9c*{#_i2h9+(LddbSe`(F{Lq7pDzNf0Xw zvM%q%1s+#0OAr#Q23RCS{hGGoq|qw0kTl+|Qo$?>*jUu^7Q}=d*m;4q8sx@Wu~v88 zpq12g%F=inY(Cyb_8W_|{Vl{|MYd(`1uA%Tot!$)1@TjTW)b#WPBz2Qa!jo0a{OFk z)g6*onLwdA!pHI!U)Q1E-z+yW!M1%iV$r zHXWu;#Cr5U6A{+_fHM)g{GgD$-R6c8=x&BDW5BH(+00G+ILMnz&au2XSQFNjLZZ3y z5_B&o5LXEfINbmJvKUC@kJhCuPS}70UyxG1@2j%CS<1jqEVA$Ugrx1xH=fAAfyY|E zTpFtk{DPK&2V@KQsh^kLj=7_ZK0=Y^@rT-*`VYmJ^4WL~J`Tm3@S%7wdCaos5Dymo zP~L;<+HGsR6PbOc{%7=OZe2xAiN z2AcY|b)?C>p6KOn#1UD){_hUBeNQp8EmmF$y$aS>^-bN#dySse<`-6!2b>--Ai#f= zNB)#rsaO*jec));o`WZj?~Rx{XK`eZWF>pAtE+r?Lt)@5dGmboVXYVWi0kTm9eWLBNGOyXizT(mHz2+GGBSi`*;E)tmAQ}eYx&2tS*Bkk5x4&O?aIl?56A38ukG7 ziCc@XgiOHI!BuFHCR*eQiMhgR-s|m^Q=EA zgZ;tDr-V77K!neIeQ@bje)^yHRbJtcmS0T}tL}1s7k*#(+89mVL_GArEY;i#Ir8lw zuE=L_dROBVVtc@;$WwAfS3?aC#Chb_`RJM1rlwZ7rbp#{f8nM9Ri!H@N$(1oiE)56|R(z?Q+i=^o#RPAG(eb z!FMkZiS_xe2jfjmNeyz6P;>Ik-Mc3zyPEW|?*0n`4Ek)(KW7d$jG8lJpy}HUoIYx( zpwC{Nad`D_Mk_mVL*5%nnu7-h@R0Y~Bjc?sUsaB*_XM(DGqT!u&B?(j68uE znTZ*B0y8obGx9_d?*F*{0{MA8ncvX-mNr@$GwW;dyx!zlc-yv;pHc7)s^49I`1BCul+#F2$`*M5PkcD+i zNz>;j;FEfprOvO*N-Rr?&6RXGEq)9*kfl^eZ0$obpajJT`fsU;F$y0jZuw zW;?(Z)$d+)c8D{oH9aSmDgMaWvggmwjzyp)OdQ*@g|a8ayu~|+jJ66H?FnSGRlCV# z`Gu&jz&lulcd!EQU=`lM3cQ0=Nn{|&k#|J41P=_*UEX0&wvozPigZzgId4nKz@>%fk1YSOWWnTamUZ>x98-2zemCh$PLy0|Vg2 z+mmq#4<{rx->K6L;p<6wgFYWwa2#TYd~Xuis1fxiIuPWZ=y-ghpODz-??H|t@Q6{p zBI@nrKOO!L_n)ZjtlW6ys!g_7q~DAnP}~@WOP38{Bdl$R6|($oF(Ig=HY=T~n)x^h zWk<10VBXjdQi9@Zz2F+ojTLIrICfDEMi~^gAS!}Taszb_H*0ty+&I9M2_w3h}xDmPu@dQh!EP*MYqWT$>Iv zSDx8_TL+4&{V}0(xCI8?fNw0rD^as3YEUxnWaG&0q|+GxL1CtQ3p@%s8~w?W9&F(nq8cv*wiQif*tSP^ffpA z$LQz)<0vjKo8x{jO`llSWKgMb&krK5r?&DnrLw8uGo`XAo3DvcpJ3!3<}Owwa>u=e$Yn{p z(srlcIVnx#2hN)_Z-!yUvFHlrcrR`deLP%M5_2dfW;`b5P)y8tOw6H}nDI%<34S9# z6rBkiu^vFuPz*%5N0H)CJd?*fsBUUdWWWa01!EO8aQHnUk5u-u%u1I7N_)H7zQz_9QZ{I zE-*~A77+-x?x#E)CXLR?q_`5bKmF1- zilP5TG4$Uw8~U=r3tfFyi|o#!h28z{KNN&*)f5s+n4>&N?O+{9noZncMW8N%;SW_e zFcI%OsGgkp>oj1YkS|%>S`;#}GLk|P^BfIX5Zd){K!#Xp6*5i85h8ZU2 z;s7}{e5WHWwcuo!N1*rJuFQ=&xeVwu&*Umt9Ymw|KYyv=-zW>rLx-*}oCQzT>Q4mi zUk~tL!U8mS%l8*#-Zs7{7}{a}+W9}nNTjmnHsV~~sc^KW zU@WeU*I?sE^q{6NKTG5H7FDKfR?FLSh=rjfu^oWR5||PI?QrwAJft^SG5q6D>mLf& zEa;zJ!-dBRKF68(*doWrsFE8esO8U5gnRs<18SSOAI~u@RB>$lKx}Y91dlcp41v*= zFuhWhQ7dQHsvBdKs@dB83e$K`iM1bPdg|ey>SJUYcTd)uwZ85Nnv&DMKC6&=l@~6# zXavpmE6`dRVC^+4c+8ZLgSV%fD)Tba3XPYugS@4tZ0n2J$1fLTh7Zp(4VxYkG1WL` zR&FUW!G&1e8aG#~z|^3AiKXp*ZvJbjQI|qKYK7@bqNkZAuIEMwYjz)9y~~IfH?-!L znlq>`4n=(t=4eo4Z1IdAp_mSB#KW&RSXRSk@;RX6U{DRS;g7uHJo$NDIkwal=g~~2 z^>Tr_knPa6erq6aiZ~+$1QHN3)fG8dni@hV-%lS4Gblj zm`QNU8U~_>f`5u_#9WvR_{WvjitJyoAC$i@*nV_X-dQ!hR2~zO zDqi)oYA=2bSE1^H>XPcZ>bA3hM*Sbk9 zs!i$u^&EAKI$pg2zmjX8`mj1%eOmoM{ijCIwAC0jHkzKA0h;eLo|?&;S(!bD825M(( z!?iKmrP>wRjoNM6H0@FCNo|p~L|djU*WS?H*522?(7x6FqtogBrTa=}(%I^|V|QOa z?C%?*8>O453(_snMd6o&E!X|1TdUisOV(}IrRetR4(hUWIl4mK1zm-%Qg=^Rr+cCM zOZT^q>HZ;VBG@Qo5}{4zuH6UIVs?jw#G1n=5IQx{yfeo1oKN_5Ro)E)EEe94E=PY! z0qmxCyd$BCg&s`?5vfiyinOpTi6X{1)}62cPE5rdA0s$6t&(SsBXmCLL})WuMwkfB z4)2(=Kanh&p@c3be<+SzA##XiNFfS)5sLUSyECERDO~-s!qxBaWz3oD0~?sDH%ijT@Z*FPP+h+N;Ted zPl5(CStl-*W(6`0)6AXWCDCN^J%g3#f?0)3fm+{laxf&`if$SHcIY6C{b_#GOcO21A$hozUd)G{7bTb?Z^gpgy=esNCXe`JI&I~C zN!SpdV3;;@hPx?%r#RkB!&6nk39RrqToa!>#M|1^Rw#Ad@u}^v`V?~JR;Q-++KN*S zq<)W>2lMFHm+6bit7Y7$-oe5Ce&|4bF}?6@yb0S2dp;Qe6HOGmB-$XOh^CG1)~wkb z|C(p$h*NO@@%*%KQc-U~m{yN4&4Mtk9$}gVVOo6>GRZ-&z-=Cm@JYoBP{U?CN7VBF zc;eD;&05MVdf>(3n z2Nmz0nc97;#IpJNt!E1E8mV<%(>D+|jnE*%o(b$Q(8pFPam@ z=XVoS*-)6DApTKuxI9gwNOAwAkUYvorU}P({%AHY{c*N5Du}OG#XUNJk6OGt=Be!LB`lpZcahg>t?zc>;PIr? zof5k$&^IIo6Tt26E9gz95)}otn!d%$dngCTP-e&BST84Z_cani=x_pS79nsJ9o-1f z6{I%*ba_QUAxex>JVxdFw@8c!vySdLfD&WmoVkl5P-1*LL&>PhAhSHFnqngqW*UUi zZoEtU)L>U*pPA&($HyjkCQC2*7jEycf74MR!W6Axd7BMdzu0*6E1}1e)6$C#H@ylR zx=r+RF_rVDH>K@4V=T;w3J#815+F^Tc$TMs3uTGF?awhy*vCx?iSrv_=pfLl$2$Y3 zZbI*_&i5v>XZF5scn%5T!@``4=@Ny(N+VDKp}&y79J_2HGz{x|D%ST{tnV@A@Q7W? zL=vA1J?dWk$vqdC1M7ldfg(^~4$y_`DLn7f(*XlrR|j#5ic0&w!SiOh0xda|`v4gg z9UnH+Njir)ykGf$5#L!?vm603WRAPpWcU_#2`r z{{5BQOG`K2dFAH&92GV@J8$N?4SdPp-@MY9qY720N=uYYQ?bybmWw&oMrk=J=4EwL zF-K9VjHXA@ye=56R+WaDA-gp75-e4ObM!!bE1{S2NbA(lRrVE^5UL1xu?=*=K|S) zDEs*ywqId0%xl7SD?IM|maYe%Qby>r(-&$g(`I64LzO_0$ggjpg?nNG0~bb2m=u~? zzDgR!+gzUY+(gBkz59OqZSnq@!O>Ck=kHmRD_NyL3dcA;g{5#b=i*PME_~NAH|S3j zb`lyIUOL`L=PX~m*hEz&^9en+ea~JK{Wy)I{fN~r;^aTmD;$q{1aZK@m_74CVxuDv z2aF?DX2q$&BiPChQAweXn!Cs-^Ao8WY;bJ$6WY|}Bq@2QhE6${bZWSdhc84=K1PLW z)hS$*z`ezVqDtReD8Bk}8s7O4W@_6*(AQTioRHl|>6xKJp@&(Xj6+Ek%pQf^SO&Jt z#L_8iRXhpo%qEI<#ZhR7pI+VgMGUo|$A_tOEJ37gGa7KQZ=lwV(V4@-$(T?JYpkLih zw3Z}ObSQa>GF)3MjPe+YxPtPTFqw1UL)c`F^7HVqjz5B1Ftf_?E6Wz9PunU{Y=o_- z1`q5`rEg?GRYI|=)~}kXuyc!I3$iMY*8K8_$Qrr + - - - IN&OUT - - - + + + Start + + + + + + + + + + /* */ ) }; diff --git a/in-out/src/index.css b/in-out/src/index.css index a909113..d8e68ca 100644 --- a/in-out/src/index.css +++ b/in-out/src/index.css @@ -22,14 +22,43 @@ min-height: 100vh; } */ -.m-plus-rounded-1c-regular { - font-family: "M PLUS Rounded 1c", sans-serif; +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-Medium.otf') format('opentype'); font-weight: 400; font-style: normal; + font-display: swap; } -.m-plus-rounded-1c-extrabold { - font-family: "M PLUS Rounded 1c", sans-serif; +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-Bold.otf') format('opentype'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-ExtraBold.otf') format('opentype'); font-weight: 800; font-style: normal; + font-display: swap; } + +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-Black.otf') format('opentype'); + font-weight: 900; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Creato'; + src: url('./assets/fonts/creato/CreatoDisplay-BlackItalic.otf') format('opentype'); + font-weight: 900; + font-style: italic; + font-display: swap; +} + diff --git a/in-out/src/pages/Home/HomePage.tsx b/in-out/src/pages/Home/HomePage.tsx index d504016..90320c5 100644 --- a/in-out/src/pages/Home/HomePage.tsx +++ b/in-out/src/pages/Home/HomePage.tsx @@ -1,18 +1,16 @@ -// import React from "react"; -import { Stack, ThemeProvider,} from "@mui/material"; -import theme from "../../themes/theme"; -import LogoComp from "../../components/Landing/logo"; +import LogoComp from "../../components/Landing/Logo"; +import { Stack } from "@mui/material"; function HomePage() { return ( - - - - - + + + ) }; diff --git a/in-out/src/themes/colors.ts b/in-out/src/themes/colors.ts index afb4166..f40165b 100644 --- a/in-out/src/themes/colors.ts +++ b/in-out/src/themes/colors.ts @@ -2,7 +2,7 @@ const EColors = { MainColor: '#FCF4E7', StrokeColor: '#95C649', Accent1Color: '#EA982B', - Accent2Color: '#1C0221', + Accent2Color: '#06170E', } export default EColors; \ No newline at end of file diff --git a/in-out/src/themes/theme.tsx b/in-out/src/themes/theme.tsx index 3724766..adb95f0 100644 --- a/in-out/src/themes/theme.tsx +++ b/in-out/src/themes/theme.tsx @@ -8,7 +8,7 @@ const theme = createTheme({ } }, typography: { - fontFamily: '"M PLUS Rounded 1c", sans-serif', + fontFamily: ['"Creato", sans-serif'].join(','), }, components: { MuiButton: { @@ -16,7 +16,7 @@ const theme = createTheme({ root: { borderRadius: '80px', backgroundColor: colors.MainColor, - border: `3px solid ${colors.Accent1Color}`, + border: `5px solid ${colors.Accent1Color}`, padding: '8px 24px', } } From 80ed241957b590e91223e6033df126f6574da6e9 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Tue, 9 Dec 2025 01:31:26 +0200 Subject: [PATCH 07/34] rotunjit cate colturi s-a putut. ce nu? ghinion ask the designer! --- in-out/src/components/Landing/Logo.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx index 12a0b7c..fa9e5a8 100644 --- a/in-out/src/components/Landing/Logo.tsx +++ b/in-out/src/components/Landing/Logo.tsx @@ -22,7 +22,7 @@ function Logo() { IN&OUT From 136f025b5882a52875ead0eb12185e7c2c21ad4a Mon Sep 17 00:00:00 2001 From: Robert-Ioan Zglobiu Date: Tue, 9 Dec 2025 19:43:06 +0200 Subject: [PATCH 08/34] Added a radial-gradient background --- .DS_Store | Bin 0 -> 6148 bytes in-out/src/App.tsx | 21 ++++---- in-out/src/components/Landing/Background.tsx | 48 +++++++++++++++++++ in-out/src/index.css | 8 ++++ 4 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 .DS_Store create mode 100644 in-out/src/components/Landing/Background.tsx diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e4420e83fb17baa76bafef72d443c11645dd8f02 GIT binary patch literal 6148 zcmeHKPjAyO6n|brlQ1Dw2sAE$C9b7(owRALocP56z`C<&6QBVA4i-Y|I#z!WvQt@+ zHLbaU$Y_jYv>6=0QHlXVdOr@`idZg-F8l_8@!}59j^Ht$mT@gE$*bWI!AZ z(dF&yIE%!*D`r_Vm9c>`xUS>&8ykzo)=sC%cehWQe6ibUH~BWUPhIEsgGY}K`yY}t z6CdTGf#IwPC<8P-TGr?@=0*|9cnT|D}_u3 - + + {/* CONTAINERUL PRINCIPAL: Are poziÈ›ie relativă pentru stacking context. */} + + + {/* 1. FUNDALUL (Are zIndex: -1, deci merge în spate) */} + + + + {/* } /> */} - ) } -export default App +export default App; \ No newline at end of file diff --git a/in-out/src/components/Landing/Background.tsx b/in-out/src/components/Landing/Background.tsx new file mode 100644 index 0000000..29562bd --- /dev/null +++ b/in-out/src/components/Landing/Background.tsx @@ -0,0 +1,48 @@ +import Box from '@mui/material/Box'; +import { keyframes } from '@emotion/react'; + +const COLOR_ORANGE = '#FD9B08'; +const COLOR_GREEN = '#ABE158'; +const COLOR_WHITE = '#F8FFED'; + +const float = keyframes` + 0% { transform: scale(1.0) translate(0px, 0px); } + 50% { transform: scale(1.05) translate(20px, -20px); } /* Se miÈ™că puÈ›in */ + 100% { transform: scale(1.0) translate(0px, 0px); } +`; + +export default function CustomBackground() { + return ( + + ); +} \ No newline at end of file diff --git a/in-out/src/index.css b/in-out/src/index.css index d8e68ca..e27a95f 100644 --- a/in-out/src/index.css +++ b/in-out/src/index.css @@ -22,6 +22,14 @@ min-height: 100vh; } */ +html, body, #root { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + box-sizing: border-box; /* Recomandat pentru layout */ +} + @font-face { font-family: 'Creato'; src: url('./assets/fonts/creato/CreatoDisplay-Medium.otf') format('opentype'); From 066105c21f1d9fcd9bf545502d1c267ad53b7169 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Tue, 9 Dec 2025 20:17:31 +0200 Subject: [PATCH 09/34] fix --- in-out/src/App.tsx | 8 +- in-out/src/components/Landing/Background.tsx | 87 +++++++++++--------- in-out/src/components/Landing/Logo.tsx | 39 +++++---- in-out/src/themes/colors.ts | 8 +- in-out/src/themes/theme.tsx | 10 +-- 5 files changed, 81 insertions(+), 71 deletions(-) diff --git a/in-out/src/App.tsx b/in-out/src/App.tsx index 4e5b010..6352c33 100644 --- a/in-out/src/App.tsx +++ b/in-out/src/App.tsx @@ -12,14 +12,14 @@ function App() { return ( - - {/* CONTAINERUL PRINCIPAL: Are poziÈ›ie relativă pentru stacking context. */} + {/* + CONTAINERUL PRINCIPAL: Are poziÈ›ie relativă pentru stacking context. - {/* 1. FUNDALUL (Are zIndex: -1, deci merge în spate) */} + 1. FUNDALUL (Are zIndex: -1, deci merge în spate) - + */} {/* diff --git a/in-out/src/components/Landing/Background.tsx b/in-out/src/components/Landing/Background.tsx index 29562bd..6adc520 100644 --- a/in-out/src/components/Landing/Background.tsx +++ b/in-out/src/components/Landing/Background.tsx @@ -1,48 +1,53 @@ -import Box from '@mui/material/Box'; -import { keyframes } from '@emotion/react'; +import React from 'react'; -const COLOR_ORANGE = '#FD9B08'; -const COLOR_GREEN = '#ABE158'; -const COLOR_WHITE = '#F8FFED'; +import { Stack } from '@mui/material'; -const float = keyframes` - 0% { transform: scale(1.0) translate(0px, 0px); } - 50% { transform: scale(1.05) translate(20px, -20px); } /* Se miÈ™că puÈ›in */ - 100% { transform: scale(1.0) translate(0px, 0px); } -`; +// import { keyframes } from '@emotion/react'; +import colors from '../../themes/colors'; -export default function CustomBackground() { - return ( - = ({ children }) => { + return ( + + > + + {children} + ); -} \ No newline at end of file +}; + +export default CustomBackground; \ No newline at end of file diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx index fa9e5a8..0a1d94d 100644 --- a/in-out/src/components/Landing/Logo.tsx +++ b/in-out/src/components/Landing/Logo.tsx @@ -1,18 +1,22 @@ import React from 'react'; + import { Stack, Typography, Box, Button } from '@mui/material'; +import CustomBackground from './Background'; + import TrendingFlatRoundedIcon from '@mui/icons-material/TrendingFlatRounded'; + import theme from '../../themes/theme'; import colors from '../../themes/colors'; function Logo() { return ( - // <> - + // + IN&OUT + - - - /* */ + + + // ) }; diff --git a/in-out/src/themes/colors.ts b/in-out/src/themes/colors.ts index f40165b..6b8ad4a 100644 --- a/in-out/src/themes/colors.ts +++ b/in-out/src/themes/colors.ts @@ -1,8 +1,8 @@ const EColors = { - MainColor: '#FCF4E7', - StrokeColor: '#95C649', - Accent1Color: '#EA982B', - Accent2Color: '#06170E', + whiteColor: '#F8FFED', + greenColor: '#ABE158', + orangeColor: '#FD9B08', + purpleColor: '#06170E', } export default EColors; \ No newline at end of file diff --git a/in-out/src/themes/theme.tsx b/in-out/src/themes/theme.tsx index adb95f0..536dd6a 100644 --- a/in-out/src/themes/theme.tsx +++ b/in-out/src/themes/theme.tsx @@ -4,7 +4,7 @@ import colors from './colors'; const theme = createTheme({ palette: { primary: { - main: colors.MainColor + main: colors.whiteColor, } }, typography: { @@ -15,8 +15,8 @@ const theme = createTheme({ styleOverrides: { root: { borderRadius: '80px', - backgroundColor: colors.MainColor, - border: `5px solid ${colors.Accent1Color}`, + backgroundColor: colors.whiteColor, + border: `5px solid ${colors.orangeColor}`, padding: '8px 24px', } } @@ -24,14 +24,14 @@ const theme = createTheme({ MuiGrid:{ styleOverrides: { root: { - backgroundColor: colors.MainColor, + backgroundColor: colors.whiteColor, } } }, MuiStack:{ styleOverrides: { root: { - backgroundColor: colors.MainColor, + backgroundColor: colors.whiteColor, } } } From 5d65d2f2873884a7ee413967b0df048fbb7012b9 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Tue, 9 Dec 2025 22:31:55 +0200 Subject: [PATCH 10/34] fix eleements --- in-out/public/vite.svg | 1 - in-out/src/assets/react.svg | 1 - in-out/src/components/Landing/Background.tsx | 25 +-- in-out/src/components/Landing/Logo.tsx | 152 ++++++++++++------- in-out/src/index.css | 7 +- in-out/src/pages/Home/HomePage.tsx | 9 +- in-out/src/themes/theme.tsx | 5 +- 7 files changed, 117 insertions(+), 83 deletions(-) delete mode 100644 in-out/public/vite.svg delete mode 100644 in-out/src/assets/react.svg diff --git a/in-out/public/vite.svg b/in-out/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/in-out/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/in-out/src/assets/react.svg b/in-out/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/in-out/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/in-out/src/components/Landing/Background.tsx b/in-out/src/components/Landing/Background.tsx index 6adc520..7badf8c 100644 --- a/in-out/src/components/Landing/Background.tsx +++ b/in-out/src/components/Landing/Background.tsx @@ -28,24 +28,29 @@ const CustomBackground: React.FC<{ children: React.ReactNode }> = ({ children }) sx={{ position: 'absolute', inset: 0, - zIndex: 0, + zIndex: -1, pointerEvents: 'none', // radial gradient background backgroundImage: `radial-gradient( circle at 5% 5%, - ${colors.whiteColor} 9%, - ${colors.greenColor} 24%, - ${colors.whiteColor} 35%, - ${colors.whiteColor} 49%, - ${colors.orangeColor} 61%, - ${colors.greenColor} 78%, - ${colors.whiteColor} 89% + ${colors.greenColor} 10%, + ${colors.orangeColor} 25%, + ${colors.whiteColor} 36%, + ${colors.orangeColor} 50%, + ${colors.greenColor} 99%, + ${colors.whiteColor} 99% )`, transform: 'scale(1.1)', transformOrigin: 'center center', }} - /> - {children} + /> + + {children} + ); }; diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx index 0a1d94d..d94b771 100644 --- a/in-out/src/components/Landing/Logo.tsx +++ b/in-out/src/components/Landing/Logo.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { Stack, Typography, Box, Button } from '@mui/material'; +import { Stack, Typography, Box, Button, Grid } from '@mui/material'; import CustomBackground from './Background'; import TrendingFlatRoundedIcon from '@mui/icons-material/TrendingFlatRounded'; @@ -17,73 +17,109 @@ function Logo() { // width: '100vw', // }}> - - - - IN&OUT - - - - - + + + + + + + simply add your preffered product choices and we’ll create the fastest route of the store + + + + - + // ) }; diff --git a/in-out/src/index.css b/in-out/src/index.css index e27a95f..ca0df9c 100644 --- a/in-out/src/index.css +++ b/in-out/src/index.css @@ -22,12 +22,14 @@ min-height: 100vh; } */ + html, body, #root { margin: 0; padding: 0; width: 100%; height: 100%; - box-sizing: border-box; /* Recomandat pentru layout */ + box-sizing: border-box; + /*Recomandat pentru layout */ } @font-face { @@ -68,5 +70,4 @@ html, body, #root { font-weight: 900; font-style: italic; font-display: swap; -} - +} \ No newline at end of file diff --git a/in-out/src/pages/Home/HomePage.tsx b/in-out/src/pages/Home/HomePage.tsx index 90320c5..9c4bf10 100644 --- a/in-out/src/pages/Home/HomePage.tsx +++ b/in-out/src/pages/Home/HomePage.tsx @@ -3,14 +3,7 @@ import { Stack } from "@mui/material"; function HomePage() { return ( - - - + ) }; diff --git a/in-out/src/themes/theme.tsx b/in-out/src/themes/theme.tsx index 536dd6a..6d4921e 100644 --- a/in-out/src/themes/theme.tsx +++ b/in-out/src/themes/theme.tsx @@ -9,6 +9,7 @@ const theme = createTheme({ }, typography: { fontFamily: ['"Creato", sans-serif'].join(','), + fontSize: 16, }, components: { MuiButton: { @@ -24,14 +25,14 @@ const theme = createTheme({ MuiGrid:{ styleOverrides: { root: { - backgroundColor: colors.whiteColor, + // backgroundColor: colors.whiteColor, } } }, MuiStack:{ styleOverrides: { root: { - backgroundColor: colors.whiteColor, + // backgroundColor: colors.whiteColor, } } } From 06e601f4519546fc23e8a1fc2b0d6a9fccd19698 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Tue, 9 Dec 2025 22:47:03 +0200 Subject: [PATCH 11/34] font landing --- in-out/src/components/Landing/Logo.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx index d94b771..1f377e1 100644 --- a/in-out/src/components/Landing/Logo.tsx +++ b/in-out/src/components/Landing/Logo.tsx @@ -35,6 +35,7 @@ function Logo() { the only web application that makes shopping easier by reducing the time spent searching for the right isle @@ -51,6 +52,7 @@ function Logo() { simply add your preffered product choices and we’ll create the fastest route of the store From bd319932c300d3ee2acf74e9b99388aeb7ad26b1 Mon Sep 17 00:00:00 2001 From: Robert-Ioan Zglobiu Date: Tue, 9 Dec 2025 23:34:06 +0200 Subject: [PATCH 12/34] Added Drop Shadow to the Home Elements --- in-out/package-lock.json | 34 ++++++++++++-------------- in-out/src/components/Landing/Logo.tsx | 20 ++++++++++----- in-out/src/themes/colors.ts | 1 + 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/in-out/package-lock.json b/in-out/package-lock.json index ad66a82..e5f73ba 100644 --- a/in-out/package-lock.json +++ b/in-out/package-lock.json @@ -61,6 +61,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -376,6 +377,7 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -419,6 +421,7 @@ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -1202,6 +1205,7 @@ "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.6.tgz", "integrity": "sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.28.4", "@mui/core-downloads-tracker": "^7.3.6", @@ -1784,6 +1788,7 @@ "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -1805,6 +1810,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1873,6 +1879,7 @@ "integrity": "sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.49.0", "@typescript-eslint/types": "8.49.0", @@ -2124,6 +2131,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2244,6 +2252,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2527,6 +2536,7 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -3336,6 +3346,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -3414,6 +3425,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz", "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3423,6 +3435,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz", "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -3728,6 +3741,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3814,6 +3828,7 @@ "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -3916,24 +3931,6 @@ "dev": true, "license": "ISC" }, - "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -3953,6 +3950,7 @@ "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx index 1f377e1..12e5ac5 100644 --- a/in-out/src/components/Landing/Logo.tsx +++ b/in-out/src/components/Landing/Logo.tsx @@ -36,9 +36,13 @@ function Logo() { color: colors.whiteColor, fontSize: '40px', fontFamily: '"Creato", sans-serif', + lineHeight: "41px", + filter: ` + drop-shadow(0px 1.5px 0.7px ${colors.blackColor}) + ` // WebkitTextStroke: `0.06rem ${colors.orangeColor}`, }}> - the only web application that makes shopping easier by reducing the time spent searching for the right isle + the only web application that makes shopping easier by reducing the time spent searching for the right isle @@ -57,10 +61,7 @@ function Logo() { color: theme.palette.primary.main, WebkitTextStroke: `0.23rem ${colors.greenColor}`, filter: ` - drop-shadow(0px 0px 0px ${colors.greenColor}) - drop-shadow(1px 0px 0px ${colors.greenColor}) - drop-shadow(-1px 0px 0px ${colors.greenColor}) - drop-shadow(0px -0px 0px ${colors.greenColor}) + drop-shadow(0px 1.5px 1.25px ${colors.blackColor}) ` }}> IN&OUT @@ -73,6 +74,9 @@ function Logo() { display: 'flex', alignItems: 'center', justifyContent: 'center', + filter: ` + drop-shadow(0px 1.5px 0.7px ${colors.blackColor}) + ` }}> simply add your preffered product choices and we’ll create the fastest route of the store diff --git a/in-out/src/themes/colors.ts b/in-out/src/themes/colors.ts index 6b8ad4a..ec7a236 100644 --- a/in-out/src/themes/colors.ts +++ b/in-out/src/themes/colors.ts @@ -3,6 +3,7 @@ const EColors = { greenColor: '#ABE158', orangeColor: '#FD9B08', purpleColor: '#06170E', + blackColor: '#747474', } export default EColors; \ No newline at end of file From a3280300492b4202744f4b12ee9f9a3bb9277bc7 Mon Sep 17 00:00:00 2001 From: Robert-Ioan Zglobiu Date: Wed, 10 Dec 2025 01:12:27 +0200 Subject: [PATCH 13/34] Update Texte Copywriting --- in-out/src/components/Landing/Logo.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx index 12e5ac5..e895865 100644 --- a/in-out/src/components/Landing/Logo.tsx +++ b/in-out/src/components/Landing/Logo.tsx @@ -42,7 +42,7 @@ function Logo() { ` // WebkitTextStroke: `0.06rem ${colors.orangeColor}`, }}> - the only web application that makes shopping easier by reducing the time spent searching for the right isle + we've made shopping easy by providing the fastest route for the products that you want @@ -125,7 +125,7 @@ function Logo() { ` // WebkitTextStroke: `0.06rem ${colors.orangeColor}`, }}> - simply add your preffered product choices and we’ll create the fastest route of the store + after a long day at work, get in and out of the store as quickly as possible with everything you need From ab03a9ab41b301fde00216c43ed36b74c083ff96 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 10 Dec 2025 21:08:21 +0200 Subject: [PATCH 14/34] Retouched the buttons and title for the home page It's essential to not create everything bulky! --- in-out/src/components/Landing/Logo.tsx | 9 +++++---- in-out/src/themes/theme.tsx | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/in-out/src/components/Landing/Logo.tsx b/in-out/src/components/Landing/Logo.tsx index e895865..5996568 100644 --- a/in-out/src/components/Landing/Logo.tsx +++ b/in-out/src/components/Landing/Logo.tsx @@ -59,17 +59,17 @@ function Logo() { fontFamily: '"Creato", sans-serif', fontWeight: 800, color: theme.palette.primary.main, - WebkitTextStroke: `0.23rem ${colors.greenColor}`, + WebkitTextStroke: `0.12rem ${colors.greenColor}`, filter: ` drop-shadow(0px 1.5px 1.25px ${colors.blackColor}) ` }}> IN&OUT - + + + + ) +}; + +export default MenuBar; \ No newline at end of file diff --git a/src/components/Landing/Menu/MenuSquare.tsx b/src/components/Landing/Menu/MenuSquare.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Landing/Menu/link.ts b/src/components/Landing/Menu/link.ts new file mode 100644 index 0000000..2b0909a --- /dev/null +++ b/src/components/Landing/Menu/link.ts @@ -0,0 +1,25 @@ +interface LinkType{ + title: string; + link: string; +} + +const Links: LinkType[] = [ + { + title: "Home", + link: "/" + }, + { + title: "Account", + link: "/account" + }, + { + title: "Documentation", + link: `url(${"https://github.com/Vldddddd1/InAndOut"})` + }, + { + title: "FAQ", + link: "/faq" + } +] + +export default Links; \ No newline at end of file From 8b9d97b57ea3ef14262df3df05c75d1a1cb60639 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Fri, 12 Dec 2025 16:42:48 +0200 Subject: [PATCH 20/34] menubar wip mi a mancat zilele animatia --- src/components/Landing/Logo.tsx | 11 ++ src/components/Landing/Menu/MenuBar.tsx | 183 +++++++++++++++++++++--- 2 files changed, 178 insertions(+), 16 deletions(-) diff --git a/src/components/Landing/Logo.tsx b/src/components/Landing/Logo.tsx index 4cd07bf..9a01b7a 100644 --- a/src/components/Landing/Logo.tsx +++ b/src/components/Landing/Logo.tsx @@ -10,6 +10,8 @@ import TitleImage from '../../assets/inandoutTITLE.png'; import colors from '../../themes/colors'; import CarouselElement from './Carousel/CarouselFinal'; +import MenuBar from './Menu/MenuBar'; + function Logo() { return ( @@ -133,6 +135,15 @@ function Logo() { + {/* WIP */} + + + ); }; diff --git a/src/components/Landing/Menu/MenuBar.tsx b/src/components/Landing/Menu/MenuBar.tsx index f334331..f2f861b 100644 --- a/src/components/Landing/Menu/MenuBar.tsx +++ b/src/components/Landing/Menu/MenuBar.tsx @@ -1,24 +1,175 @@ -import { Stack, Grid, Typography, Button} from '@mui/material'; +import { Box, Stack, Grid, Typography, Button } from '@mui/material'; +import { useState } from 'react'; +import { motion } from 'framer-motion'; +import MenuIcon from '@mui/icons-material/Menu'; +import colors from '../../../themes/colors'; interface MenuBarProps { - title: string; - link: string; + title?: string; + link?: string; } -function MenuBar({ title, link }: MenuBarProps) { - return( - - - - - - ) +function MenuBar() { + const [IsOpen, SetIsOpen] = useState(0); + + + return ( + + {!IsOpen ? ( + + SetIsOpen(1)} + sx={{ + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: '8px', + }} + > + + Menu + + + + + ) : ( + + SetIsOpen(0)} + sx={{ + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: '8px', + }} + > + + Menu + + + + + + FAQ + + {/* */} + + + + Docs + + {/* */} + + + + GitHub + + {/* */} + + + )} + + ); }; export default MenuBar; \ No newline at end of file From 7977be7d5b8c562a4e8d9814b59924f8285d9c39 Mon Sep 17 00:00:00 2001 From: Vldddddd1 Date: Fri, 12 Dec 2025 18:48:33 +0200 Subject: [PATCH 21/34] renamed pages incercare routing wip rau todo: cauta screens/createNativeStackNavigator si schimba din state uri in constanta cu paginile. (ca sa poti lucra si pt user/admin state). n o sa lucram doar in root, o sa creem pagini separate prin care trecem cu navigatorul in rest nj momentan vedem yapping yapping --- src/App.tsx | 9 +++-- src/components/Choice/ChoicePage.tsx | 13 +++++++ .../Landing/{Logo.tsx => LandingPage.tsx} | 34 +++++++++---------- 3 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 src/components/Choice/ChoicePage.tsx rename src/components/Landing/{Logo.tsx => LandingPage.tsx} (91%) diff --git a/src/App.tsx b/src/App.tsx index 706b80e..d7c5f75 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,16 @@ -import './App.css' import { ThemeProvider } from '@mui/material/styles' import { CssBaseline, Box } from '@mui/material' import { BrowserRouter as Router, Routes, Route } from 'react-router-dom' -import theme from './themes/theme' + import HomePage from './pages/Home' +import CustomBackground from './components/Landing/Background' +import './App.css' +import theme from './themes/theme' + function App() { return ( + @@ -15,6 +19,7 @@ function App() { + ) } diff --git a/src/components/Choice/ChoicePage.tsx b/src/components/Choice/ChoicePage.tsx new file mode 100644 index 0000000..e64eeb7 --- /dev/null +++ b/src/components/Choice/ChoicePage.tsx @@ -0,0 +1,13 @@ +import { Stack, Box, Grid } from '@mui/material' +import { useState } from 'react' + +const [isLandingPage,setIsLandingPage] = useState(0) +const [isChoicePage, setIsChoicePage] = useState(!isLandingPage); +function Choice(){ + return( isChoicePage && + <> + + ) +} + +export default Choice; \ No newline at end of file diff --git a/src/components/Landing/Logo.tsx b/src/components/Landing/LandingPage.tsx similarity index 91% rename from src/components/Landing/Logo.tsx rename to src/components/Landing/LandingPage.tsx index 9a01b7a..31cc58a 100644 --- a/src/components/Landing/Logo.tsx +++ b/src/components/Landing/LandingPage.tsx @@ -1,8 +1,7 @@ // import React from 'react'; import { Stack, Typography, Box, Button, Grid } from '@mui/material'; -import CustomBackground from './Background'; -import CarouselContainer from './Carousel/CarouselContainer'; +import { useState } from 'react'; import TrendingFlatRoundedIcon from '@mui/icons-material/TrendingFlatRounded'; import TitleImage from '../../assets/inandoutTITLE.png'; @@ -13,15 +12,14 @@ import CarouselElement from './Carousel/CarouselFinal'; import MenuBar from './Menu/MenuBar'; function Logo() { - return ( - + const [isLandingPage, setIsLandingPage] = useState(1); + return ( isLandingPage && - - - - - - - - - after a long day at work, get in and out of the store as quickly as possible with everything you need - - - - - {/* WIP */} - - - - - - ); -}; - -export default Logo; \ No newline at end of file diff --git a/src/components/background/background.tsx b/src/components/background/background.tsx new file mode 100644 index 0000000..76df97f --- /dev/null +++ b/src/components/background/background.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { Stack } from '@mui/material'; +import colors from '../../themes/colors'; + +const CustomBackground: React.FC<{ children: React.ReactNode }> = ({ children }) => { + return ( + + + + {children} + + + ); +}; + +export default CustomBackground; diff --git a/src/components/Landing/Carousel/CarouselContainer.tsx b/src/components/carousel/carousel-container.tsx similarity index 89% rename from src/components/Landing/Carousel/CarouselContainer.tsx rename to src/components/carousel/carousel-container.tsx index b80e284..2d80b36 100644 --- a/src/components/Landing/Carousel/CarouselContainer.tsx +++ b/src/components/carousel/carousel-container.tsx @@ -1,4 +1,4 @@ -import {Stack, } from '@mui/material'; +import { Stack } from '@mui/material'; interface CarouselContainerProps { image: string; @@ -27,4 +27,4 @@ function CarouselContainer({ image, zindex }: CarouselContainerProps) { ) }; -export default CarouselContainer; \ No newline at end of file +export default CarouselContainer; diff --git a/src/components/Landing/Carousel/CarouselFinal.tsx b/src/components/carousel/carousel-final.tsx similarity index 95% rename from src/components/Landing/Carousel/CarouselFinal.tsx rename to src/components/carousel/carousel-final.tsx index bf54c5f..4cb65d6 100644 --- a/src/components/Landing/Carousel/CarouselFinal.tsx +++ b/src/components/carousel/carousel-final.tsx @@ -1,7 +1,7 @@ import { Box } from '@mui/material'; import { motion } from 'framer-motion'; -import CarouselContainer from './CarouselContainer'; +import CarouselContainer from './carousel-container'; import images from './images'; @@ -47,7 +47,7 @@ const ParallaxItem = ({ image, index }: ParallaxItemProps) => { ); }; -function CarouselElement(){ +function CarouselElement() { const itemCount = 14; const items = generateContent(itemCount); const dupeItems = [...items, ...items]; @@ -87,4 +87,4 @@ function CarouselElement(){ ) } -export default CarouselElement; \ No newline at end of file +export default CarouselElement; diff --git a/src/components/carousel/images.ts b/src/components/carousel/images.ts new file mode 100644 index 0000000..14c33b7 --- /dev/null +++ b/src/components/carousel/images.ts @@ -0,0 +1,15 @@ +//url din assets ./../../assets/carousel/ +//200x200 sa arate bn + +const EImages = { + image1: "./src/assets/images/carousel-images/frigaruie.png", + image2: "./src/assets/images/carousel-images/tomato.jpg", + image3: "./src/assets/images/carousel-images/grapefruit.jpg", + image4: "./src/assets/images/carousel-images/kiwi.jpg", + image5: "./src/assets/images/carousel-images/peste.jpg", + image6: "./src/assets/images/carousel-images/salata.jpg", + image7: "./src/assets/images/carousel-images/pasta.jpg", + image8: "./src/assets/images/carousel-images/paine.jpg", +} + +export default EImages; diff --git a/src/components/choice/choice-page.tsx b/src/components/choice/choice-page.tsx new file mode 100644 index 0000000..e3e4ada --- /dev/null +++ b/src/components/choice/choice-page.tsx @@ -0,0 +1,14 @@ +import { useState } from 'react'; + +function Choice() { + const [isLandingPage, ] = useState(false); + const [isChoicePage, ] = useState(!isLandingPage); + + return ( + isChoicePage ? ( + <> + ) : null + ); +} + +export default Choice; diff --git a/src/components/landing/landing-page.tsx b/src/components/landing/landing-page.tsx new file mode 100644 index 0000000..461a022 --- /dev/null +++ b/src/components/landing/landing-page.tsx @@ -0,0 +1,138 @@ +import { Stack, Typography, Box, Button, Grid } from '@mui/material'; +import { useState } from 'react'; + +import TrendingFlatRoundedIcon from '@mui/icons-material/TrendingFlatRounded'; +import TitleImage from '../../assets/images/inandout-title.png'; + +import colors from '../../themes/colors'; +import CarouselElement from '../carousel/carousel-final'; + +import MenuBar from '../menu/menu-bar'; + +function Logo() { + const [isLandingPage, setIsLandingPage] = useState(true); + + return isLandingPage ? ( + + + + + we've made shopping easy by providing the fastest route for the products that you want + + + + + + + + + + + + + + + after a long day at work, get in and out of the store as quickly as possible with everything you need + + + + + {/* WIP */} + + + + + ) : null; +} + +export default Logo; diff --git a/src/components/Landing/Menu/link.ts b/src/components/menu/link.ts similarity index 88% rename from src/components/Landing/Menu/link.ts rename to src/components/menu/link.ts index 2b0909a..70cc3d1 100644 --- a/src/components/Landing/Menu/link.ts +++ b/src/components/menu/link.ts @@ -1,4 +1,4 @@ -interface LinkType{ +interface LinkType { title: string; link: string; } @@ -20,6 +20,6 @@ const Links: LinkType[] = [ title: "FAQ", link: "/faq" } -] +]; -export default Links; \ No newline at end of file +export default Links; diff --git a/src/components/Landing/Menu/MenuBar.tsx b/src/components/menu/menu-bar.tsx similarity index 84% rename from src/components/Landing/Menu/MenuBar.tsx rename to src/components/menu/menu-bar.tsx index f2f861b..2612df9 100644 --- a/src/components/Landing/Menu/MenuBar.tsx +++ b/src/components/menu/menu-bar.tsx @@ -1,26 +1,19 @@ -import { Box, Stack, Grid, Typography, Button } from '@mui/material'; +import { Box, Typography } from '@mui/material'; import { useState } from 'react'; import { motion } from 'framer-motion'; import MenuIcon from '@mui/icons-material/Menu'; -import colors from '../../../themes/colors'; -interface MenuBarProps { - title?: string; - link?: string; -} - -// function MenuBar({ title, link }: MenuBarProps) { +import colors from '../../themes/colors'; function MenuBar() { - const [IsOpen, SetIsOpen] = useState(0); - + const [isOpen, setIsOpen] = useState(false); return ( - {!IsOpen ? ( + {!isOpen ? ( SetIsOpen(1)} + onClick={() => setIsOpen(true)} sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '8px', + cursor: 'pointer', }} > SetIsOpen(0)} + onClick={() => setIsOpen(false)} sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '8px', + cursor: 'pointer', }} > FAQ - {/* */} Docs - {/* */} GitHub - {/* */} )} ); -}; +} -export default MenuBar; \ No newline at end of file +export default MenuBar; diff --git a/src/components/Landing/Menu/MenuSquare.tsx b/src/components/menu/menu-square.tsx similarity index 100% rename from src/components/Landing/Menu/MenuSquare.tsx rename to src/components/menu/menu-square.tsx diff --git a/src/main.tsx b/src/main.tsx index bef5202..a23b15b 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,10 +1,10 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import './index.css'; +import App from './app'; createRoot(document.getElementById('root')!).render( , -) +); diff --git a/src/pages/Home/HomePage.tsx b/src/pages/Home/HomePage.tsx deleted file mode 100644 index f5d14bd..0000000 --- a/src/pages/Home/HomePage.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import LogoComp from "../../components/Landing/LandingPage"; -import { Stack } from "@mui/material"; - -function HomePage() { - return ( - - ) -}; - -export default HomePage; \ No newline at end of file diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx deleted file mode 100644 index 5d87102..0000000 --- a/src/pages/Home/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -import HomePage from './HomePage'; -export default HomePage; \ No newline at end of file diff --git a/src/pages/home-page.tsx b/src/pages/home-page.tsx new file mode 100644 index 0000000..2959c3c --- /dev/null +++ b/src/pages/home-page.tsx @@ -0,0 +1,7 @@ +import LogoComp from "../components/landing/landing-page"; + +function HomePage() { + return ; +} + +export default HomePage; From a0a6d9e47c09ffa525f2d8d9f585cd173e8d277c Mon Sep 17 00:00:00 2001 From: Petru Braha Date: Thu, 12 Mar 2026 22:04:09 +0200 Subject: [PATCH 29/34] feat: pages --- src/App.tsx | 6 + src/components/landing/landing-page.tsx | 10 +- .../itinerary-preview-page.tsx | 86 +++++++ .../stand-selection/stand-selection-page.tsx | 220 ++++++++++++++++++ .../store-selection/store-selection-page.tsx | 161 +++++++++++++ 5 files changed, 478 insertions(+), 5 deletions(-) create mode 100644 src/pages/itinerary-preview/itinerary-preview-page.tsx create mode 100644 src/pages/stand-selection/stand-selection-page.tsx create mode 100644 src/pages/store-selection/store-selection-page.tsx diff --git a/src/App.tsx b/src/App.tsx index ab4f254..b6f75b5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,6 +3,9 @@ import { CssBaseline } from "@mui/material"; import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; import HomePage from "./pages/home-page"; +import StoreSelectionPage from "./pages/store-selection/store-selection-page"; +import StandSelectionPage from "./pages/stand-selection/stand-selection-page"; +import ItineraryPreviewPage from "./pages/itinerary-preview/itinerary-preview-page"; import CustomBackground from "./components/background/background"; import "./app.css"; @@ -16,6 +19,9 @@ function App() { } /> + } /> + } /> + } /> diff --git a/src/components/landing/landing-page.tsx b/src/components/landing/landing-page.tsx index 461a022..0f82580 100644 --- a/src/components/landing/landing-page.tsx +++ b/src/components/landing/landing-page.tsx @@ -1,5 +1,5 @@ import { Stack, Typography, Box, Button, Grid } from '@mui/material'; -import { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; import TrendingFlatRoundedIcon from '@mui/icons-material/TrendingFlatRounded'; import TitleImage from '../../assets/images/inandout-title.png'; @@ -10,9 +10,9 @@ import CarouselElement from '../carousel/carousel-final'; import MenuBar from '../menu/menu-bar'; function Logo() { - const [isLandingPage, setIsLandingPage] = useState(true); + const navigate = useNavigate(); - return isLandingPage ? ( + return ( - + + + + + ); +} diff --git a/src/pages/stand-selection/stand-selection-page.tsx b/src/pages/stand-selection/stand-selection-page.tsx new file mode 100644 index 0000000..b2a5a7e --- /dev/null +++ b/src/pages/stand-selection/stand-selection-page.tsx @@ -0,0 +1,220 @@ +import { useState, useEffect } from 'react'; +import { Box, Typography, Stack, Grid, TextField, Button, Card, CardContent, Divider, CircularProgress } from '@mui/material'; +import { useParams, useNavigate } from 'react-router-dom'; +import colors from '../../themes/colors'; +import MenuBar from '../../components/menu/menu-bar'; + +export interface StandSummary { + storeId: string; + standId: string; + articleId: string; + edgeId: string; + name?: string; // extended locally for UI + price?: number; // extended locally for UI +} + +export default function StandSelectionPage() { + const { storeId } = useParams(); + const navigate = useNavigate(); + + const [stands, setStands] = useState([]); + const [searchQuery, setSearchQuery] = useState(''); + const [shoppingCart, setShoppingCart] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [isGenerating, setIsGenerating] = useState(false); + + const mockStands: StandSummary[] = Array.from({ length: 15 }).map((_, i) => ({ + storeId: storeId || 'unknown-store', + standId: `stand-uuid-${i}`, + articleId: `article-uuid-${i}`, + edgeId: 'edge-uuid', + name: `Grocery Item ${i + 1}`, + price: Number((Math.random() * 20).toFixed(2)) + })); + + useEffect(() => { + // According to user prompt: api call to /store/storeId/stands + fetch(`/store/${storeId}/stands`) + .then(res => res.json()) + .then(data => { + if (data.tokens) setStands(data.tokens); + else if (Array.isArray(data)) setStands(data); + else setStands(mockStands); + setIsLoading(false); + }) + .catch(() => { + setStands(mockStands); + setIsLoading(false); + }); + }, [storeId]); + + const handleAddToCart = (stand: StandSummary) => { + if (!shoppingCart.find(item => item.standId === stand.standId)) { + setShoppingCart([...shoppingCart, stand]); + } + }; + + const handleRemoveFromCart = (standId: string) => { + setShoppingCart(shoppingCart.filter(item => item.standId !== standId)); + }; + + const handleGenerateRoute = async () => { + if (shoppingCart.length === 0) return; + setIsGenerating(true); + + try { + // According to user prompt: api call to POST /host/routes + await fetch('/host/routes', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + storeId, + standIdList: shoppingCart.map(i => i.standId) + }) + }); + navigate('/itinerary-preview'); + } catch (error) { + console.error(error); + // mock the success + setTimeout(() => navigate('/itinerary-preview'), 1000); + } finally { + setIsGenerating(false); + } + }; + + const filteredStands = stands.filter(stand => + (stand.name || `Article ${stand.articleId}`).toLowerCase().includes(searchQuery.toLowerCase()) + ); + + return ( + + + + + + + Select Articles + + + + {/* Left Panel: Shopping List */} + + + + + Shopping Cart ({shoppingCart.length}) + + + + + {shoppingCart.length === 0 && ( + Your cart is empty. + )} + {shoppingCart.map((item) => ( + + + {item.name || `Article ${item.articleId}`} + + + + ))} + + + + + + + + + {/* Right Panel: Articles and Search */} + + + setSearchQuery(e.target.value)} + sx={{ + backgroundColor: 'white', + borderRadius: '16px', + '& .MuiOutlinedInput-root': { + borderRadius: '16px', + fontFamily: '"Creato", sans-serif', + '&.Mui-focused fieldset': { + borderColor: colors.orangeColor, + borderWidth: '2px' + } + } + }} + /> + + {isLoading ? ( + + + + ) : ( + + {filteredStands.map(stand => ( + + + + + {stand.name || `Article ${stand.articleId}`} + + + ${stand.price?.toFixed(2)} + + + + + + ))} + + )} + + + + + ); +} diff --git a/src/pages/store-selection/store-selection-page.tsx b/src/pages/store-selection/store-selection-page.tsx new file mode 100644 index 0000000..5bed54d --- /dev/null +++ b/src/pages/store-selection/store-selection-page.tsx @@ -0,0 +1,161 @@ +import { useState, useEffect } from 'react'; +import { Box, Typography, Stack, Pagination, Card, CardContent, CardMedia, CardActionArea, CircularProgress, Grid } from '@mui/material'; +import { useNavigate } from 'react-router-dom'; +import colors from '../../themes/colors'; +import MenuBar from '../../components/menu/menu-bar'; + +export interface StoreSummary { + storeId: string; + name: string; + brandId: string; + description: string; + imageUrl: string; + geoCoordinates: any; + operatingHoursMap: any; + timezone: string; + createdAt: string; + updatedAt: string; +} + +const ITEMS_PER_PAGE = 6; + +export default function StoreSelectionPage() { + const navigate = useNavigate(); + const [stores, setStores] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [page, setPage] = useState(1); + + // Fallback Mock Data to allow UI Development + const mockStores: StoreSummary[] = Array.from({ length: 12 }).map((_, i) => ({ + storeId: `store-uuid-${i + 1}`, + name: `In & Out Market ${i + 1}`, + brandId: `brand-uuid`, + description: `Your favourite shopping center, ensuring fast routing and the freshest products available!`, + imageUrl: `https://loremflickr.com/400/300/store?random=${i}`, + geoCoordinates: {}, + operatingHoursMap: {}, + timezone: 'CET', + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + })); + + useEffect(() => { + // According to user prompt: api call to /host/stores + fetch('/host/stores') + .then(res => res.json()) + .then(data => { + // Adjust if API returns { tokens: [...] } per paginated struct + if (data.tokens) setStores(data.tokens); + else if (Array.isArray(data)) setStores(data); + else setStores(mockStores); + setIsLoading(false); + }) + .catch((err) => { + console.error("API Error, using fallback data instead", err); + setStores(mockStores); + setIsLoading(false); + }); + }, []); + + const handleChangePage = (event: React.ChangeEvent, value: number) => { + setPage(value); + }; + + const paginatedStores = stores.slice((page - 1) * ITEMS_PER_PAGE, page * ITEMS_PER_PAGE); + + return ( + + + + + + + Select a Store + + + {isLoading ? ( + + + + ) : ( + <> + + {paginatedStores.map(store => ( + + navigate(`/stores/${store.storeId}/stands`)} + sx={{ + borderRadius: '24px', + boxShadow: '0 8px 30px rgba(0,0,0,0.12)', + border: `2px solid transparent`, + transition: 'all 0.3s ease', + '&:hover': { + transform: 'translateY(-8px)', + borderColor: colors.orangeColor + } + }} + > + + + + + {store.name} + + + {store.description} + + + + + + ))} + + + + + + + )} + + ); +} From 7b11de6ff5940c851eac7f31cd546cba67ff37ec Mon Sep 17 00:00:00 2001 From: Petru Braha Date: Thu, 12 Mar 2026 22:11:10 +0200 Subject: [PATCH 30/34] almost builds the entire solution --- src/main.tsx | 10 +- .../store-selection/store-selection-page.tsx | 348 ++++++++++-------- 2 files changed, 207 insertions(+), 151 deletions(-) diff --git a/src/main.tsx b/src/main.tsx index a23b15b..15753af 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,9 +1,9 @@ -import { StrictMode } from 'react'; -import { createRoot } from 'react-dom/client'; -import './index.css'; -import App from './app'; +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import "./index.css"; +import App from "./App"; -createRoot(document.getElementById('root')!).render( +createRoot(document.getElementById("root")!).render( , diff --git a/src/pages/store-selection/store-selection-page.tsx b/src/pages/store-selection/store-selection-page.tsx index 5bed54d..4dabdfa 100644 --- a/src/pages/store-selection/store-selection-page.tsx +++ b/src/pages/store-selection/store-selection-page.tsx @@ -1,161 +1,217 @@ -import { useState, useEffect } from 'react'; -import { Box, Typography, Stack, Pagination, Card, CardContent, CardMedia, CardActionArea, CircularProgress, Grid } from '@mui/material'; -import { useNavigate } from 'react-router-dom'; -import colors from '../../themes/colors'; -import MenuBar from '../../components/menu/menu-bar'; +import { useState, useEffect } from "react"; +import { + Box, + Typography, + Stack, + Pagination, + Card, + CardContent, + CardMedia, + CardActionArea, + CircularProgress, + Grid, +} from "@mui/material"; +import { useNavigate } from "react-router-dom"; +import colors from "../../themes/colors"; +import MenuBar from "../../components/menu/menu-bar"; export interface StoreSummary { - storeId: string; - name: string; - brandId: string; - description: string; - imageUrl: string; - geoCoordinates: any; - operatingHoursMap: any; - timezone: string; - createdAt: string; - updatedAt: string; + storeId: string; + name: string; + brandId: string; + description: string; + imageUrl: string; + geoCoordinates: any; + operatingHoursMap: any; + timezone: string; + createdAt: string; + updatedAt: string; } const ITEMS_PER_PAGE = 6; export default function StoreSelectionPage() { - const navigate = useNavigate(); - const [stores, setStores] = useState([]); - const [isLoading, setIsLoading] = useState(true); - const [page, setPage] = useState(1); - - // Fallback Mock Data to allow UI Development - const mockStores: StoreSummary[] = Array.from({ length: 12 }).map((_, i) => ({ - storeId: `store-uuid-${i + 1}`, - name: `In & Out Market ${i + 1}`, - brandId: `brand-uuid`, - description: `Your favourite shopping center, ensuring fast routing and the freshest products available!`, - imageUrl: `https://loremflickr.com/400/300/store?random=${i}`, - geoCoordinates: {}, - operatingHoursMap: {}, - timezone: 'CET', - createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), - })); + const navigate = useNavigate(); + const [stores, setStores] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [page, setPage] = useState(1); - useEffect(() => { - // According to user prompt: api call to /host/stores - fetch('/host/stores') - .then(res => res.json()) - .then(data => { - // Adjust if API returns { tokens: [...] } per paginated struct - if (data.tokens) setStores(data.tokens); - else if (Array.isArray(data)) setStores(data); - else setStores(mockStores); - setIsLoading(false); - }) - .catch((err) => { - console.error("API Error, using fallback data instead", err); - setStores(mockStores); - setIsLoading(false); - }); - }, []); + // Fallback Mock Data to allow UI Development + const mockStores: StoreSummary[] = Array.from({ length: 12 }).map((_, i) => ({ + storeId: `store-uuid-${i + 1}`, + name: `In & Out Market ${i + 1}`, + brandId: `brand-uuid`, + description: `Your favourite shopping center, ensuring fast routing and the freshest products available!`, + imageUrl: `https://loremflickr.com/400/300/store?random=${i}`, + geoCoordinates: {}, + operatingHoursMap: {}, + timezone: "CET", + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + })); - const handleChangePage = (event: React.ChangeEvent, value: number) => { - setPage(value); - }; + useEffect(() => { + // According to user prompt: api call to /host/stores + fetch("/host/stores") + .then((res) => res.json()) + .then((data) => { + // Adjust if API returns { tokens: [...] } per paginated struct + if (data.tokens) setStores(data.tokens); + else if (Array.isArray(data)) setStores(data); + else setStores(mockStores); + setIsLoading(false); + }) + .catch((err) => { + console.error("API Error, using fallback data instead", err); + setStores(mockStores); + setIsLoading(false); + }); + }, []); - const paginatedStores = stores.slice((page - 1) * ITEMS_PER_PAGE, page * ITEMS_PER_PAGE); + const handleChangePage = ( + event: React.ChangeEvent, + value: number, + ) => { + if (event == undefined) { + return; + } + setPage(value); + }; - return ( - - - - + const paginatedStores = stores.slice( + (page - 1) * ITEMS_PER_PAGE, + page * ITEMS_PER_PAGE, + ); - - Select a Store - + return ( + + + + - {isLoading ? ( - - - - ) : ( - <> - - {paginatedStores.map(store => ( - - navigate(`/stores/${store.storeId}/stands`)} - sx={{ - borderRadius: '24px', - boxShadow: '0 8px 30px rgba(0,0,0,0.12)', - border: `2px solid transparent`, - transition: 'all 0.3s ease', - '&:hover': { - transform: 'translateY(-8px)', - borderColor: colors.orangeColor - } - }} - > - - - - - {store.name} - - - {store.description} - - - - - - ))} - + + Select a Store + - - - - - )} - - ); + {isLoading ? ( + + + + ) : ( + <> + + {paginatedStores.map((store) => ( + + navigate(`/stores/${store.storeId}/stands`)} + sx={{ + borderRadius: "24px", + boxShadow: "0 8px 30px rgba(0,0,0,0.12)", + border: `2px solid transparent`, + transition: "all 0.3s ease", + "&:hover": { + transform: "translateY(-8px)", + borderColor: colors.orangeColor, + }, + }} + > + + + + + {store.name} + + + {store.description} + + + + + + ))} + + + + + + + )} + + ); } From 087c4660a030fb9a143085035415dbb0db6ad9cc Mon Sep 17 00:00:00 2001 From: Petru Braha Date: Thu, 12 Mar 2026 22:12:25 +0200 Subject: [PATCH 31/34] removed useless doc dir --- doc/InAndOut.logo.png | Bin 83112 -> 0 bytes doc/schema.dbml | 274 ------------------------------------------ 2 files changed, 274 deletions(-) delete mode 100644 doc/InAndOut.logo.png delete mode 100644 doc/schema.dbml diff --git a/doc/InAndOut.logo.png b/doc/InAndOut.logo.png deleted file mode 100644 index 4ae2eea7ab153241f524f82b5024e067aa2c9327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83112 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 diff --git a/doc/schema.dbml b/doc/schema.dbml deleted file mode 100644 index 0d34b11..0000000 --- a/doc/schema.dbml +++ /dev/null @@ -1,274 +0,0 @@ -// Syntax documentation: https://dbml.dbdiagram.io/docs/ -// Visualization: https://dbdiagram.io/d/InAndOut-693154e7d6676488ba8f6f4d - -////////////////////////////////////////////////////// -// OUTLET - STORE STRUCTURE SECTION -////////////////////////////////////////////////////// - -Table brand { - note: "A brand (e.g. Lidl) having one or multiple physical stores." - - id int [pk, increment] - name varchar2(63) [not null] - logo_url varchar2(255) - - created_at datetime [not null] - updated_at datetime [not null] -} - -Table store { - note: "Physical store of a brand with geolocation." - - id int [pk, increment] - brand_id int [not null, ref: > brand.id] - - timezone int [not null, default: 2, note: "Encoded as UCT+."] - - name varchar2(63) [note: "A store might alter the brand name. e.g. Lidl -> Lidl Poland."] - description varchar2(255) [note: "Anything, maybe some navigation suggestions."] - image_url varchar2(255) [note: "If not provided, the brand logo is displayed instead."] - - mapping_version int [not null, default: 0, increment, note: "Used to validate cached TSP solutions."] - longitude double - latitude double - - created_at datetime [not null] - updated_at datetime [not null] - - indexes { - name - } -} - -Table floor { - note: "A floor of a specific physical store; each floor is an individual article map." - - id int [pk, increment] - store_id int [not null, ref: > store.id] - - // According to this: https://www.ricksteves.com/travel-tips/trip-planning/european-numbers - // In Europe the ground floor is considered to be the level 0. - // In American English this would be defaulted to 1 instead. - level int [not null, default: 0, note: "Zero stands for the street floor, one for the one above it, etc."] - - indexes { - store_id - } -} - -////////////////////////////////////////////////////// -// MAPPING - LOCATION REPRESENTATION SECTION -////////////////////////////////////////////////////// - -Table edge { - note: "Represents an aisle between two reachable floor points." - - id int [pk, increment] - floor_id int [not null, ref: > floor.id] - - // These two must be on the same floor id. - // That id must be the same as this edge floor id. - source_node_id int [not null, ref: > node.id] - target_node_id int [not null, ref: > node.id] - - name varchar2(63) [note: "e.g. \"milk corridor\"."] - weight int - - checks { - `source_node_id != target_node_id` [name: "An edge must be between two different nodes."] - } - - indexes { - floor_id - } -} - -Enum node_type { - NAVIGATION [note: "Either store corners or aisle intersections."] - - // Should be defined for all floor except the highest one. - ELEVATION [note: "An elevator or staircase to the level above."] - // Should be defined for all floors except the lowest one. - // This schema could also describe a store with underground levels. - DESCENT [note: "An elevator or staircase to the level below."] -} - -Table node { - note: "Client reachable area." - - id int [pk, increment] - floor_id int [not null, ref: > floor.id] - - name varchar2(63) [note: "e.g. \"Start of the principal corridor\", \"Milk-toys intersection\"."] - number double [note: "Uniquely identifies a node for a specific store."] - type node_type [not null, default: node_type.NAVIGATION] - - indexes { - floor_id - } -} - -////////////////////////////////////////////////////// -// (STORE) AVAILABILITY SECTION -////////////////////////////////////////////////////// - -Enum day_type { - MON - TUE - WED - THU - FRI - SAT - SUN -} - -// A store could be opened in a day multiple times. -// e.g. Krotz restaurant opens on Monday: - // for lunch between 14:00 - 16:00, and - // for dinner between 18:00 - 23:59. -// e.g. If a store is open on Tuesday between 16:00 - 02:00, - // then its operating hours will be stored as follows: - // TUE - 16:00 - 23:59 - // WED - 00:00 - 02:00 -Table operating { - // The registered store must include its schedule for all days. - note: "Operating hours for a store." - - id int [pk, increment] - store_id int [not null, ref: > store.id] - - day day_type [not null] - begin_time time [not null, default: "00:00", note: "When the sore opens."] - end_time time [not null, default: "23:59", note: "When the store closes."] -} - -Table event { - note: "Can be a national holiday or a custom defined downtime." - - id int [pk, increment] - - // It repeats every year if both fields define only the days and the months. - begin_date date [not null] - end_date date [not null] - - name varchar2(63) - description varchar2(255) - - checks { - `begin_date.year == end_date.year` [name: 'chk_valid_event'] - } -} - -Table break { - note: "Some days off for a store." - - store_id int [not null, ref: > store.id] - event_id int [not null, ref: > event.id] - - indexes { - (store_id, event_id) [pk] - } -} - -////////////////////////////////////////////////////// -// CATALOG - PRODUCT SECTION -////////////////////////////////////////////////////// - -Table product { - note: "Product catalog and details." - - id int [pk, increment] - - name varchar2(63) [not null, note: "e.g. almond milk."] - subcategory varchar2(63) [note: "e.g. milk."] - category varchar2(63) [note: "e.g. dairy products."] - - vendor varchar2(63) [note: "e.g. Zuzu, Alpro, etc."] - image_url varchar2(255) - description varchar2(255) - - created_at datetime [not null] - updated_at datetime [not null] - - indexes { - vendor - } -} - -Table article { - note: "Product commercialized by a brand." - - id int [pk, increment] - product_id int [not null, ref: > product.id] - brand_id int [not null, ref: > brand.id] - - price double [not null, note: "Base price decided by the brand; may be increased/decreased by stores."] - currency varchar2(31) - - created_at datetime [not null] - updated_at datetime [not null] -} - -Table stand { - note: "Links an article to a a specific place on a shelf." - - id int [pk, increment] - edge_id int [not null, ref: > edge.id] - article_id int [not null, ref: > article.id] - - source_node_distance int [not null] - - created_at datetime [not null] - updated_at datetime [not null] -} - -////////////////////////////////////////////////////// -// MARKETING - DISCOUNT SECTION -////////////////////////////////////////////////////// - -Table discount { - note: "Links an article to an offer." - - article_id int [not null, ref: > article.id] - offer_id int [not null, ref: > offer.id] - - indexes { - (article_id, offer_id) [pk] - } - -} - -Table offer { - note: "Promotional offer of a brand/store." - - id int [pk, increment] - period_id int [ref: > period.id, note: "Optional active time period in a day."] - store_id int [ref: > store.id, note: "If null, the offer applies to all stores of a brand."] - - percentage int [not null] - lifetime datetime [note: "Precise moment in time when the offer expires."] - - created_at datetime [not null] - updated_at datetime [not null] -} - -Table dependency { - note: "Required product quantity to activate an offer." - - offer_id int [not null, ref: > offer.id] - article_id int [not null, ref: > article.id] - quantity int - - indexes { - (offer_id, article_id) [pk] - } -} - -Table period { - note: "Daily time window for an offer." - - id int [pk, increment] - - begin_time time [not null, default: "00:00", note: "Start time of offer."] - end_time time [not null, default: "23:59", note: "End time of offer."] -} From 4874a0397baf78320f62ad1a74310f595cf23472 Mon Sep 17 00:00:00 2001 From: Petru Braha Date: Thu, 12 Mar 2026 22:23:13 +0200 Subject: [PATCH 32/34] test --- .gitignore | 44 -------------------------------------------- README.md | 14 ++------------ 2 files changed, 2 insertions(+), 56 deletions(-) diff --git a/.gitignore b/.gitignore index fdf9ffe..d10c42f 100644 --- a/.gitignore +++ b/.gitignore @@ -135,50 +135,6 @@ dist .yarn/install-state.gz .pnp.* -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# vitepress build output -**/.vitepress/dist - -# vitepress cache directory -**/.vitepress/cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - # Editor directories and files .vscode .idea diff --git a/README.md b/README.md index 647981a..be6157e 100644 --- a/README.md +++ b/README.md @@ -53,20 +53,10 @@ The primary goal is to help users find products efficiently. The core functional --- -## ⚛ Technology Stack - -This project follows a **Monorepo** approach. - -This project follows a **Monorepo** approach. - -- **Frontend**: React with TypeScript. -- **Backend**: Java. -- **Database**: PostgreSQL. -- **API Modeling**: [Smithy](https://smithy.io/2.0/) (Interface Definition Language). - ## 🛠 Build Instructions -TODO +- Install Smithy CLI +- Install yarn ### Execution From 10f45ef3fb376b43dff4c7d269dfea0b11263d96 Mon Sep 17 00:00:00 2001 From: Petru Braha Date: Thu, 12 Mar 2026 22:36:02 +0200 Subject: [PATCH 33/34] linted the code with prettier --- eslint.config.js | 18 +- package-lock.json | 17 + package.json | 3 +- src/App.tsx | 10 +- src/components/background/background.tsx | 76 +-- .../carousel/carousel-container.tsx | 41 +- src/components/carousel/carousel-final.tsx | 139 ++--- src/components/carousel/images.ts | 20 +- src/components/choice/choice-page.tsx | 14 +- src/components/landing/landing-page.tsx | 279 +++++----- src/components/menu/link.ts | 36 +- src/components/menu/menu-bar.tsx | 309 ++++++----- .../itinerary-preview-page.tsx | 180 +++--- .../stand-selection/stand-selection-page.tsx | 511 ++++++++++-------- src/themes/colors.ts | 14 +- src/themes/theme.tsx | 68 +-- 16 files changed, 959 insertions(+), 776 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 5e6b472..75d3c46 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,14 +1,14 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' -import { defineConfig, globalIgnores } from 'eslint/config' +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "typescript-eslint"; +import { defineConfig, globalIgnores } from "eslint/config"; export default defineConfig([ - globalIgnores(['dist']), + globalIgnores(["dist"]), { - files: ['**/*.{ts,tsx}'], + files: ["**/*.{ts,tsx}"], extends: [ js.configs.recommended, tseslint.configs.recommended, @@ -20,4 +20,4 @@ export default defineConfig([ globals: globals.browser, }, }, -]) +]); diff --git a/package-lock.json b/package-lock.json index 179f144..1abc871 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", + "prettier": "3.8.1", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", "vite": "^7.2.4" @@ -4746,6 +4747,22 @@ "node": ">=6" } }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/package.json b/package.json index 1e9bc37..e4c12a5 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ "react-router-dom": "^7.10.1" }, "devDependencies": { - "@inandout/client": "^0.0.1", "@eslint/js": "^9.39.1", + "@inandout/client": "^0.0.1", "@types/node": "^24.10.1", "@types/react": "^19.2.5", "@types/react-dom": "^19.2.3", @@ -39,6 +39,7 @@ "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", + "prettier": "3.8.1", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", "vite": "^7.2.4" diff --git a/src/App.tsx b/src/App.tsx index b6f75b5..678bbf6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -20,8 +20,14 @@ function App() { } /> } /> - } /> - } /> + } + /> + } + /> diff --git a/src/components/background/background.tsx b/src/components/background/background.tsx index 76df97f..b3102b6 100644 --- a/src/components/background/background.tsx +++ b/src/components/background/background.tsx @@ -1,27 +1,29 @@ -import React from 'react'; -import { Stack } from '@mui/material'; -import colors from '../../themes/colors'; +import React from "react"; +import { Stack } from "@mui/material"; +import colors from "../../themes/colors"; -const CustomBackground: React.FC<{ children: React.ReactNode }> = ({ children }) => { - return ( - - = ({ + children, +}) => { + return ( + + = ({ children }) ${colors.greenColor} 80%, ${colors.whiteColor} 90% )`, - transform: 'scale(1.1)', - transformOrigin: 'center center', - }} - /> - - {children} - - - ); + transform: "scale(1.1)", + transformOrigin: "center center", + }} + /> + + {children} + + + ); }; export default CustomBackground; diff --git a/src/components/carousel/carousel-container.tsx b/src/components/carousel/carousel-container.tsx index 2d80b36..7a1e7e4 100644 --- a/src/components/carousel/carousel-container.tsx +++ b/src/components/carousel/carousel-container.tsx @@ -1,4 +1,4 @@ -import { Stack } from '@mui/material'; +import { Stack } from "@mui/material"; interface CarouselContainerProps { image: string; @@ -6,25 +6,26 @@ interface CarouselContainerProps { } function CarouselContainer({ image, zindex }: CarouselContainerProps) { - return( - - ) -}; + ); +} export default CarouselContainer; diff --git a/src/components/carousel/carousel-final.tsx b/src/components/carousel/carousel-final.tsx index 4cb65d6..faf8716 100644 --- a/src/components/carousel/carousel-final.tsx +++ b/src/components/carousel/carousel-final.tsx @@ -1,9 +1,9 @@ -import { Box } from '@mui/material'; -import { motion } from 'framer-motion'; +import { Box } from "@mui/material"; +import { motion } from "framer-motion"; -import CarouselContainer from './carousel-container'; +import CarouselContainer from "./carousel-container"; -import images from './images'; +import images from "./images"; //asa sa fie si img!!!! const size = 200; @@ -11,80 +11,87 @@ const overlap = -80; const offset = 60; const generateContent = (count: number) => { - const imageArray = Object.values(images); - return Array.from({ length: count }, (_, i) => ({ - id: i, - url: imageArray[i % imageArray.length], - })); + const imageArray = Object.values(images); + return Array.from({ length: count }, (_, i) => ({ + id: i, + url: imageArray[i % imageArray.length], + })); }; //passing props to each component interface ParallaxItemProps { - image: string; - index: number; + image: string; + index: number; } const ParallaxItem = ({ image, index }: ParallaxItemProps) => { - const xOffset = index % 2 === 1 ? offset : -offset; - return ( - - - - - - + const xOffset = index % 2 === 1 ? offset : -offset; + return ( + + + + - ); + + + ); }; function CarouselElement() { - const itemCount = 14; - const items = generateContent(itemCount); - const dupeItems = [...items, ...items]; - const startHeight = itemCount * (size + overlap); + const itemCount = 14; + const items = generateContent(itemCount); + const dupeItems = [...items, ...items]; + const startHeight = itemCount * (size + overlap); - return( - - - {dupeItems.map((item, index) => ( - - ))} - - - ) + return ( + + + {dupeItems.map((item, index) => ( + + ))} + + + ); } export default CarouselElement; diff --git a/src/components/carousel/images.ts b/src/components/carousel/images.ts index 14c33b7..ef821ee 100644 --- a/src/components/carousel/images.ts +++ b/src/components/carousel/images.ts @@ -1,15 +1,15 @@ -//url din assets ./../../assets/carousel/ +//url din assets ./../../assets/carousel/ //200x200 sa arate bn const EImages = { - image1: "./src/assets/images/carousel-images/frigaruie.png", - image2: "./src/assets/images/carousel-images/tomato.jpg", - image3: "./src/assets/images/carousel-images/grapefruit.jpg", - image4: "./src/assets/images/carousel-images/kiwi.jpg", - image5: "./src/assets/images/carousel-images/peste.jpg", - image6: "./src/assets/images/carousel-images/salata.jpg", - image7: "./src/assets/images/carousel-images/pasta.jpg", - image8: "./src/assets/images/carousel-images/paine.jpg", -} + image1: "./src/assets/images/carousel-images/frigaruie.png", + image2: "./src/assets/images/carousel-images/tomato.jpg", + image3: "./src/assets/images/carousel-images/grapefruit.jpg", + image4: "./src/assets/images/carousel-images/kiwi.jpg", + image5: "./src/assets/images/carousel-images/peste.jpg", + image6: "./src/assets/images/carousel-images/salata.jpg", + image7: "./src/assets/images/carousel-images/pasta.jpg", + image8: "./src/assets/images/carousel-images/paine.jpg", +}; export default EImages; diff --git a/src/components/choice/choice-page.tsx b/src/components/choice/choice-page.tsx index e3e4ada..fc3d589 100644 --- a/src/components/choice/choice-page.tsx +++ b/src/components/choice/choice-page.tsx @@ -1,14 +1,10 @@ -import { useState } from 'react'; +import { useState } from "react"; function Choice() { - const [isLandingPage, ] = useState(false); - const [isChoicePage, ] = useState(!isLandingPage); - - return ( - isChoicePage ? ( - <> - ) : null - ); + const [isLandingPage] = useState(false); + const [isChoicePage] = useState(!isLandingPage); + + return isChoicePage ? <> : null; } export default Choice; diff --git a/src/components/landing/landing-page.tsx b/src/components/landing/landing-page.tsx index 0f82580..35f2a0e 100644 --- a/src/components/landing/landing-page.tsx +++ b/src/components/landing/landing-page.tsx @@ -1,138 +1,163 @@ -import { Stack, Typography, Box, Button, Grid } from '@mui/material'; -import { useNavigate } from 'react-router-dom'; +import { Stack, Typography, Box, Button, Grid } from "@mui/material"; +import { useNavigate } from "react-router-dom"; -import TrendingFlatRoundedIcon from '@mui/icons-material/TrendingFlatRounded'; -import TitleImage from '../../assets/images/inandout-title.png'; +import TrendingFlatRoundedIcon from "@mui/icons-material/TrendingFlatRounded"; +import TitleImage from "../../assets/images/inandout-title.png"; -import colors from '../../themes/colors'; -import CarouselElement from '../carousel/carousel-final'; +import colors from "../../themes/colors"; +import CarouselElement from "../carousel/carousel-final"; -import MenuBar from '../menu/menu-bar'; +import MenuBar from "../menu/menu-bar"; function Logo() { - const navigate = useNavigate(); + const navigate = useNavigate(); - return ( - + + - - - - we've made shopping easy by providing the fastest route for the products that you want - - - - - - - - - - - - - - - after a long day at work, get in and out of the store as quickly as possible with everything you need - - - - - {/* WIP */} - - + + we've made shopping easy by providing the fastest route for the + products that you want + + + + + + + + + + + + + + after a long day at work, get in and out of the store as quickly as + possible with everything you need + + + + + {/* WIP */} + + + + + ); } export default Logo; diff --git a/src/components/menu/link.ts b/src/components/menu/link.ts index 70cc3d1..6ddf0a4 100644 --- a/src/components/menu/link.ts +++ b/src/components/menu/link.ts @@ -1,25 +1,25 @@ interface LinkType { - title: string; - link: string; + title: string; + link: string; } const Links: LinkType[] = [ - { - title: "Home", - link: "/" - }, - { - title: "Account", - link: "/account" - }, - { - title: "Documentation", - link: `url(${"https://github.com/Vldddddd1/InAndOut"})` - }, - { - title: "FAQ", - link: "/faq" - } + { + title: "Home", + link: "/", + }, + { + title: "Account", + link: "/account", + }, + { + title: "Documentation", + link: `url(${"https://github.com/Vldddddd1/InAndOut"})`, + }, + { + title: "FAQ", + link: "/faq", + }, ]; export default Links; diff --git a/src/components/menu/menu-bar.tsx b/src/components/menu/menu-bar.tsx index 2612df9..574f163 100644 --- a/src/components/menu/menu-bar.tsx +++ b/src/components/menu/menu-bar.tsx @@ -1,158 +1,173 @@ -import { Box, Typography } from '@mui/material'; -import { useState } from 'react'; -import { motion } from 'framer-motion'; +import { Box, Typography } from "@mui/material"; +import { useState } from "react"; +import { motion } from "framer-motion"; -import MenuIcon from '@mui/icons-material/Menu'; -import colors from '../../themes/colors'; +import MenuIcon from "@mui/icons-material/Menu"; +import colors from "../../themes/colors"; function MenuBar() { - const [isOpen, setIsOpen] = useState(false); + const [isOpen, setIsOpen] = useState(false); - return ( + return ( + + {!isOpen ? ( + + setIsOpen(true)} + sx={{ + display: "flex", + alignItems: "center", + justifyContent: "center", + gap: "8px", + cursor: "pointer", + }} + > + + Menu + + + + + ) : ( + setIsOpen(false)} + sx={{ + display: "flex", + alignItems: "center", + justifyContent: "center", + gap: "8px", + cursor: "pointer", }} - transition={{ type: 'spring', stiffness: 300, damping: 30 }} - style={{ - backgroundColor: colors.whiteColor, - borderRadius: '30px', - border: `2.5px solid ${colors.orangeColor}`, - backdropFilter: 'blur(10px)', - WebkitBackdropFilter: 'blur(10px)', - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - flexDirection: 'row', - userSelect: 'none', + > + + Menu + + + + - {!isOpen ? ( - - setIsOpen(true)} - sx={{ - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - gap: '8px', - cursor: 'pointer', - }} - > - - Menu - - - - - ) : ( - - setIsOpen(false)} - sx={{ - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - gap: '8px', - cursor: 'pointer', - }} - > - - Menu - - - - - - FAQ - - - - - Docs - - - - - GitHub - - - - )} + > + + FAQ + + + + + Docs + + + + + GitHub + + - ); + )} + + ); } export default MenuBar; diff --git a/src/pages/itinerary-preview/itinerary-preview-page.tsx b/src/pages/itinerary-preview/itinerary-preview-page.tsx index df78b9d..ee487fa 100644 --- a/src/pages/itinerary-preview/itinerary-preview-page.tsx +++ b/src/pages/itinerary-preview/itinerary-preview-page.tsx @@ -1,86 +1,108 @@ -import { Box, Typography, Stack, Button, Card, CardContent } from '@mui/material'; -import { useNavigate } from 'react-router-dom'; -import colors from '../../themes/colors'; -import MenuBar from '../../components/menu/menu-bar'; +import { + Box, + Typography, + Stack, + Button, + Card, + CardContent, +} from "@mui/material"; +import { useNavigate } from "react-router-dom"; +import colors from "../../themes/colors"; +import MenuBar from "../../components/menu/menu-bar"; export default function ItineraryPreviewPage() { - const navigate = useNavigate(); + const navigate = useNavigate(); - return ( - - - - + return ( + + + + - - - - - Your Itinerary is Ready! - - - We have calculated the fastest route for you to collect all your groceries smoothly. - + + + + + Your Itinerary is Ready! + + + We have calculated the fastest route for you to collect all your + groceries smoothly. + - - - (Map preview will be displayed here) - - + + + (Map preview will be displayed here) + + - - - - - - ); + + + + + + ); } diff --git a/src/pages/stand-selection/stand-selection-page.tsx b/src/pages/stand-selection/stand-selection-page.tsx index b2a5a7e..0b52496 100644 --- a/src/pages/stand-selection/stand-selection-page.tsx +++ b/src/pages/stand-selection/stand-selection-page.tsx @@ -1,220 +1,309 @@ -import { useState, useEffect } from 'react'; -import { Box, Typography, Stack, Grid, TextField, Button, Card, CardContent, Divider, CircularProgress } from '@mui/material'; -import { useParams, useNavigate } from 'react-router-dom'; -import colors from '../../themes/colors'; -import MenuBar from '../../components/menu/menu-bar'; +import { useState, useEffect } from "react"; +import { + Box, + Typography, + Stack, + Grid, + TextField, + Button, + Card, + CardContent, + Divider, + CircularProgress, +} from "@mui/material"; +import { useParams, useNavigate } from "react-router-dom"; +import colors from "../../themes/colors"; +import MenuBar from "../../components/menu/menu-bar"; export interface StandSummary { - storeId: string; - standId: string; - articleId: string; - edgeId: string; - name?: string; // extended locally for UI - price?: number; // extended locally for UI + storeId: string; + standId: string; + articleId: string; + edgeId: string; + name?: string; // extended locally for UI + price?: number; // extended locally for UI } export default function StandSelectionPage() { - const { storeId } = useParams(); - const navigate = useNavigate(); - - const [stands, setStands] = useState([]); - const [searchQuery, setSearchQuery] = useState(''); - const [shoppingCart, setShoppingCart] = useState([]); - const [isLoading, setIsLoading] = useState(true); - const [isGenerating, setIsGenerating] = useState(false); - - const mockStands: StandSummary[] = Array.from({ length: 15 }).map((_, i) => ({ - storeId: storeId || 'unknown-store', - standId: `stand-uuid-${i}`, - articleId: `article-uuid-${i}`, - edgeId: 'edge-uuid', - name: `Grocery Item ${i + 1}`, - price: Number((Math.random() * 20).toFixed(2)) - })); - - useEffect(() => { - // According to user prompt: api call to /store/storeId/stands - fetch(`/store/${storeId}/stands`) - .then(res => res.json()) - .then(data => { - if (data.tokens) setStands(data.tokens); - else if (Array.isArray(data)) setStands(data); - else setStands(mockStands); - setIsLoading(false); - }) - .catch(() => { - setStands(mockStands); - setIsLoading(false); - }); - }, [storeId]); - - const handleAddToCart = (stand: StandSummary) => { - if (!shoppingCart.find(item => item.standId === stand.standId)) { - setShoppingCart([...shoppingCart, stand]); - } - }; - - const handleRemoveFromCart = (standId: string) => { - setShoppingCart(shoppingCart.filter(item => item.standId !== standId)); - }; - - const handleGenerateRoute = async () => { - if (shoppingCart.length === 0) return; - setIsGenerating(true); - - try { - // According to user prompt: api call to POST /host/routes - await fetch('/host/routes', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - storeId, - standIdList: shoppingCart.map(i => i.standId) - }) - }); - navigate('/itinerary-preview'); - } catch (error) { - console.error(error); - // mock the success - setTimeout(() => navigate('/itinerary-preview'), 1000); - } finally { - setIsGenerating(false); - } - }; - - const filteredStands = stands.filter(stand => - (stand.name || `Article ${stand.articleId}`).toLowerCase().includes(searchQuery.toLowerCase()) - ); - - return ( - - - + const { storeId } = useParams(); + const navigate = useNavigate(); + + const [stands, setStands] = useState([]); + const [searchQuery, setSearchQuery] = useState(""); + const [shoppingCart, setShoppingCart] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [isGenerating, setIsGenerating] = useState(false); + + const mockStands: StandSummary[] = Array.from({ length: 15 }).map((_, i) => ({ + storeId: storeId || "unknown-store", + standId: `stand-uuid-${i}`, + articleId: `article-uuid-${i}`, + edgeId: "edge-uuid", + name: `Grocery Item ${i + 1}`, + price: Number((Math.random() * 20).toFixed(2)), + })); + + useEffect(() => { + // According to user prompt: api call to /store/storeId/stands + fetch(`/store/${storeId}/stands`) + .then((res) => res.json()) + .then((data) => { + if (data.tokens) setStands(data.tokens); + else if (Array.isArray(data)) setStands(data); + else setStands(mockStands); + setIsLoading(false); + }) + .catch(() => { + setStands(mockStands); + setIsLoading(false); + }); + }, [storeId]); + + const handleAddToCart = (stand: StandSummary) => { + if (!shoppingCart.find((item) => item.standId === stand.standId)) { + setShoppingCart([...shoppingCart, stand]); + } + }; + + const handleRemoveFromCart = (standId: string) => { + setShoppingCart(shoppingCart.filter((item) => item.standId !== standId)); + }; + + const handleGenerateRoute = async () => { + if (shoppingCart.length === 0) return; + setIsGenerating(true); + + try { + // According to user prompt: api call to POST /host/routes + await fetch("/host/routes", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + storeId, + standIdList: shoppingCart.map((i) => i.standId), + }), + }); + navigate("/itinerary-preview"); + } catch (error) { + console.error(error); + // mock the success + setTimeout(() => navigate("/itinerary-preview"), 1000); + } finally { + setIsGenerating(false); + } + }; + + const filteredStands = stands.filter((stand) => + (stand.name || `Article ${stand.articleId}`) + .toLowerCase() + .includes(searchQuery.toLowerCase()), + ); + + return ( + + + + + + + Select Articles + + + + {/* Left Panel: Shopping List */} + + + + + Shopping Cart ({shoppingCart.length}) + + + + + {shoppingCart.length === 0 && ( + + Your cart is empty. + + )} + {shoppingCart.map((item) => ( + + + {item.name || `Article ${item.articleId}`} + + + + ))} + + + + + + + + {/* Right Panel: Articles and Search */} + + + setSearchQuery(e.target.value)} + sx={{ + backgroundColor: "white", + borderRadius: "16px", + "& .MuiOutlinedInput-root": { + borderRadius: "16px", + fontFamily: '"Creato", sans-serif', + "&.Mui-focused fieldset": { + borderColor: colors.orangeColor, + borderWidth: "2px", + }, + }, + }} + /> - - Select Articles - - - - {/* Left Panel: Shopping List */} - - - - - Shopping Cart ({shoppingCart.length}) - - - - - {shoppingCart.length === 0 && ( - Your cart is empty. - )} - {shoppingCart.map((item) => ( - - - {item.name || `Article ${item.articleId}`} - - - - ))} - - - - - + {isLoading ? ( + + + + ) : ( + + {filteredStands.map((stand) => ( + + + + + {stand.name || `Article ${stand.articleId}`} + + + ${stand.price?.toFixed(2)} + + + - - - {/* Right Panel: Articles and Search */} - - - setSearchQuery(e.target.value)} - sx={{ - backgroundColor: 'white', - borderRadius: '16px', - '& .MuiOutlinedInput-root': { - borderRadius: '16px', - fontFamily: '"Creato", sans-serif', - '&.Mui-focused fieldset': { - borderColor: colors.orangeColor, - borderWidth: '2px' - } - } - }} - /> - - {isLoading ? ( - - - - ) : ( - - {filteredStands.map(stand => ( - - - - - {stand.name || `Article ${stand.articleId}`} - - - ${stand.price?.toFixed(2)} - - - - - - ))} - - )} - - - - - ); + + ))} + + )} + + + + + ); } diff --git a/src/themes/colors.ts b/src/themes/colors.ts index ec7a236..9e653e0 100644 --- a/src/themes/colors.ts +++ b/src/themes/colors.ts @@ -1,9 +1,9 @@ const EColors = { - whiteColor: '#F8FFED', - greenColor: '#ABE158', - orangeColor: '#FD9B08', - purpleColor: '#06170E', - blackColor: '#747474', -} + whiteColor: "#F8FFED", + greenColor: "#ABE158", + orangeColor: "#FD9B08", + purpleColor: "#06170E", + blackColor: "#747474", +}; -export default EColors; \ No newline at end of file +export default EColors; diff --git a/src/themes/theme.tsx b/src/themes/theme.tsx index f8b20a1..18816a8 100644 --- a/src/themes/theme.tsx +++ b/src/themes/theme.tsx @@ -1,42 +1,42 @@ -import { createTheme } from '@mui/material'; -import colors from './colors'; +import { createTheme } from "@mui/material"; +import colors from "./colors"; const theme = createTheme({ - palette: { - primary: { - main: colors.whiteColor, - } + palette: { + primary: { + main: colors.whiteColor, }, - typography: { - fontFamily: ['"Creato", sans-serif'].join(','), - fontSize: 16, + }, + typography: { + fontFamily: ['"Creato", sans-serif'].join(","), + fontSize: 16, + }, + components: { + MuiButton: { + styleOverrides: { + root: { + borderRadius: "30px", + backgroundColor: colors.whiteColor, + border: `2.5px solid ${colors.orangeColor}`, + padding: "8px 24px", + }, + }, }, - components: { - MuiButton: { - styleOverrides: { - root: { - borderRadius: '30px', - backgroundColor: colors.whiteColor, - border: `2.5px solid ${colors.orangeColor}`, - padding: '8px 24px', - } - } + MuiGrid: { + styleOverrides: { + root: { + // backgroundColor: colors.whiteColor, }, - MuiGrid:{ - styleOverrides: { - root: { - // backgroundColor: colors.whiteColor, - } - } + }, + }, + MuiStack: { + styleOverrides: { + root: { + // backgroundColor: colors.whiteColor, }, - MuiStack:{ - styleOverrides: { - root: { - // backgroundColor: colors.whiteColor, - } - } - } - } + }, + }, + }, }); -export default theme; \ No newline at end of file +export default theme; From 5d64e7c15ad5127a836dbc42d25f773bfb853d88 Mon Sep 17 00:00:00 2001 From: Petru Braha Date: Fri, 13 Mar 2026 22:33:43 +0200 Subject: [PATCH 34/34] feat: use generated models --- src/App.tsx | 6 ++-- .../itinerary-preview-page.tsx | 4 +-- .../stand-selection-page.tsx | 16 ++++------ .../store-selection-page.tsx | 29 +++++-------------- 4 files changed, 18 insertions(+), 37 deletions(-) rename src/pages/{itinerary-preview => }/itinerary-preview-page.tsx (96%) rename src/pages/{stand-selection => }/stand-selection-page.tsx (96%) rename src/pages/{store-selection => }/store-selection-page.tsx (91%) diff --git a/src/App.tsx b/src/App.tsx index 678bbf6..bb62591 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,9 +3,9 @@ import { CssBaseline } from "@mui/material"; import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; import HomePage from "./pages/home-page"; -import StoreSelectionPage from "./pages/store-selection/store-selection-page"; -import StandSelectionPage from "./pages/stand-selection/stand-selection-page"; -import ItineraryPreviewPage from "./pages/itinerary-preview/itinerary-preview-page"; +import StoreSelectionPage from "./pages/store-selection-page"; +import StandSelectionPage from "./pages/stand-selection-page"; +import ItineraryPreviewPage from "./pages/itinerary-preview-page"; import CustomBackground from "./components/background/background"; import "./app.css"; diff --git a/src/pages/itinerary-preview/itinerary-preview-page.tsx b/src/pages/itinerary-preview-page.tsx similarity index 96% rename from src/pages/itinerary-preview/itinerary-preview-page.tsx rename to src/pages/itinerary-preview-page.tsx index ee487fa..207e202 100644 --- a/src/pages/itinerary-preview/itinerary-preview-page.tsx +++ b/src/pages/itinerary-preview-page.tsx @@ -7,8 +7,8 @@ import { CardContent, } from "@mui/material"; import { useNavigate } from "react-router-dom"; -import colors from "../../themes/colors"; -import MenuBar from "../../components/menu/menu-bar"; +import colors from "../themes/colors"; +import MenuBar from "../components/menu/menu-bar"; export default function ItineraryPreviewPage() { const navigate = useNavigate(); diff --git a/src/pages/stand-selection/stand-selection-page.tsx b/src/pages/stand-selection-page.tsx similarity index 96% rename from src/pages/stand-selection/stand-selection-page.tsx rename to src/pages/stand-selection-page.tsx index 0b52496..e8447d7 100644 --- a/src/pages/stand-selection/stand-selection-page.tsx +++ b/src/pages/stand-selection-page.tsx @@ -12,17 +12,9 @@ import { CircularProgress, } from "@mui/material"; import { useParams, useNavigate } from "react-router-dom"; -import colors from "../../themes/colors"; -import MenuBar from "../../components/menu/menu-bar"; - -export interface StandSummary { - storeId: string; - standId: string; - articleId: string; - edgeId: string; - name?: string; // extended locally for UI - price?: number; // extended locally for UI -} +import colors from "../themes/colors"; +import MenuBar from "../components/menu/menu-bar"; +import type { StandSummary } from "@inandout/client"; export default function StandSelectionPage() { const { storeId } = useParams(); @@ -41,6 +33,8 @@ export default function StandSelectionPage() { edgeId: "edge-uuid", name: `Grocery Item ${i + 1}`, price: Number((Math.random() * 20).toFixed(2)), + createdAt: new Date(), + updatedAt: new Date(), })); useEffect(() => { diff --git a/src/pages/store-selection/store-selection-page.tsx b/src/pages/store-selection-page.tsx similarity index 91% rename from src/pages/store-selection/store-selection-page.tsx rename to src/pages/store-selection-page.tsx index 4dabdfa..a3b132d 100644 --- a/src/pages/store-selection/store-selection-page.tsx +++ b/src/pages/store-selection-page.tsx @@ -1,4 +1,5 @@ import { useState, useEffect } from "react"; +import { useNavigate } from "react-router-dom"; import { Box, Typography, @@ -11,22 +12,9 @@ import { CircularProgress, Grid, } from "@mui/material"; -import { useNavigate } from "react-router-dom"; -import colors from "../../themes/colors"; -import MenuBar from "../../components/menu/menu-bar"; - -export interface StoreSummary { - storeId: string; - name: string; - brandId: string; - description: string; - imageUrl: string; - geoCoordinates: any; - operatingHoursMap: any; - timezone: string; - createdAt: string; - updatedAt: string; -} +import colors from "../themes/colors"; +import MenuBar from "../components/menu/menu-bar"; +import type { StoreSummary } from "@inandout/client"; const ITEMS_PER_PAGE = 6; @@ -43,15 +31,14 @@ export default function StoreSelectionPage() { brandId: `brand-uuid`, description: `Your favourite shopping center, ensuring fast routing and the freshest products available!`, imageUrl: `https://loremflickr.com/400/300/store?random=${i}`, - geoCoordinates: {}, + geoCoordinates: { longitude: 12, latitude: 12 }, operatingHoursMap: {}, - timezone: "CET", - createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), + timezone: 123, + createdAt: new Date(), + updatedAt: new Date(), })); useEffect(() => { - // According to user prompt: api call to /host/stores fetch("/host/stores") .then((res) => res.json()) .then((data) => {

    CPY_JgdB7a zWeZihAHz*sSvPJ1=z@aX3u@|HXLnzDX8TX!(^KxddPWM=^{&|6_p#8? zD5zB>@rDs%^G5j5Ciu}t_|Yc#(MI^urkPxmvQZ|O_U~}%vz|7Aj%pFHIYtyp{#zDq zt*{*_-T&p~$~j@6vXRPnbZ-(dBBr~Sur6lT@};KS4;IARX3d;EbVx#J!*WFvvh{iD zO|zg|e%#-csW<5kB0zivJM}}H1Z*rA%i%|ay;wU(>W1Z8{%+g3V|yg;;eB!{b!H=V^0IC7=PjNxDKnAdmRLjs*+=4b2~QoY<}qVpF0JO&Y7(>7l%`MH?7+C4++4b^ z#*SNU^2Gjr>d8SLq?%yr!NNic?8-)sfg%M`g^C{FaGEVvQ+_{gl9E1<_ikOeXi@IU z49C!M#+xf7(pQz7L(5tD);q`coGf#gw&M#Rb7Hbh!J5Jt3<8FKJU4;mq7x%Ixrq~C zgrEuXO4%^(#@vt4^<*%h^GRQW==FAv8gHI#ZlQ5&7qA6H9-P%eM)dFdrhAyfWF9 zh>(a(W{R51Ozn|@G~GDzG3gPUnKA+QptSx^`Nx9e2hJ*eDy1P47KC)P^^{GzGPMpo zpXM2_%k+gBAVKb20Vh~1i_e<_HgVbH#m!@o0fYQYV-ZdCwx)zw2wne+80Up{$DD7y zRdML}K8GoP0ynK{3dy31rbsAlz@D|=nZd}G!Ax@gg9rH%K>c8&cYfgm$l{x^3>-f| zEJ1<&9twxaCA0`_4wl6x6^1YtS_UXIHbJ9hqM$<*WYQw4BqvjqVEw9 zlEYPIL(pIqD;06ZH01U1;uXhlMw76AIhpz{P)xTzyFjlvI-|zTT0OCN3f*(!s>`O{`52{Ij1tJ3Zr_Pv7+FL)CelkL Mp?8?B5gvE^FaO(N5C8xG literal 0 HcmV?d00001 diff --git a/in-out/src/assets/fonts/creato/CreatoDisplay-BlackItalic.otf b/in-out/src/assets/fonts/creato/CreatoDisplay-BlackItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..7c76f006a719a41736061e6ee1c71f797ac8747a GIT binary patch literal 49232 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