diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..438657a9e --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local +.env + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Final recording.gif b/Final recording.gif new file mode 100644 index 000000000..8ec9f9dff Binary files /dev/null and b/Final recording.gif differ diff --git a/Final recording.webm b/Final recording.webm new file mode 100644 index 000000000..ea72a0d53 Binary files /dev/null and b/Final recording.webm differ diff --git a/README.md b/README.md index 0e1211217..e0b56e222 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# [your app name here] +# [BudgetBuddy] CodePath WEB103 Final Project -Designed and developed by: [your names here] +Designed and developed by: [Ayushi Porwal] 🔗 Link to deployed app: @@ -10,40 +10,144 @@ Designed and developed by: [your names here] ### Description and Purpose -[text goes here] +BudgetBuddy helps users manage personal finances by tracking income, expenses, and savings goals. Users can plan budgets, categorize expenses, and visualize financial reports, ensuring better money management and meeting financial goals. ### Inspiration -[text goes here] +Inspired by the challenges of maintaining a personal budget, we created this app to simplify tracking finances and to promote responsible spending habits. ## Tech Stack -Frontend: +Frontend: React, Bootstrap -Backend: +Backend: Express.js, PostgreSQL, Node.js ## Features -### [Name of Feature 1] +### [User Registration & Login System] ✅ -[short description goes here] +[Secure authentication system that allows users to register accounts and log in to manage personal budgets.] + +[Click Me](https://i.imgur.com/UVGqAxr.gif) + +### [Income and Expense Tracking] ✅ + +[Feature enabling users to add, edit, and delete income and expenses, with real-time budget updates.] + +[Click Me](https://i.imgur.com/UVGqAxr.gif) + +### [Expense Categorization] ✅ + +[Categorize expenses into predefined or custom categories for better tracking and analysis.] + +[gif goes here] + +### [ADDITIONAL FEATURES GO HERE - ADD ALL FEATURES HERE IN THE FORMAT ABOVE; you will check these off and add gifs as you complete them] + +### [Savings Goals] ✅ + +[Allows users to set and monitor savings goals with progress tracking.] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + +### [Budget Dashboard] + +[A visual dashboard showing total income, expenses, remaining budget, and categorized breakdowns.] [gif goes here] -### [Name of Feature 2] +### [Expense Filtering and Sorting] ✅ + +[Filter and sort expenses by category, date, or amount for detailed insights.] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + +### [Monthly/Yearly Financial Reports] -[short description goes here] +[Automatically generated reports with charts showing spending trends over time.] [gif goes here] -### [Name of Feature 3] +### [Cloud Backup and Data Restore] -[short description goes here] +[Feature for securely backing up financial data to the cloud and restoring it when needed.] [gif goes here] -### [ADDITIONAL FEATURES GO HERE - ADD ALL FEATURES HERE IN THE FORMAT ABOVE; you will check these off and add gifs as you complete them] + +## Technical Feature List + +### [User Registration & Authentication] ✅ + +[Secure account creation and login system.] +[Password hashing and validation for security.] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + + +### [Database Design] ✅ + +[PostgreSQL database schema for users, transactions, and categories.] +[Relationships: one-to-many (users to transactions) and many-to-many (categories to transactions).] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + +### [API Development] ✅ + +[RESTful API with endpoints for user management, income and expense tracking.] +[Implement GET, POST, PATCH, and DELETE methods with proper naming conventions.] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + +### [Frontend Development] ✅ + +[React-based user interface with components for dashboards and forms.] +[Dynamic routes using React Router for navigation.] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + + +### [Budget Dashboard] ✅ + +[Visual representation of total income, expenses, and remaining budget.] +[Data visualization libraries (e.g., Chart.js) for displaying financial trends.] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + +### [Alerts & Notifications] + +[Implement user notifications for budget limits via email or in-app alerts.] + +[gif goes here] + +### [Expense Management] ✅ + +[Functionality for adding, editing, categorizing, and deleting expenses.] +[Sorting and filtering options for detailed analysis.] + +[Click Me](https://i.imgur.com/1dnVZTT.gif) + + +### [Reports Generation] + +[Monthly and yearly reports with visual charts showing trends.] + +[gif goes here] + +### [Cloud Backup] + +[Integration with cloud services for secure data storage and backup.] + +[gif goes here] + +### [Testing & Deployment] + +Use of unit and integration tests for backend and frontend. +Deployment on Railway with CI/CD pipeline for automatic updates. + ## Installation Instructions -[instructions go here] +[Clone the repository: git clone https://github.com/ayushiporwal13/web103_finalproject.git] +[Install dependencies: npm install] +[Run the app: npm start] diff --git a/README.md - web103_finalproject - Visual Studio Code 2024-10-23 21-07-23.gif b/README.md - web103_finalproject - Visual Studio Code 2024-10-23 21-07-23.gif new file mode 100644 index 000000000..9f38ec214 Binary files /dev/null and b/README.md - web103_finalproject - Visual Studio Code 2024-10-23 21-07-23.gif differ diff --git a/client/README.md b/client/README.md new file mode 100644 index 000000000..f768e33fc --- /dev/null +++ b/client/README.md @@ -0,0 +1,8 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/client/eslint.config.js b/client/eslint.config.js new file mode 100644 index 000000000..238d2e4e6 --- /dev/null +++ b/client/eslint.config.js @@ -0,0 +1,38 @@ +import js from '@eslint/js' +import globals from 'globals' +import react from 'eslint-plugin-react' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + settings: { react: { version: '18.3' } }, + plugins: { + react, + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + ...reactHooks.configs.recommended.rules, + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/client/index.html b/client/index.html new file mode 100644 index 000000000..4593ffb3a --- /dev/null +++ b/client/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + Budget Buddy + + + +
+ + + + \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json new file mode 100644 index 000000000..f90e9748c --- /dev/null +++ b/client/package-lock.json @@ -0,0 +1,6217 @@ +{ + "name": "budgetbuddy", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "budgetbuddy", + "version": "0.0.0", + "dependencies": { + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@material-ui/core": "^4.12.4", + "@mui/icons-material": "^6.1.6", + "@mui/material": "^6.1.6", + "axios": "^1.7.7", + "bootstrap": "^5.3.3", + "chart.js": "^4.4.6", + "d3": "^7.9.0", + "jspdf": "^2.5.2", + "react": "^18.3.1", + "react-bootstrap": "^2.10.5", + "react-chartjs-2": "^5.2.0", + "react-dom": "^18.3.1", + "react-router-dom": "^6.28.0", + "vite": "^5.4.9" + }, + "devDependencies": { + "@eslint/js": "^9.13.0", + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "@vitejs/plugin-react": "^4.3.3", + "eslint": "^9.13.0", + "eslint-plugin-react": "^7.37.1", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.13", + "globals": "^15.11.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.9.tgz", + "integrity": "sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.25.9", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.9.tgz", + "integrity": "sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.9.tgz", + "integrity": "sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helpers": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9", + "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.25.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.9.tgz", + "integrity": "sha512-omlUGkr5EaoIJrhLf9CJ0TvjBRpd9+AXRG//0GEQ9THSo8wPiTlbpy1/Ow8ZTrbXpjd9FHXfbFQx32I04ht0FA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.9.tgz", + "integrity": "sha512-TvLZY/F3+GvdRYFZFyxMvnsKi+4oJdgZzU3BoGN9Uc2d9C6zfNwJcKKhjqLAhK8i46mv93jsO74fDh3ih6rpHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.9.tgz", + "integrity": "sha512-oKWp3+usOJSzDZOucZUAMayhPz/xVjzymyDzUN8dk0Wd3RWMlGLXi07UCQ/CgQVb8LvXx3XBajJH4XGgkt7H7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.9.tgz", + "integrity": "sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.9.tgz", + "integrity": "sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", + "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.2.0", + "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/babel-plugin/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/@emotion/cache": { + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@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.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "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.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@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.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz", + "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.1", + "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.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz", + "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==", + "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.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "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.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "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.0", + "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.13.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", + "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz", + "integrity": "sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", + "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", + "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.0", + "@humanwhocodes/retry": "^0.3.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.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "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.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, + "node_modules/@material-ui/core": { + "version": "4.12.4", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", + "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.11.5", + "@material-ui/system": "^4.12.2", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "1.16.1-lts", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0", + "react-transition-group": "^4.4.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/core/node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT" + }, + "node_modules/@material-ui/core/node_modules/@material-ui/styles": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", + "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "clsx": "^1.0.4", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.5.1", + "jss-plugin-camel-case": "^10.5.1", + "jss-plugin-default-unit": "^10.5.1", + "jss-plugin-global": "^10.5.1", + "jss-plugin-nested": "^10.5.1", + "jss-plugin-props-sort": "^10.5.1", + "jss-plugin-rule-value-function": "^10.5.1", + "jss-plugin-vendor-prefixer": "^10.5.1", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/core/node_modules/@material-ui/system": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", + "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.11.3", + "csstype": "^2.5.2", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/core/node_modules/@material-ui/utils": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", + "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@material-ui/core/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@material-ui/core/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "license": "MIT" + }, + "node_modules/@material-ui/types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.6.tgz", + "integrity": "sha512-nz1SlR9TdBYYPz4qKoNasMPRiGb4PaIHFkzLzhju0YVYS5QSuFF2+n7CsiHMIDcHv3piPu/xDWI53ruhOqvZwQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.6.tgz", + "integrity": "sha512-5r9urIL2lxXb/sPN3LFfFYEibsXJUb986HhhIeu1gOcte460pwdSiEhBSxkAuyT8Dj7jvu9MjqSBmSumQELo8A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^6.1.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": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.6.tgz", + "integrity": "sha512-1yvejiQ/601l5AK3uIdUlAVElyCxoqKnl7QA+2oFB/2qYPWfRwDgavW/MoywS5Y2gZEslcJKhe0s2F3IthgFgw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/core-downloads-tracker": "^6.1.6", + "@mui/system": "^6.1.6", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.6", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.3.1", + "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": "^6.1.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/material/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/@mui/private-theming": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.6.tgz", + "integrity": "sha512-ioAiFckaD/fJSnTrUMWgjl9HYBWt7ixCh7zZw7gDZ+Tae7NuprNV6QJK95EidDT7K0GetR2rU3kAeIR61Myttw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/utils": "^6.1.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": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.6.tgz", + "integrity": "sha512-I+yS1cSuSvHnZDBO7e7VHxTWpj+R7XlSZvTC4lS/OIbUNJOMMSd3UDP6V2sfwzAdmdDNBi7NGCRv2SZ6O9hGDA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@emotion/cache": "^11.13.1", + "@emotion/serialize": "^1.3.2", + "@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": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.6.tgz", + "integrity": "sha512-qOf1VUE9wK8syiB0BBCp82oNBAVPYdj4Trh+G1s+L+ImYiKlubWhhqlnvWt3xqMevR+D2h1CXzA1vhX2FvA+VQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/private-theming": "^6.1.6", + "@mui/styled-engine": "^6.1.6", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.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.2.19", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz", + "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.6.tgz", + "integrity": "sha512-sBS6D9mJECtELASLM+18WUcXF6RH3zNxBRFeyCRg8wad6NbyNrdxLuwK+Ikvc38sTZwBzAz691HmSofLqHd9sQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/types": "^7.2.19", + "@types/prop-types": "^15.7.13", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.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/utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/@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/@react-aria/ssr": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.6.tgz", + "integrity": "sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz", + "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.9.0.tgz", + "integrity": "sha512-M/k/ILBXbEIFn0wSGuJYqscih7gwMcnVwv44kgHZ344sjLoO2vFK8AtkMGXx2sEANDwxEPoDhjhfIDDvrvCBCA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "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.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "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.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "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/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.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "license": "MIT" + }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz", + "integrity": "sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "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": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-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/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "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": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "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/canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/canvg/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT", + "optional": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chart.js": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.6.tgz", + "integrity": "sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" + }, + "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": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/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/core-js": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "license": "MIT", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "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/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/dompurify": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz", + "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optional": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.45", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.45.tgz", + "integrity": "sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw==", + "dev": true, + "license": "ISC" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.4", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.3", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "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": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", + "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.7.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.13.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.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", + "text-table": "^0.2.0" + }, + "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": { + "version": "7.37.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", + "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.1.0", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.13.tgz", + "integrity": "sha512-f1EppwrpJRWmqDTyvAyomFVDYRtrS7iTEqv3nokETnMiMzs2SSTmKRTACce4O2p4jYyowiSMvpdwC/RLcMFhuQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "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.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "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/eslint/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/eslint/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/eslint/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/eslint/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/eslint/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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/eslint/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/espree": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.1.0" + }, + "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/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, + "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.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "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/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "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/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "license": "MIT", + "optional": true, + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "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/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "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-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==", + "license": "MIT" + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "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/iterator.prototype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "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/jspdf": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz", + "integrity": "sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.8.1" + }, + "optionalDependencies": { + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.5.4", + "html2canvas": "^1.0.0-rc.5" + } + }, + "node_modules/jss": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/jss" + } + }, + "node_modules/jss-plugin-camel-case": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-default-unit": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-global": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-nested": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-props-sort": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-rule-value-function": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-vendor-prefixer": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "10.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "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/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "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.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "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.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "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/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT", + "optional": true + }, + "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/popper.js": { + "version": "1.16.1-lts", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", + "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==", + "license": "MIT" + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "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-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "license": "MIT", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.5.tgz", + "integrity": "sha512-XueAOEn64RRkZ0s6yzUTdpFtdUXs5L5491QU//8ZcODKJNDLt/r01tNyriZccjgRImH1REynUc9pqjiRMpDLWQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.9", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-chartjs-2": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz", + "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==", + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "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/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.28.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz", + "integrity": "sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.21.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.28.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.0.tgz", + "integrity": "sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.21.0", + "react-router": "6.28.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "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/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "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/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "license": "MIT OR SEE LICENSE IN FEEL-FREE.md", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "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-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "license": "MIT", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-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/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "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.0" + }, + "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/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "license": "MIT", + "optional": true, + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/vite": { + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "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/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "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/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" + } + } + } +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 000000000..dad6ecaff --- /dev/null +++ b/client/package.json @@ -0,0 +1,42 @@ +{ + "name": "budgetbuddy", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview", + "start": "vite build && vite" + }, + "dependencies": { + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@material-ui/core": "^4.12.4", + "@mui/icons-material": "^6.1.6", + "@mui/material": "^6.1.6", + "axios": "^1.7.7", + "bootstrap": "^5.3.3", + "chart.js": "^4.4.6", + "d3": "^7.9.0", + "jspdf": "^2.5.2", + "react": "^18.3.1", + "react-bootstrap": "^2.10.5", + "react-chartjs-2": "^5.2.0", + "react-dom": "^18.3.1", + "react-router-dom": "^6.28.0", + "vite": "^5.4.9" + }, + "devDependencies": { + "@eslint/js": "^9.13.0", + "@types/react": "^17.0.0", + "@types/react-dom": "^18.3.1", + "@vitejs/plugin-react": "^4.3.3", + "eslint": "^9.13.0", + "eslint-plugin-react": "^7.37.1", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.13", + "globals": "^15.11.0" + } +} diff --git a/client/public/budgetBuddy.png b/client/public/budgetBuddy.png new file mode 100644 index 000000000..ef0b919de Binary files /dev/null and b/client/public/budgetBuddy.png differ diff --git a/client/public/vite.svg b/client/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/client/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/App.css b/client/src/App.css new file mode 100644 index 000000000..76b69dbdb --- /dev/null +++ b/client/src/App.css @@ -0,0 +1,36 @@ +#root { + width: 100%; + margin: 0 auto; + padding: 2rem; + text-align: center; + background-color: #0f1621; + min-height: 91vh; +} + +body { + font-family: "Lato", sans-serif; + background-color: #0f1621; + color: #d6dbe4; + font-size: 1rem; + margin: 0; + padding: 0; +} +a { + color: #f2c069; + text-decoration: none; +} +.app-container { + display: flex; + flex-direction: column; + max-width: 100% !important; + /* height: 100vh; */ +} + +.app-container header{ + background-color: #0f1621; + color: #f2c069; + padding: 1rem; + text-align: center; + font-size: 1.5rem; + border-bottom: 1px solid #f2c069; +} \ No newline at end of file diff --git a/client/src/App.jsx b/client/src/App.jsx new file mode 100644 index 000000000..2fcbe8c94 --- /dev/null +++ b/client/src/App.jsx @@ -0,0 +1,174 @@ +import {useState, useEffect} from "react"; +import { useRoutes } from "react-router-dom"; +import { Container, Typography, Grid2, Button } from "@mui/material"; +import FacebookIcon from "@mui/icons-material/Facebook"; +import InstagramIcon from "@mui/icons-material/Instagram"; +import XIcon from "@mui/icons-material/X"; +import "./App.css"; +import Home from "./pages/Home"; +import Login from "./pages/UserLogin"; +import Income from "./pages/Income"; +import Expense from "./pages/Expense"; +import SavingsGoal from "./pages/SavingsGoal"; +import Report from "./pages/Report"; + +function App() { + const [user, setUser] = useState(null); + const [categories, setCategories] = useState([]); + const API_URL = import.meta.env.VITE_API_URL || ''; + + useEffect(() => { + const fetchUser = async () => { + try { + const res = await fetch(`${API_URL}/auth/login/success`, { + method: "GET", + credentials: "include", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "Access-Control-Allow-Credentials": true, + }, + }); + + const content = await res.json(); + if (content.user) { + setUser(content.user); + } + } catch (error) { + console.log(error); + } + } + + const fetchCategories = async () => { + try { + const response = await fetch("/api/category"); + const categories = await response.json(); + setCategories(categories.data); + } catch (error) { + console.error("Error fetching categories:", error); + } + } + + fetchUser(); + fetchCategories(); + }, []); + + let element = useRoutes([ + { + path: "/", + element: , + }, + { + path: "/login", + element: , + }, + { + path: "/logout", + element:

You have been successfully Logged Out

, + }, + { + path: "/income/:user_id", + element: , + }, + { + path: "/expenses/:user_id", + element: , + }, + { + path: "/savings/:user_id", + element: , + }, + { + path:"/reports/:user_id", + element: , + } + ]); + + const handleLogout = async () => { + try { + await fetch(`${API_URL}/auth/logout`, { + method: "GET", + credentials: "include", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "Access-Control-Allow-Credentials": true, + }, + }); + setUser(null); + } catch (error) { + console.log(error); + } + }; + + return ( + +
+ Budget Buddy Logo + + Budget Buddy + + + Take control of your finances with Budget Buddy. Track your expenses, + set budgets, and achieve your financial goals. + + + + + + + {user !== null ? ( + + ) : ( + + )} + + +
+ {element} + +
+ + + © {new Date().getFullYear()} Budget Buddy. All rights reserved. + +
+
+ ); +} + +export default App; diff --git a/client/src/assets/react.svg b/client/src/assets/react.svg new file mode 100644 index 000000000..6c87de9bb --- /dev/null +++ b/client/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/components/update.jsx b/client/src/components/update.jsx new file mode 100644 index 000000000..a0b7ef879 --- /dev/null +++ b/client/src/components/update.jsx @@ -0,0 +1,234 @@ +/* eslint-disable react/prop-types */ +import { useState } from "react"; +import { Modal, Button, Form } from "react-bootstrap"; +import expenseService from "../services/Expense"; +import incomeService from "../services/Income"; + +const UpdateModal = (props) => { + const { show, setShow, entry, type } = props; + + const [form, setForm] = useState({ ...entry }); + + const handleChange = (e) => { + e.preventDefault(); + setForm({ ...form, [e.target.name]: e.target.value }); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + try { + form.date = new Date(form.date).toISOString(); + if (type === "expense") { + await expenseService.updateExpenses(entry.id, form); + } else if (type === "income") { + await incomeService.updateIncome(entry.id, form); + } + setForm({ ...form, isSubmitting: true }); + + setForm(type === "expense" ? { + user_id: entry.user_id, + amount: "", + description: "", + date: "", + category_id: "", + } : { + user_id: entry.user_id, + amount: "", + source: "", + date: "", + }); + setShow(false); + props.onUpdate(); // Notify parent component about the update + } catch (error) { + console.error("Error updating data:", error); + } + }; + + const handleClose = () => { + setShow(false); + }; + + return ( + + + Update Entry + + +
+ {type === "expense" ? ( + <> + + Category + handleChange(e)} + > + {props.categories.map((category) => ( + + ))} + + + + Amount + handleChange(e)} + /> + + + Description + handleChange(e)} + /> + + + ) : ( + <> + + Source + handleChange(e)} + /> + + + Amount + handleChange(e)} + /> + + + )} + + Date + handleChange(e)} + /> + +
+
+ + + + +
+ ); +}; +// const [form, setForm] = useState({ ...entry }); + +// const handleChange = (e) => { +// e.preventDefault(); +// setForm({ ...form, [e.target.name]: e.target.value }); +// }; + +// const handleSubmit = async (e) => { +// e.preventDefault(); +// try { +// form.date = new Date(form.date).toISOString(); +// await expenseService.updateExpenses(entry.id, form); +// setForm({ ...form, isSubmitting: true }); + +// setForm({ +// user_id: entry.user_id, +// amount: "", +// description: "", +// date: "", +// category_id: "", +// }); +// setShow(false); +// // setEntries(entries.filter((entry) => entry.id !== id)); +// props.onUpdate(); // Notify parent component about the update +// } catch (error) { +// console.error("Error updating data:", error); +// } +// }; + +// const handleClose = () => { +// setShow(false); +// }; + +// return ( +// +// +// Update Entry +// +// +//
+// +// Category +// handleChange(e)} +// > +// {props.categories.map((category) => ( +// +// ))} +// +// +// +// Amount +// handleChange(e)} +// /> +// +// +// Description +// handleChange(e)} +// /> +// +// +// Date +// handleChange(e)} +// /> +// +//
+//
+// +// +// +// +//
+// ); +// }; + +export default UpdateModal; diff --git a/client/src/css/Expense.css b/client/src/css/Expense.css new file mode 100644 index 000000000..0140a0995 --- /dev/null +++ b/client/src/css/Expense.css @@ -0,0 +1,116 @@ +/* Expense.css */ + +body { + font-family: Arial, sans-serif; + background-color: #f4f4f4; + margin: 0; + padding: 0; +} + +h1 { + text-align: center; + color: #57aea5; +} + +form { + max-width: 600px; + margin: 20px auto; + padding: 20px; + background-color: #000; + border: 1px solid #f2c069; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +form div { + margin-bottom: 15px; +} + +label { + display: block; + margin-bottom: 5px; + /* font-weight: bold; */ + color: #f2c069; +} + +.category-label{ + display: flex; + justify-content: center; + flex-wrap: wrap; +} + +.category-label b{ + width: 100%; +} + +input[type="text"], +input[type="number"], +input[type="date"], +select { + width: 100%; + padding: 8px; + margin-top: 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +input[type="radio"] { + margin-right: 10px; +} + +button.add-entry { + display: block; + width: 100%; + padding: 10px; + background-color: #28a745; + color: #fff; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 16px; +} + +button.add-entry:hover { + background-color: #457d58; +} + +button.add-entry:disabled { + background-color: #ccc; +} + +table { + width: 80%; + margin: 20px auto; + border-collapse: collapse; + border:1 px solid #f2c069; +} + +table th, +table td { + padding: 10px; + text-align: left; + border-bottom: 1px solid #ddd; +} + +table th { + background-color: #457d58; +} + +table tr:hover { + background-color: #51514b; +} + +table td button{ + background-color: #457d58; + color: #f2c069; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 16px; +} + +.delete-button{ + margin: 0 10px; + background-color: #dc3545; + color: #ddd; +} \ No newline at end of file diff --git a/client/src/css/Home.css b/client/src/css/Home.css new file mode 100644 index 000000000..faf5c340e --- /dev/null +++ b/client/src/css/Home.css @@ -0,0 +1,90 @@ +/* Home.css */ + +body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; + background-color: #f4f4f4; +} + +.container{ + max-width: 1800px; + margin: 0 auto; + overflow: hidden; +} + +header { + background-color: #333; + color: #fff; + padding: 10px 0; + text-align: center; +} + +header h1 { + margin: 0; + font-size: 2em; +} + +nav { + display: flex; + justify-content: center; + background-color: #444; +} + +nav a { + color: #fff; + padding: 14px 20px; + text-decoration: none; + text-align: center; +} + +nav a:hover { + background-color: #555; +} + +.container { + padding: 20px; +} + +.hero { + background: url('../images/hero.jpg') no-repeat center center/cover; + height: 400px; + display: flex; + justify-content: center; + align-items: center; + color: #fff; + text-align: center; +} + +.hero h2 { + font-size: 3em; + margin: 0; +} + +.features { + display: flex; + justify-content: space-around; + margin: 20px 0; +} + +.feature { + background-color: #fff; + padding: 20px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + width: 30%; + text-align: center; +} + +.feature h3 { + margin-top: 0; +} + +.footer { + background-color: #333; + color: #fff; + text-align: center; + padding: 10px 0; + position: fixed; + width: 100%; + bottom: 0; +} \ No newline at end of file diff --git a/client/src/css/SavingsGoal.css b/client/src/css/SavingsGoal.css new file mode 100644 index 000000000..b31e4c556 --- /dev/null +++ b/client/src/css/SavingsGoal.css @@ -0,0 +1,99 @@ +/* SavingsGoal.css */ + +.container { + max-width: 800px; + margin: 0 auto; + padding: 20px; +} + +h1, h2 { + text-align: center; + color: #f2c069; + width: 100%; +} + +.form-container { + max-width: 600px; + margin: 20px auto; + padding: 20px; + background-color: #000; + border: 1px solid #f2c069; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +input[type="text"], +input[type="number"], +input[type="date"] { + width: calc(100% - 22px); + padding: 10px; + margin: 10px 0; + border: 1px solid #ccc; + border-radius: 4px; +} + +button.add-goal { + display: block; + width: 100%; + padding: 10px; + background-color: #28a745; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + margin-top: 10px; +} + +button.add-goal:hover { + background-color: #f2c069; +} + +.progress-bar { + align-items: center; + width: 80%; + background-color: #e0e0e0; + border-radius: 4px; + overflow: hidden; + margin: 0 auto; +} + +.progress-bar-inner { + height: 24px; + transition: width 0.3s ease-in-out; +} + +table { + width: 80%; + margin: 20px auto; + border-collapse: collapse; +} + +table th, +table td { + padding: 10px; + text-align: left; + border-bottom: 1px solid #ddd; +} + +table th { + background-color: #457d58; +} + +table tr:hover { + background-color: #51514b; +} + +table td button{ + background-color: #457d58; + color: #f2c069; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 16px; +} + +.delete-button{ + margin: 0 10px; + background-color: #dc3545; + color: #ddd; +} \ No newline at end of file diff --git a/client/src/css/UserLogin.css b/client/src/css/UserLogin.css new file mode 100644 index 000000000..0aef903f4 --- /dev/null +++ b/client/src/css/UserLogin.css @@ -0,0 +1,19 @@ +.Login { + display: flex; + justify-content: center; + align-items: center; + font-size: 1.5em; /* Adjust the size as needed */ + padding: 20px; /* Optional: Add some padding */ + margin: 5%; +} + +.headerBtn{ + background-color: #4CAF50; + color: white; + padding: 14px 20px; + margin: 8px 0; + border: none; + cursor: pointer; + width: 100%; + opacity: 0.9; +} \ No newline at end of file diff --git a/client/src/index.css b/client/src/index.css new file mode 100644 index 000000000..48c140d5f --- /dev/null +++ b/client/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, 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; +} + +a { + font-weight: 500; + color: #f2c069; + text-decoration: inherit; +} +a:hover { + color: #f2c069; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #f2c069; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #f2c069; + } + button { + background-color: #f2c069; + } +} diff --git a/client/src/main.jsx b/client/src/main.jsx new file mode 100644 index 000000000..ccaf393b9 --- /dev/null +++ b/client/src/main.jsx @@ -0,0 +1,17 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.jsx' +import { BrowserRouter } from 'react-router-dom' + +createRoot(document.getElementById('root')).render( + + + + + , +) + +// To DOs: +// 1. Dashboard: Total Savings, Total Income, Total Expenses, Total Goals +// 2. Upload pdf or receipts for expenses and income diff --git a/client/src/pages/Expense.jsx b/client/src/pages/Expense.jsx new file mode 100644 index 000000000..4e16bc4d4 --- /dev/null +++ b/client/src/pages/Expense.jsx @@ -0,0 +1,283 @@ +/* eslint-disable react/prop-types */ +import { useState, useEffect } from "react"; +import { useParams } from "react-router-dom"; +import expenseService from "../services/Expense"; +import "../css/Expense.css"; +import UpdateModal from "../components/update"; + +const Expense = (props) => { + const user_id = useParams().user_id; + const categories = props.categories; + const [loading, setLoading] = useState(true); + const [entries, setEntries] = useState([]); + const [filteredEntries, setFilteredEntries] = useState([]); + const [form, setForm] = useState({ + user_id: Number(user_id), + category_id: "", + type: "expense", + amount: "", + description: "", + date: "", + isSubmitting: false, + }); + const [modalData, setModalData] = useState({}); + const [showModal, setShowModal] = useState(false); + + useEffect(() => { + const fetchData = async () => { + try { + const response = await expenseService.getExpenses(user_id); + setEntries(response.data); + } catch (error) { + console.error("Error fetching data:", error); + } finally { + setLoading(false); + } + }; + + fetchData(); + }, [entries, user_id]); + // try { + // const response = await expenseService.updateExpenses(`/api/expenses/update/${expenseid}`, newEntry); + // setEntries([...entries, response.data]); + // } catch (error) { + // console.error('Error updating data:', error); + // } + // }; + + const updateModal = (entry) => { + setShowModal(true); + setModalData(entry); + }; + + const deleteEntry = async (id) => { + try { + await expenseService.deleteExpenses(id); + setEntries(entries.filter((entry) => entry.id !== id)); + } catch (error) { + console.error("Error deleting data:", error); + } + }; + + const addData = async (newEntry) => { + try { + newEntry.user_id = Number(user_id); + newEntry.date = new Date(newEntry.date).toISOString(); + const response = await expenseService.addExpenses(newEntry); + setEntries([...entries, response.data]); + } catch (error) { + console.error("Error adding data:", error); + } + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + setForm({ ...form, isSubmitting: true }); + + await addData(form); + setForm({ + type: "expense", + amount: "", + description: "", + date: "", + category_id: "", + }); + // document.querySelector('input[name="category_id"]:checked').checked = false; + }; + const handleChange = (e) => { + let { name, value } = e.target; + setForm({ ...form, [name]: value }); + }; + + return ( + <> + {user_id === "undefined" ? ( +
+

Please Login to access this page

+
+ ) : ( +
+ {loading && ( +
+ Loading... +
+ )} +

Track Your Expenses

+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+

Tracked Entries

+ + + + + + + + + + + + + {filteredEntries.length !== 0 + ? filteredEntries.map((entry, index) => ( + + + + + + + + )) + : entries.map((entry, index) => ( + + + + + + + {/* */} + + + ))} + +
UserCategoryAmountDescriptionDateActions
{entry.user_id} + { + categories.find( + (category) => category.id === entry.category_id + )?.name + } + {entry.amount}{entry.description} + {new Date(entry.date).toLocaleDateString("en-US", { + timeZone: "UTC", + })} +
{entry.user_id} + { + categories.find( + (category) => category.id === entry.category_id + )?.name + } + {entry.amount}{entry.description}{new Date(entry.date).toLocaleDateString()}Edit + + +
+ {showModal && ( + + )} +
+ )} + + ); +}; + +export default Expense; diff --git a/client/src/pages/Home.jsx b/client/src/pages/Home.jsx new file mode 100644 index 000000000..d9d4b9411 --- /dev/null +++ b/client/src/pages/Home.jsx @@ -0,0 +1,153 @@ +/* eslint-disable react/prop-types */ +import { Container, Typography, Grid2, Paper, Button } from "@mui/material"; +import "../css/Home.css"; +import * as d3 from "d3"; +import { useEffect } from "react"; + +const Home = (props) => { + const id = props?.user?.user_id; + const drawChart = () => { + const data = [12, 36, 45, 60, 20, 65, 75]; + const width = 400; + const height = 200; + const margin = { top: 20, right: 30, bottom: 30, left: 40 }; + + const svg = d3 + .select("#chart") + .append("svg") + .attr("width", width + margin.left + margin.right) + .attr("height", height + margin.top + margin.bottom) + .attr("fill", "black") + .append("g") + .attr("transform", `translate(${margin.left},${margin.top})`); + + const x = d3 + .scaleLinear() + .domain([0, data.length - 1]) + .range([0, width]); + const y = d3 + .scaleLinear() + .domain([0, d3.max(data)]) + .range([height, 0]); + + const line = d3 + .line() + .x((d, i) => x(i)) + .y((d) => y(d)); + + svg + .append("g") + .attr("transform", `translate(0,${height})`) + .call(d3.axisBottom(x).ticks(data.length)); + + svg.append("g").call(d3.axisLeft(y)); + + svg + .append("path") + .datum(data) + .attr("fill", "none") + .attr("stroke", "teal") + .attr("stroke-width", 1.5) + .attr("d", line); + }; + + useEffect(() => { + // drawChart(); + }, [id]); + + return ( + <> + + + + + + + Easily track your daily expenses and categorize them to see where + your money is going. + + + + + + + + Monitor your income sources and keep track of your earnings. + + + + + + + + Set saving goals and track your progress to achieve financial + freedom. + + + + + + + + Set monthly budgets to manage your spending and save more money. + + + + + + + + Generate reports to analyze your spending habits and make informed + financial decisions. + + + + + + {/*
*/} + + ); +}; + +export default Home; diff --git a/client/src/pages/Income.jsx b/client/src/pages/Income.jsx new file mode 100644 index 000000000..c3d42b881 --- /dev/null +++ b/client/src/pages/Income.jsx @@ -0,0 +1,193 @@ +// import "../css/Income.css"; +import { useState, useEffect } from "react"; +import { useParams } from "react-router-dom"; +import UpdateModal from "../components/update"; +import incomeService from "../services/Income"; + +const Income = () => { + const user_id = Number(useParams().user_id); + const [entries, setEntries] = useState([]); + const [filteredEntries, setFilteredEntries] = useState([]); + const [form, setForm] = useState({ + user_id: user_id, + type: "income", + amount: "", + source: "", + date: "", + isSubmitting: false, + }); + const [modalData, setModalData] = useState({}); + const [showModal, setShowModal] = useState(false); + + useEffect(() => { + const fetchData = async () => { + try { + const response = await incomeService.getIncome(user_id); + setEntries(response.data); + } catch (error) { + console.error("Error fetching data:", error); + } + }; + + fetchData(); + }, [entries, user_id]); + + const updateModal = (entry) => { + setShowModal(true); + setModalData(entry); + }; + + const deleteEntry = async (id) => { + try { + await incomeService.deleteIncome(id); + setEntries(entries.filter((entry) => entry.id !== id)); + } catch (error) { + console.error("Error deleting data:", error); + } + }; + + const addData = async (newEntry) => { + try { + newEntry.user_id = user_id; + newEntry.date = new Date(newEntry.date).toISOString(); + const response = await incomeService.addIncome(newEntry); + setEntries([...entries, response.data]); + } catch (error) { + console.error("Error adding data:", error); + } + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + setForm({ ...form, isSubmitting: true }); + + await addData(form); + setForm({ + type: "income", + amount: "", + source: "", + date: "", + }); + }; + + const handleChange = (e) => { + let { name, value } = e.target; + setForm({ ...form, [name]: value }); + }; + + return ( + <> + {isNaN(user_id) ? ( +
+

Please Login to access this page

+
+ ) : ( +
+

Track Your Incomes

+
+
+ +
+
+ +
+
+ +
+ +
+

Tracked Entries

+ + + + + + + + + + + + {filteredEntries.length !== 0 + ? filteredEntries.map((entry, index) => ( + + + + + + + + )) + : entries.map((entry, index) => ( + + + + + + + + ))} + +
UserSourceAmountDateActions
{entry.user_id}{entry.source}{entry.amount}{new Date(entry.date).toLocaleDateString()} + +
{entry.user_id}{entry.source}{entry.amount}{new Date(entry.date).toLocaleDateString()} + + + +
+ {showModal && ( + + )} +
+ )} + + ); +}; + +export default Income; diff --git a/client/src/pages/Report.jsx b/client/src/pages/Report.jsx new file mode 100644 index 000000000..0fd990c9f --- /dev/null +++ b/client/src/pages/Report.jsx @@ -0,0 +1,135 @@ +import React, { useState, useEffect } from "react"; +import axios from "axios"; +import { useParams } from "react-router-dom"; +import { Bar, Line } from "react-chartjs-2"; +// import { saveAs } from 'file-saver'; +import jsPDF from "jspdf"; +import "chart.js/auto"; + +const Report = () => { + const [reportData, setReportData] = useState(null); + const [type, setType] = useState("monthly"); + const [year, setYear] = useState(new Date().getFullYear()); + const [month, setMonth] = useState(new Date().getMonth() + 1); + const user_id = Number(useParams().user_id); + + const API_URL = import.meta.env.VITE_API_URL || ""; + +// useEffect(() => { +// const fetchData = async () => { +// try { +// const response = await axios.get(`${API_URL}/api/report`, { +// params: { user_id, type, year, month }, +// }); +// setReportData(response.data); +// } catch (error) { +// console.error("Error fetching report data:", error); +// } +// }; + +// if (user_id) { +// fetchData(); +// } +// }, [user_id, type, year, month]); + +const handleDownloadPDF = async () => { + try { + const response = await axios.get(`${API_URL}/api/report`, { + params: { user_id, type, year, month }, + }); + + setReportData(response.data); + + const reportData = response.data; + const doc = new jsPDF(); + doc.text("Report", 20, 20); + + console.log('reportData', reportData); + console.log('reportData[0]', reportData[0]); + + let yPosition = 30; + + doc.text(`${type === "monthly" ? `Month: ${month}` : `Year: ${year}`}`, 20, yPosition); + doc.text(`Income: ${reportData[0].total}`, 20, yPosition + 10); + doc.text(`Expenses: ${reportData[1].total}`, 20, yPosition + 20); + yPosition += 30; + + doc.save("report.pdf"); + // window.location = "/report"; + } catch (error) { + console.error("Error downloading report data:", error); + } +}; + +// const incomeData = { +// labels: type === "monthly" ? `Month ${reportData[0].month}` : `Year ${reportData[0].year}`, +// datasets: [ +// { +// label: "Income", +// data: reportData[0].total, +// backgroundColor: "rgba(75, 192, 192, 0.6)", +// }, +// ], +// }; + +// const expensesData = { +// labels: type === "monthly" ? `Month ${reportData[1].month}` : `Year ${reportData[1].year}`, +// datasets: [ +// { +// label: "Expenses", +// data: reportData[1].total, +// backgroundColor: "rgba(255, 99, 132, 0.6)", +// }, +// ], +// }; + + return ( + <> + {isNaN(user_id) ? ( +
+

Please Login to access this page

+
+ ) : ( +
+

Report

+
+ + + {type === "monthly" && ( + + )} +
+ + {reportData && ( +
+ + +
+ )} +
+ )} + + ); +}; + +export default Report; diff --git a/client/src/pages/SavingsGoal.jsx b/client/src/pages/SavingsGoal.jsx new file mode 100644 index 000000000..3a7f24ba6 --- /dev/null +++ b/client/src/pages/SavingsGoal.jsx @@ -0,0 +1,218 @@ +import { useState, useEffect } from "react"; +import { useParams } from "react-router-dom"; +import goalService from "../services/SavingsGoal"; +import "../css/SavingsGoal.css"; + +const SavingsGoal = () => { + const user_id = Number(useParams().user_id); + const [goals, setGoals] = useState([]); + const [newGoal, setNewGoal] = useState({ + user_id: user_id, + goal_name: "", + target_amount: "", + current_amount: "", + deadline: "", + }); + const [progress, setProgress] = useState(0); + + useEffect(() => { + const fetchGoals = async () => { + try { + const response = await goalService.getGoals(user_id); + setGoals(response.data); + } catch (error) { + console.error("Error fetching goals:", error); + } + }; + + fetchGoals(); + }, [newGoal, user_id]); + + const handleInputChange = (e) => { + const { name, value } = e.target; + setNewGoal({ ...newGoal, [name]: value }); + }; + + const handleAddGoal = async () => { + try { + newGoal.user_id = user_id; + newGoal.deadline = new Date(newGoal.deadline).toISOString(); + const addedGoal = await goalService.addGoal(newGoal); + setGoals([...goals, addedGoal]); + setNewGoal({ + user_id: user_id, + goal_name: "", + target_amount: "", + current_amount: "", + deadline: "", + }); + } catch (error) { + console.error("Error adding goal:", error); + } + }; + + const calculateProgress = () => { + const totalAmount = goals.reduce( + (acc, goal) => acc + parseFloat(goal.target_amount), + 0 + ); + const currentAmount = goals.reduce( + (acc, goal) => acc + parseFloat(goal.current_amount || 0), + 0 + ); + setProgress((currentAmount / totalAmount) * 100); + }; + + useEffect(() => { + calculateProgress(); + }, [goals]); + + const [isEditing, setIsEditing] = useState(false); + const [editGoalId, setEditGoalId] = useState(null); + + const handleEditGoal = (id) => { + const goalToEdit = goals.find((goal) => goal.id === id); + setNewGoal({ + ...goalToEdit, + deadline: new Date(goalToEdit.deadline).toISOString().split("T")[0], + }); + setIsEditing(true); + setEditGoalId(id); + }; + + const handleUpdateGoal = async () => { + try { + const updatedGoal = { + ...newGoal, + deadline: new Date(newGoal.deadline).toISOString(), + }; + await goalService.updateGoal(editGoalId, updatedGoal); + setGoals( + goals.map((goal) => (goal.id === editGoalId ? updatedGoal : goal)) + ); + setNewGoal({ + user_id: user_id, + goal_name: "", + target_amount: "", + current_amount: "", + deadline: "", + }); + setIsEditing(false); + setEditGoalId(null); + } catch (error) { + console.error("Error updating goal:", error); + } + }; + + const handleDeleteGoal = async (id) => { + try { + await goalService.deleteGoal(id); + setGoals(goals.filter((goal) => goal.id !== id)); + } catch (error) { + console.error("Error deleting goal:", error); + } +}; + + return ( + <> + {isNaN(user_id) ? ( +
+

Please Login to access this page

+
+ ) : ( +
+

Savings Goals

+
+ + + + + {isEditing ? ( + + ) : ( + + )} +
+
+

Progress

+
+
+
+
+
+

Goals

+ + + + + + + + + + + + {goals?.map((goal) => ( + + + + + + + + ))} + +
Goal NameTarget AmountCurrent AmountDeadlineActions
{goal.goal_name}${goal.target_amount}${goal.current_amount}{new Date(goal.deadline).toLocaleDateString()} + + +
+
+
+ )} + + ); +}; + +export default SavingsGoal; diff --git a/client/src/pages/UserLogin.jsx b/client/src/pages/UserLogin.jsx new file mode 100644 index 000000000..b4d686411 --- /dev/null +++ b/client/src/pages/UserLogin.jsx @@ -0,0 +1,15 @@ +import '../css/UserLogin.css'; + +const UserLogin = (props) => { + // eslint-disable-next-line react/prop-types + const AUTH_URL = `${props.api_url}/auth/github` + return ( + + ); +}; + +export default UserLogin; \ No newline at end of file diff --git a/client/src/services/Expense.jsx b/client/src/services/Expense.jsx new file mode 100644 index 000000000..6c818bb92 --- /dev/null +++ b/client/src/services/Expense.jsx @@ -0,0 +1,51 @@ +import axios from 'axios'; + +const API_URL = import.meta.env.VITE_API_URL + '/api/expense'; + +const getExpenses = async (user_id) => { + const response = await axios.get(`${API_URL}/${user_id}`); + return response.data; +}; + +const getExpensesById = async (id) => { + const response = await axios.get(`${API_URL}/${id}`); + return response.data; +} + +const addExpenses = async (expenseData) => { + const response = await fetch(`${API_URL}/add`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(expenseData), + }); + + // const response = await axios.post(`${API_URL}/add`, expenseData); + const data = await response.json(); + if (response.status >= 400) { + throw new Error(data.errors); + } + + return data; +}; + +const updateExpenses = async (id, expenseData) => { + const response = await axios.put(`${API_URL}/update/${id}`, expenseData); + return response.data; +}; + +const deleteExpenses = async (id) => { + const response = await axios.delete(`${API_URL}/delete/${id}`); + return response.data; +}; + +const expenseService = { + getExpenses, + getExpensesById, + addExpenses, + updateExpenses, + deleteExpenses, +}; + +export default expenseService; \ No newline at end of file diff --git a/client/src/services/Income.jsx b/client/src/services/Income.jsx new file mode 100644 index 000000000..d97ff76dd --- /dev/null +++ b/client/src/services/Income.jsx @@ -0,0 +1,63 @@ +import axios from 'axios'; + +const API_URL = import.meta.env.VITE_API_URL + '/api/income'; + +const getIncome = async (user_id) => { + try { + const response = await axios.get(`${API_URL}/${user_id}`); + return response.data; + } catch (error) { + console.error('Error fetching income:', error); + throw error; + } +}; + +const getIncomeById = async (id) => { + try { + const response = await axios.get(`${API_URL}/${id}`); + return response.data; + } catch (error) { + console.error(`Error fetching income with id ${id}:`, error); + throw error; + } +}; + +const addIncome = async (incomeData) => { + try { + const response = await axios.post(`${API_URL}/add`, incomeData); + return response.data; + } catch (error) { + console.error('Error adding income:', error); + throw error; + } +}; + +const updateIncome = async (id, incomeData) => { + try { + const response = await axios.put(`${API_URL}/update/${id}`, incomeData); + return response.data; + } catch (error) { + console.error(`Error updating income with id ${id}:`, error); + throw error; + } +}; + +const deleteIncome = async (id) => { + try { + const response = await axios.delete(`${API_URL}/delete/${id}`); + return response.data; + } catch (error) { + console.error(`Error deleting income with id ${id}:`, error); + throw error; + } +}; + +const incomeService = { + getIncome, + getIncomeById, + addIncome, + updateIncome, + deleteIncome, +}; + +export default incomeService; \ No newline at end of file diff --git a/client/src/services/SavingsGoal.jsx b/client/src/services/SavingsGoal.jsx new file mode 100644 index 000000000..5b281ca77 --- /dev/null +++ b/client/src/services/SavingsGoal.jsx @@ -0,0 +1,52 @@ +import axios from 'axios'; + +const API_URL = import.meta.env.VITE_API_URL + '/api/goal'; + +const getGoals = async (user_id) => { + try { + const response = await axios.get(`${API_URL}/${user_id}`); + return response.data; + } catch (error) { + console.error('Error fetching goals:', error); + throw error; + } +}; + +const addGoal = async (goalData) => { + try { + const response = await axios.post(`${API_URL}`, goalData); + return response.data; + } catch (error) { + console.error('Error adding goal:', error); + throw error; + } +}; + +const updateGoal = async (id, goalData) => { + try { + const response = await axios.put(`${API_URL}/${id}`, goalData); + return response.data; + } catch (error) { + console.error(`Error updating goal with id ${id}:`, error); + throw error; + } +}; + +const deleteGoal = async (id) => { + try { + const response = await axios.delete(`${API_URL}/${id}`); + return response.data; + } catch (error) { + console.error(`Error deleting goal with id ${id}:`, error); + throw error; + } +}; + +const goalService = { + getGoals, + addGoal, + updateGoal, + deleteGoal, +}; + +export default goalService; \ No newline at end of file diff --git a/client/vite.config.js b/client/vite.config.js new file mode 100644 index 000000000..84bbd4a23 --- /dev/null +++ b/client/vite.config.js @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + build: { + outDir: '../server/public', + emptyOutDir: true + }, + server: { + proxy: { + '/api': { + target: 'http://localhost:3000' + } + } + } +}) \ No newline at end of file diff --git a/client/vite.config.js.timestamp-1732140444068-168c7d3f35656.mjs b/client/vite.config.js.timestamp-1732140444068-168c7d3f35656.mjs new file mode 100644 index 000000000..a7969dc5d --- /dev/null +++ b/client/vite.config.js.timestamp-1732140444068-168c7d3f35656.mjs @@ -0,0 +1,17 @@ +// vite.config.js +import { defineConfig } from "file:///C:/Users/aporwal/Downloads/CSU_Learning_Journey/Codepath/WEB%20103/Unit%205/web103_finalproject/client/node_modules/vite/dist/node/index.js"; +import react from "file:///C:/Users/aporwal/Downloads/CSU_Learning_Journey/Codepath/WEB%20103/Unit%205/web103_finalproject/client/node_modules/@vitejs/plugin-react/dist/index.mjs"; +var vite_config_default = defineConfig({ + plugins: [react()], + server: { + proxy: { + "/api": { + target: "http://localhost:3000" + } + } + } +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxVc2Vyc1xcXFxhcG9yd2FsXFxcXERvd25sb2Fkc1xcXFxDU1VfTGVhcm5pbmdfSm91cm5leVxcXFxDb2RlcGF0aFxcXFxXRUIgMTAzXFxcXFVuaXQgNVxcXFx3ZWIxMDNfZmluYWxwcm9qZWN0XFxcXGNsaWVudFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcYXBvcndhbFxcXFxEb3dubG9hZHNcXFxcQ1NVX0xlYXJuaW5nX0pvdXJuZXlcXFxcQ29kZXBhdGhcXFxcV0VCIDEwM1xcXFxVbml0IDVcXFxcd2ViMTAzX2ZpbmFscHJvamVjdFxcXFxjbGllbnRcXFxcdml0ZS5jb25maWcuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0M6L1VzZXJzL2Fwb3J3YWwvRG93bmxvYWRzL0NTVV9MZWFybmluZ19Kb3VybmV5L0NvZGVwYXRoL1dFQiUyMDEwMy9Vbml0JTIwNS93ZWIxMDNfZmluYWxwcm9qZWN0L2NsaWVudC92aXRlLmNvbmZpZy5qc1wiO2ltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgcmVhY3QgZnJvbSAnQHZpdGVqcy9wbHVnaW4tcmVhY3QnXG5cbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICBwbHVnaW5zOiBbcmVhY3QoKV0sXG4gIHNlcnZlcjoge1xuICAgIHByb3h5OiB7XG4gICAgICAnL2FwaSc6IHtcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xuICAgICAgfVxuICAgIH1cbiAgfVxufSkiXSwKICAibWFwcGluZ3MiOiAiO0FBQWdmLFNBQVMsb0JBQW9CO0FBQzdnQixPQUFPLFdBQVc7QUFHbEIsSUFBTyxzQkFBUSxhQUFhO0FBQUEsRUFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUFBLEVBQ2pCLFFBQVE7QUFBQSxJQUNOLE9BQU87QUFBQSxNQUNMLFFBQVE7QUFBQSxRQUNOLFFBQVE7QUFBQSxNQUNWO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo= diff --git a/milestones/milestone1.md b/milestones/milestone1.md index a8f086378..71392060d 100644 --- a/milestones/milestone1.md +++ b/milestones/milestone1.md @@ -6,26 +6,26 @@ This document should be completed and submitted during **Unit 5** of this course This unit, be sure to complete all tasks listed below. To complete a task, place an `x` between the brackets. -- [ ] Read and understand all required features - - [ ] Understand you **must** implement **all** baseline features and **two** custom features -- [ ] In `readme.md`: update app name -- [ ] In `readme.md`: add all group members' names -- [ ] In `readme.md`: complete the **Description and Purpose** section -- [ ] In `readme.md`: complete the **Inspiration** section -- [ ] In `readme.md`: list all features you intend to include in your app (in future units, you will check off features as you complete them and add GIFs demonstrating the features) -- [ ] In `planning/user_stories.md`: add all user stories -- [ ] In this document, complete the **Reflection** section below +- [x] Read and understand all required features + - [x] Understand you **must** implement **all** baseline features and **two** custom features +- [x] In `readme.md`: update app name +- [x] In `readme.md`: add all group members' names +- [x] In `readme.md`: complete the **Description and Purpose** section +- [x] In `readme.md`: complete the **Inspiration** section +- [x] In `readme.md`: list all features you intend to include in your app (in future units, you will check off features as you complete them and add GIFs demonstrating the features) +- [x] In `planning/user_stories.md`: add all user stories +- [x] In this document, complete the **Reflection** section below ## Reflection ### 1. What went well during this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I was able to work on a project that I wanted to work from a very long time.] ### 2. What were some challenges your group faced in this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 We were not able to meet at the decided time, so had to complete this project on my own.] ### 3. What additional support will you need in upcoming units as you continue to work on your final project? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 More team work] diff --git a/milestones/milestone2.md b/milestones/milestone2.md index 7d7687f1e..f4b4b8587 100644 --- a/milestones/milestone2.md +++ b/milestones/milestone2.md @@ -6,22 +6,22 @@ This document should be completed and submitted during **Unit 6** of this course This unit, be sure to complete all tasks listed below. To complete a task, place an `x` between the brackets. -- [ ] In `planning/wireframes.md`: add wireframes for at least three pages in your web app -- [ ] In `planning/entity_relationship_diagram.md`: add the entity relationship diagram you developed for your database -- [ ] Prepare your three-minute pitch presentation, to be presented during Unit 7 (the next unit) - - [ ] You do **not** need to submit any materials in advance of your pitch -- [ ] In this document, complete the **Reflection** section below +- [x] In `planning/wireframes.md`: add wireframes for at least three pages in your web app +- [x] In `planning/entity_relationship_diagram.md`: add the entity relationship diagram you developed for your database +- [x] Prepare your three-minute pitch presentation, to be presented during Unit 7 (the next unit) +- [x] You do **not** need to submit any materials in advance of your pitch +- [x] In this document, complete the **Reflection** section below ## Reflection ### 1. What went well during this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 Everyone contriubuted and we all had a good week] ### 2. What were some challenges your group faced in this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 Merging of branches] ### 3. What additional support will you need in upcoming units as you continue to work on your final project? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 Time to complete on the project during the class] diff --git a/milestones/milestone3.md b/milestones/milestone3.md index 74f5aa99a..77baf2bd7 100644 --- a/milestones/milestone3.md +++ b/milestones/milestone3.md @@ -8,33 +8,33 @@ This unit, be sure to complete all tasks listed below. To complete a task, place You will need to reference the GitHub Project Management guide in the course portal for more information about how to complete each of these steps. -- [ ] Create a project board associated with this repo -- [ ] In this repo, create GitHub milestones for each of the remaining milestones in this unit -- [ ] In this repo, create issues for each feature on your feature list - - [ ] Make sure to add the issues to your project board and to the appropriate milestones -- [ ] Update the status of issues in your project board as you complete them -- [ ] In `readme.md`, check off the features you have completed in this unit by adding a ✅ emoji in front of their title - - [ ] Under each feature you have completed, **include a GIF** showing feature functionality -- [ ] In this document, complete the **Reflection** section below +- [x] Create a project board associated with this repo +- [x] In this repo, create GitHub milestones for each of the remaining milestones in this unit +- [x] In this repo, create issues for each feature on your feature list + - [x] Make sure to add the issues to your project board and to the appropriate milestones +- [x] Update the status of issues in your project board as you complete them +- [x] In `readme.md`, check off the features you have completed in this unit by adding a ✅ emoji in front of their title + - [x] Under each feature you have completed, **include a GIF** showing feature functionality +- [x] In this document, complete the **Reflection** section below ## Reflection ### 1. What went well during this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I was able to work on my own] ### 2. What were some challenges your group faced in this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 Coordinated with the team mates] ### Did you finish all of your tasks in your sprint plan for this week? If you did not finish all of the planned tasks, how would you prioritize the remaining tasks on your list? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I will start working on the task in the further week] ### Which features and user stories would you consider “at risk”? How will you change your plan if those items remain “at risk”? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I will start working on the task in the further week ] ### 5. What additional support will you need in upcoming units as you continue to work on your final project? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 N/A] diff --git a/milestones/milestone4.md b/milestones/milestone4.md index 8c781fd23..2b5f2fba6 100644 --- a/milestones/milestone4.md +++ b/milestones/milestone4.md @@ -6,29 +6,29 @@ This document should be completed and submitted during **Unit 8** of this course This unit, be sure to complete all tasks listed below. To complete a task, place an `x` between the brackets. -- [ ] Update the status of issues in your project board as you complete them -- [ ] In `readme.md`, check off the features you have completed in this unit by adding a ✅ emoji in front of their title - - [ ] Under each feature you have completed, **include a GIF** showing feature functionality -- [ ] In this document, complete the **Reflection** section below +- [x] Update the status of issues in your project board as you complete them +- [x] In `readme.md`, check off the features you have completed in this unit by adding a ✅ emoji in front of their title + - [x] Under each feature you have completed, **include a GIF** showing feature functionality +- [x] In this document, complete the **Reflection** section below ## Reflection ### 1. What went well during this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I understood the concept of github authorization] ### 2. What were some challenges your group faced in this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 Developing the stories is taking a lot of time] ### Did you finish all of your tasks in your sprint plan for this week? If you did not finish all of the planned tasks, how would you prioritize the remaining tasks on your list? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I will start working on the task in the further week] ### Which features and user stories would you consider “at risk”? How will you change your plan if those items remain “at risk”? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I will start working on the task in the further week] ### 5. What additional support will you need in upcoming units as you continue to work on your final project? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 N/A] diff --git a/milestones/milestone5.md b/milestones/milestone5.md index 2f582b179..58aa7d4ae 100644 --- a/milestones/milestone5.md +++ b/milestones/milestone5.md @@ -6,15 +6,15 @@ This document should be completed and submitted during **Unit 9** of this course This unit, be sure to complete all tasks listed below. To complete a task, place an `x` between the brackets. -- [ ] Deploy your project on Railway - - [ ] In `readme.md`, add the link to your deployed project -- [ ] Update the status of issues in your project board as you complete them -- [ ] In `readme.md`, check off the features you have completed in this unit by adding a ✅ emoji in front of their title - - [ ] Under each feature you have completed, **include a GIF** showing feature functionality -- [ ] In this document, complete the **Reflection** section below -- [ ] 🚩🚩🚩**Complete the Final Project Feature Checklist section below**, detailing each feature you completed in the project (ONLY include features you implemented, not features you planned) -- [ ] 🚩🚩🚩**Record a GIF showing a complete run-through of your app** that displays all the components included in the **Final Project Feature Checklist** below - - [ ] Include this GIF in the **Final Demo GIF** section below +- [x] Deploy your project on Railway + - [x] In `readme.md`, add the link to your deployed project +- [x] Update the status of issues in your project board as you complete them +- [x] In `readme.md`, check off the features you have completed in this unit by adding a ✅ emoji in front of their title + - [x] Under each feature you have completed, **include a GIF** showing feature functionality +- [x] In this document, complete the **Reflection** section below +- [x] 🚩🚩🚩**Complete the Final Project Feature Checklist section below**, detailing each feature you completed in the project (ONLY include features you implemented, not features you planned) +- [x] 🚩🚩🚩**Record a GIF showing a complete run-through of your app** that displays all the components included in the **Final Project Feature Checklist** below + - [x] Include this GIF in the **Final Demo GIF** section below ## Final Project Feature Checklist @@ -24,73 +24,73 @@ Complete the checklist below detailing each baseline, custom, and stretch featur 👉🏾👉🏾👉🏾 Check off each completed feature below. -- [ ] The project includes an Express backend app and a React frontend app -- [ ] The project includes these backend-specific features: - - [ ] At least one of each of the following database relationship in Postgres - - [ ] one-to-many - - [ ] many-to-many with a join table - - [ ] A well-designed RESTful API - - [ ] The API can respond to at least one of each type of request: GET, POST, PATCH, and DELETE - - [ ] Routes follow proper naming conventions - - [ ] The ability to reset the database to its default state -- [ ] The project includes these frontend-specific features: - - [ ] At least one redirection - - [ ] At least one interaction that the user can initiate and complete on the same page without navigating to a new page - - [ ] Dynamic frontend routes created with React Router - - [ ] Hierarchically designed React components - - [ ] Components broken down into categories, including Page and Component types - - [ ] Corresponding container components and presenter components as appropriate -- [ ] The project includes dynamic routes for both frontend and backend apps -- [ ] The project is deployed on Railway with all pages and features working +- [x] The project includes an Express backend app and a React frontend app +- [x] The project includes these backend-specific features: + - [x] At least one of each of the following database relationship in Postgres + - [x] one-to-many + - [x] many-to-many with a join table + - [x] A well-designed RESTful API + - [x] The API can respond to at least one of each type of request: GET, POST, PATCH, and DELETE + - [x] Routes follow proper naming conventions + - [x] The ability to reset the database to its default state +- [x] The project includes these frontend-specific features: + - [x] At least one redirection + - [x] At least one interaction that the user can initiate and complete on the same page without navigating to a new page + - [x] Dynamic frontend routes created with React Router + - [x] Hierarchically designed React components + - [x] Components broken down into categories, including Page and Component types + - [x] Corresponding container components and presenter components as appropriate +- [x] The project includes dynamic routes for both frontend and backend apps +- [x] The project is deployed on Railway with all pages and features working ### Custom Features 👉🏾👉🏾👉🏾 Check off each completed feature below. -- [ ] The project gracefully handles errors -- [ ] The project includes a one-to-one database relationship -- [ ] The project includes a slide-out pane or modal as appropriate for your use case -- [ ] The project includes a unique field within the join table -- [ ] The project includes a custom non-RESTful route with corresponding controller actions -- [ ] The project allows filtering and/or sorting as appropriate for your use case -- [ ] Data is automatically generated in response to a certain event or user action. Examples include generating a default inventory for a new user starting a game or creating a starter set of tasks for a user creating a new task app account -- [ ] Data submitted via a POST or PATCH request is validated before the database is updated +- [x] The project gracefully handles errors +- [x] The project includes a one-to-one database relationship +- [x] The project includes a slide-out pane or modal as appropriate for your use case +- [x] The project includes a unique field within the join table +- [x] The project includes a custom non-RESTful route with corresponding controller actions +- [x] The project allows filtering and/or sorting as appropriate for your use case +- [x] Data is automatically generated in response to a certain event or user action. Examples include generating a default inventory for a new user starting a game or creating a starter set of tasks for a user creating a new task app account +- [x] Data submitted via a POST or PATCH request is validated before the database is updated ### Stretch Features 👉🏾👉🏾👉🏾 Check off each completed feature below. -- [ ] A subset of pages require the user to log in before accessing the content - - [ ] Users can log in and log out via GitHub OAuth with Passport.js -- [ ] Restrict available user options dynamically, such as restricting available purchases based on a user's currency -- [ ] Show a spinner while a page or page element is loading -- [ ] Disable buttons and inputs during the form submission process -- [ ] Disable buttons after they have been clicked +- [x] A subset of pages require the user to log in before accessing the content + - [x] Users can log in and log out via GitHub OAuth with Passport.js +- [x] Restrict available user options dynamically, such as restricting available purchases based on a user's currency +- [x] Show a spinner while a page or page element is loading +- [x] Disable buttons and inputs during the form submission process +- [x] Disable buttons after they have been clicked - [ ] Users can upload images to the app and have them be stored on a cloud service - [ ] 🍞 [Toast messages](https://www.patternfly.org/v3/pattern-library/communication/toast-notifications/index.html) deliver simple feedback in response to user events ## Final Demo GIF -🔗 [Here's a GIF walkthrough of the final project](👉🏾👉🏾👉🏾 your link here) +🔗 [Here's a GIF walkthrough of the final project](👉🏾👉🏾👉🏾 https://i.imgur.com/UVGqAxr.gif) ## Reflection ### 1. What went well during this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I learned a lot of things] ### 2. What were some challenges your group faced in this unit? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 There was a time crunch and a lot of stories to be finished within a limited amount of time] ### 3. What were some of the highlights or achievements that you are most proud of in this project? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 Understanding of the server client concepts and learned a lot of new things - such as about deployment, config files] ### 4. Reflecting on your web development journey so far, how have you grown since the beginning of the course? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 I have developed a significant understanding of the web development topics and I am super proud of myself] ### 5. Looking ahead, what are your goals related to web development, and what steps do you plan to take to achieve them? -[👉🏾👉🏾👉🏾 your answer here] +[👉🏾👉🏾👉🏾 To practice more and get thorough with the topics I learned and dig deeper into these concepts] diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..a051737bb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,309 @@ +{ + "name": "budgetbuddy", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "budgetbuddy", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "concurrently": "^9.1.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/concurrently": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.0.tgz", + "integrity": "sha512-VxkzwMAn4LP7WyMnJNbHN5mKV9L2IbyDjpzemKr99sXNR3GqRNMMHdm7prV1ws9wg7ETj6WUkNOigZVsptwbgg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..26a6c828d --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "budgetbuddy", + "version": "1.0.0", + "description": "An application to help track your finances", + "type": "module", + "scripts": { + "dev": "concurrently \"cd client && npm start\" \"cd server && npm start\"", + "build": "cd client && npm install && npm run build", + "start": "cd server && npm install && npm start" + }, + "author": "Ayushi Porwal", + "license": "ISC", + "dependencies": { + "concurrently": "^9.1.0" + } +} diff --git a/planning/entity_relationship_diagram.md b/planning/entity_relationship_diagram.md index 12c25f62c..9e9941fb9 100644 --- a/planning/entity_relationship_diagram.md +++ b/planning/entity_relationship_diagram.md @@ -4,11 +4,64 @@ Reference the Creating an Entity Relationship Diagram final project guide in the ## Create the List of Tables -[👉🏾👉🏾👉🏾 List each table in your diagram] +Table users { + id integer [primary key] + name varchar + email varchar [unique] + password varchar + created_at timestamp +} + +Table income { + id integer [primary key] + user_id integer + amount decimal + source varchar [note: 'Source of income (e.g., salary, investment)'] + date date +} + +Table expenses { + id integer [primary key] + user_id integer + category_id integer + amount decimal + description varchar [note: 'Description of the expense'] + date date +} + +Table categories { + id integer [primary key] + name varchar [note: 'Category name (e.g., groceries, rent)'] +} + +Table savings_goals { + id integer [primary key] + user_id integer + goal_name varchar + target_amount decimal + current_amount decimal + deadline date +} + +Table budget_alerts { + id integer [primary key] + user_id integer + limit_amount decimal + alert_message varchar +} + +Table reports { + id integer [primary key] + user_id integer + report_type varchar [note: 'Type of report (e.g., monthly, yearly)'] + date_range varchar [note: 'Date range for the report'] + report_data text [note: 'Data associated with the report'] + created_at timestamp +} ## Add the Entity Relationship Diagram -[👉🏾👉🏾👉🏾 Include an image or images of the diagram below. You may also wish to use the following markdown syntax to outline each table, as per your preference.] +[![image](https://github.com/user-attachments/assets/a90c4dde-3668-4277-afb9-7df23533b015)] | Column Name | Type | Description | |-------------|------|-------------| diff --git a/planning/user_stories.md b/planning/user_stories.md index 1e55ecbcd..9ba95faaf 100644 --- a/planning/user_stories.md +++ b/planning/user_stories.md @@ -4,10 +4,51 @@ Reference the Writing User Stories final project guide in the course portal for ## Outline User Roles -[👉🏾👉🏾👉🏾 Include at least at least 1, but no more than 3, user roles.] +1. User: This is the primary user role for individuals who want to track their personal finances. + +2. Admin: This role is for administrators who manage the application and provide support to users. + ## Draft User Stories -[👉🏾👉🏾👉🏾 Include at least at least 10 user stories in this format:] +1. [User Registration and Login] ✅ +As a user, I want to sign up and log in to the app so that I can access my personal budget information securely. + +2. [Track Income and Expenses] ✅ +As a user, I want to input my income and expenses so that I can track my spending and see how much money I have left in my budget. + +3. [Categorize Expenses] +As a user, I want to categorize my expenses (e.g., rent, groceries) so I can understand where my money is going. + +4. [Set Savings Goals] +As a user, I want to set and track savings goals so that I can monitor my progress and stay motivated to save money. + +5. [View Budget Overview] +As a user, I want to see a dashboard overview of my finances, including total income, total expenses, and remaining budget. + +6. [Receive Budget Notifications] +As a user, I want to receive notifications when I am close to exceeding my budget so I can adjust my spending habits. + +7. [Filter and Sort Expenses] +As a user, I want to filter and sort my expenses by category, date, or amount to analyze my spending patterns more easily. + +8. [Edit and Delete Transactions] +As a user, I want to edit or delete income and expense entries in case I make a mistake or if my budget changes. + +9. [View Financial Reports] +As a user, I want to generate monthly or yearly reports to visualize my spending and savings trends over time. + +10. [Backup and Restore Data] +As a user, I want to back up my data to the cloud and restore it when needed, so I don’t lose my financial information. + +11. [Manage User Accounts] +As an admin, I want to view and manage user accounts so that I can assist users with account-related issues and ensure proper access control. + +12. [Monitor System Performance] +As an admin, I want to access system performance metrics so that I can identify and address any issues affecting the application's functionality. + +13. [Handle User Support Requests] +As an admin, I want to receive and respond to user support requests so that I can assist users with their questions or problems. -1. As a [user role], I want to [what], so that [why]. +14. [Maintain Security Measures] +As an admin, I want to implement and update security measures so that I can protect user data and maintain the integrity of the application. \ No newline at end of file diff --git a/planning/wireframes.md b/planning/wireframes.md index fbcd15a0c..555511804 100644 --- a/planning/wireframes.md +++ b/planning/wireframes.md @@ -6,16 +6,20 @@ Reference the Creating an Entity Relationship Diagram final project guide in the [👉🏾👉🏾👉🏾 List the pages you expect to have in your app, with a ⭐ next to pages you have wireframed] -## Wireframe 1: [page title] +## Wireframe 1: [Home Page] -[👉🏾👉🏾👉🏾 include wireframe 1] +![image](https://github.com/user-attachments/assets/f2460f5a-9543-4112-bcac-86bc8f1cf79a) -## Wireframe 2: [page title] -[👉🏾👉🏾👉🏾 include wireframe 2] +## Wireframe 2: [Login Page] -## Wireframe 3: [page title] +![image](https://github.com/user-attachments/assets/ca2a9dc1-92da-4bb9-bebc-b5b3ecc0fb81) + +## Wireframe 3: [Budget Creation Page] +![image](https://github.com/user-attachments/assets/708e91a4-6513-40bd-ad6f-e8d5d396973f) + +## Wireframe 4: [Goal Setting Page] +![image](https://github.com/user-attachments/assets/9de1e00f-6d0b-4d32-81c2-3bfd1a648411) -[👉🏾👉🏾👉🏾 include wireframe 3] [👉🏾👉🏾👉🏾 include more wireframes as desired] diff --git a/readmemd-web103-finalproject-visual-studio-code-2024-10-23-21-07-23_rTLKOc14.gif b/readmemd-web103-finalproject-visual-studio-code-2024-10-23-21-07-23_rTLKOc14.gif new file mode 100644 index 000000000..01596be2e Binary files /dev/null and b/readmemd-web103-finalproject-visual-studio-code-2024-10-23-21-07-23_rTLKOc14.gif differ diff --git a/readmemd-web103-finalproject-visual-studio-code-2024-10-23-21-07-23_rTLKOc14.mp4 b/readmemd-web103-finalproject-visual-studio-code-2024-10-23-21-07-23_rTLKOc14.mp4 new file mode 100644 index 000000000..5da826936 Binary files /dev/null and b/readmemd-web103-finalproject-visual-studio-code-2024-10-23-21-07-23_rTLKOc14.mp4 differ diff --git a/server/.env b/server/.env new file mode 100644 index 000000000..c49655683 --- /dev/null +++ b/server/.env @@ -0,0 +1,11 @@ +CONNECTION_STRING=postgresql://postgres:figZLJINhUjohxvvdjfoVvGSufoUFtKW@junction.proxy.rlwy.net:52277/railway +GITHUB_CLIENT_ID=Ov23liqcL3R9NvQGFg05 +GITHUB_CLIENT_SECRET=aa37b95b9c7a970ee6d45a8abd82bcb6f4e0eaba +SESSION_SECRET=secret +JWT_SECRET=secret +PORT=3000 +PGDATABASE=railway +PGHOST=junction.proxy.rlwy.net +PGPASSWORD=figZLJINhUjohxvvdjfoVvGSufoUFtKW +PGPORT=52277 +PGUSER=postgres \ No newline at end of file diff --git a/server/.env.template b/server/.env.template new file mode 100644 index 000000000..ec339b17d --- /dev/null +++ b/server/.env.template @@ -0,0 +1,5 @@ +PGDATABASE="railway" +PGHOST="junction.proxy.rlwy.net" +PGPASSWORD="figZLJINhUjohxvvdjfoVvGSufoUFtKW" +PGPORT=52277 +PGUSER="postgres" \ No newline at end of file diff --git a/server/config/auth.js b/server/config/auth.js new file mode 100644 index 000000000..36eb8e918 --- /dev/null +++ b/server/config/auth.js @@ -0,0 +1,44 @@ +import GitHubStrategy from 'passport-github2'; +import { pool } from './database.js'; + +const options = { + clientID: process.env.GITHUB_CLIENT_ID, + clientSecret: process.env.GITHUB_CLIENT_SECRET, + callbackURL: 'http://localhost:3000/auth/github/callback' +}; + +const verify = async (accessToken, refreshToken, profile, done) => { + const { _json: { id, name, login, avatar_url } } = profile; + const userData = { + githubId: id, + username: login, + avatarUrl: avatar_url, + accessToken + } + + try { + const results = await pool.query('SELECT * FROM users WHERE username = $1', [userData.username]) + const user = results.rows[0] + + if (!user) { + const results = await pool.query( + `INSERT INTO users (githubid, username, avatarurl, accesstoken) + VALUES($1, $2, $3, $4) + RETURNING *`, + [userData.githubId, userData.username, userData.avatarUrl, accessToken] + ) + + const newUser = results.rows[0] + return done(null, newUser) + } + + return done(null, user) + + } + + catch (error) { + return done(error) + } +} + +export const GitHub = new GitHubStrategy(options, verify); diff --git a/server/config/database.js b/server/config/database.js new file mode 100644 index 000000000..a178ba95b --- /dev/null +++ b/server/config/database.js @@ -0,0 +1,12 @@ +import pg from 'pg' +import './dotenv.js' + +const config = { + user: process.env.PGUSER, + password: process.env.PGPASSWORD, + host: process.env.PGHOST, + port: process.env.PGPORT, + database: process.env.PGDATABASE +} + +export const pool = new pg.Pool(config) diff --git a/server/config/dotenv.js b/server/config/dotenv.js new file mode 100644 index 000000000..f33ba621a --- /dev/null +++ b/server/config/dotenv.js @@ -0,0 +1,2 @@ +import dotenv from 'dotenv' +dotenv.config({ path: '../.env' }) \ No newline at end of file diff --git a/server/config/reset.js b/server/config/reset.js new file mode 100644 index 000000000..6876e0758 --- /dev/null +++ b/server/config/reset.js @@ -0,0 +1,233 @@ +import { pool } from "./database.js"; +import {categoriesData} from '../data/categories.js'; +// import "./dotenv.js"; + +const createUserTable = async () => { + const query = ` + CREATE TABLE IF NOT EXISTS users ( + user_id SERIAL PRIMARY KEY, + githubid integer NOT NULL, + username varchar(100) NOT NULL, + avatarurl varchar(500) NOT NULL, + accesstoken varchar(500) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + `; + + try { + await pool.query(query); + console.log("Users table created successfully"); + } catch (error) { + console.error("Error creating users table:", error); + } +}; + +const createIncomeTable = async () => { + const query = ` + CREATE TABLE IF NOT EXISTS income ( + id SERIAL PRIMARY KEY, + user_id integer NOT NULL, + amount decimal NOT NULL, + source varchar(255) NOT NULL, + date date NOT NULL + ); + `; + + try { + await pool.query(query); + console.log("Income table created successfully"); + } catch (error) { + console.error("Error creating income table:", error); + } +}; + +const createExpensesTable = async () => { + const query = ` + CREATE TABLE IF NOT EXISTS expenses ( + id SERIAL PRIMARY KEY, + user_id integer NOT NULL, + category_id integer NOT NULL, + amount decimal NOT NULL, + description varchar(255) NOT NULL, + date date NOT NULL + ); + `; + + try { + await pool.query(query); + console.log("Expenses table created successfully"); + } catch (error) { + console.error("Error creating expenses table:", error); + } +}; + +const createCategoriesTable = async () => { + const query = ` + CREATE TABLE IF NOT EXISTS categories ( + id SERIAL PRIMARY KEY, + name varchar(255) NOT NULL + ); + `; + + try { + await pool.query(query); + console.log("Categories table created successfully"); + } catch (error) { + console.error("Error creating categories table:", error); + } +}; + +const createSavingsGoalsTable = async () => { + const query = ` + CREATE TABLE IF NOT EXISTS savings_goals ( + id SERIAL PRIMARY KEY, + user_id integer NOT NULL, + goal_name varchar(255) NOT NULL, + target_amount decimal NOT NULL, + current_amount decimal NOT NULL, + deadline date NOT NULL + ); + `; + + try { + await pool.query(query); + console.log("Savings goals table created successfully"); + } catch (error) { + console.error("Error creating savings goals table:", error); + } +}; + +const createBudgetAlertsTable = async () => { + const query = ` + CREATE TABLE IF NOT EXISTS budget_alerts ( + id SERIAL PRIMARY KEY, + user_id integer NOT NULL, + limit_amount decimal NOT NULL, + alert_message varchar(255) NOT NULL + ); + `; + + try { + await pool.query(query); + console.log("Budget alerts table created successfully"); + } catch (error) { + console.error("Error creating budget alerts table:", error); + } +}; + +const createReportsTable = async () => { + const query = ` + CREATE TABLE IF NOT EXISTS reports ( + id SERIAL PRIMARY KEY, + user_id integer NOT NULL, + report_type varchar(255) NOT NULL, + date_range varchar(255) NOT NULL, + report_data text NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + `; + + try { + await pool.query(query); + console.log("Reports table created successfully"); + } catch (error) { + console.error("Error creating reports table:", error); + } +}; + +const createAllTables = async () => { + await createUserTable(); + await createIncomeTable(); + await createExpensesTable(); + await createCategoriesTable(); + await createSavingsGoalsTable(); + await createBudgetAlertsTable(); + await createReportsTable(); +}; + +createAllTables(); + +const seedCategoriesTable = async () => { + const query = ` + INSERT INTO categories (name) + VALUES ($1) + ; + `; + + try { + for (const category of categoriesData) { + await pool.query(query, [category.name]); + } + console.log("Categories table seeded successfully"); + } catch (error) { + console.error("Error seeding categories table:", error); + } +}; + +const seedReportsTable = async (userId, type, year, month = null) => { + let incomeQuery, expensesQuery; + const params = [userId]; + + if (type === "monthly") { + incomeQuery = ` + SELECT + EXTRACT(MONTH FROM date) AS month, + SUM(amount) AS total_income + FROM income + WHERE user_id = $1 AND EXTRACT(YEAR FROM date) = $2 AND EXTRACT(MONTH FROM date) = $3 + GROUP BY month; + `; + expensesQuery = ` + SELECT + EXTRACT(MONTH FROM date) AS month, + SUM(amount) AS total_expenses + FROM expenses + WHERE user_id = $1 AND EXTRACT(YEAR FROM date) = $2 AND EXTRACT(MONTH FROM date) = $3 + GROUP BY month; + `; + params.push(year, month); + } else if (type === "yearly") { + incomeQuery = ` + SELECT + EXTRACT(YEAR FROM date) AS year, + SUM(amount) AS total_income + FROM income + WHERE user_id = $1 AND EXTRACT(YEAR FROM date) = $2 + GROUP BY year; + `; + expensesQuery = ` + SELECT + EXTRACT(YEAR FROM date) AS year, + SUM(amount) AS total_expenses + FROM expenses + WHERE user_id = $1 AND EXTRACT(YEAR FROM date) = $2 + GROUP BY year; + `; + params.push(year); + } + + try { + const incomeResult = await pool.query(incomeQuery, params); + const expensesResult = await pool.query(expensesQuery, params); + + const report = { + income: incomeResult.rows, + expenses: expensesResult.rows, + }; + + const insertReportQuery = ` + INSERT INTO reports (user_id, report_type, date_range, report_data) + VALUES ($1, $2, $3, $4); + `; + const dateRange = type === "monthly" ? `${year}-${month}` : `${year}`; + await pool.query(insertReportQuery, [userId, type, dateRange, JSON.stringify(report)]); + + console.log("Reports table seeded successfully"); + } catch (error) { + console.error("Error seeding reports table:", error); + } +}; + +const seedAllTables = async () => { +await seedCategoriesTable(); +}; \ No newline at end of file diff --git a/server/controllers/category.js b/server/controllers/category.js new file mode 100644 index 000000000..29e5a40f4 --- /dev/null +++ b/server/controllers/category.js @@ -0,0 +1,14 @@ +import {pool} from '../config/database.js'; + +const getCategories = async (req, res) => { + try{ + const results = await pool.query('SELECT * FROM categories'); + res.status(200).json({message: 'Categories retrieved successfully', data: results.rows}); + } catch (error) { + res.status(500).json({error: error.message}); + } +} + +export default { + getCategories +} \ No newline at end of file diff --git a/server/controllers/expense.js b/server/controllers/expense.js new file mode 100644 index 000000000..4b6a5a10c --- /dev/null +++ b/server/controllers/expense.js @@ -0,0 +1,66 @@ +import { pool } from "../config/database.js"; + +const getExpenses = async (req, res) => { + try { + const user_id = req.params.user_id; + const results = await pool.query("SELECT * FROM expenses where user_id = $1", [user_id]); + res.status(200).json({ message: "Expenses retrieved successfully", data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const getExpensesById = async (req, res) => { + try { + const id = parseInt(req.params.id); + const results = await pool.query("SELECT * FROM expenses WHERE id = $1", [id]); + res.status(200).json({ message: "Expense retrieved successfully", data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const addExpenses = async (req, res) => { + try { + const { user_id, category_id, amount, description, date } = req.body; + const results = await pool.query( + "INSERT INTO expenses (user_id, category_id, amount, description, date) VALUES ($1, $2, $3, $4, $5) RETURNING *", + [user_id, category_id, amount, description, date] + ); + res.status(201).json({ message: "Expense added successfully", data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const updateExpenses = async (req, res) => { + try { + const id = parseInt(req.params.id); + const { user_id, category_id, amount, description, date } = req.body; + const results = await pool.query( + "UPDATE expenses SET user_id = $1, category_id = $2, amount = $3, description = $4, date = $5 WHERE id = $6 RETURNING *", + [user_id, category_id, amount, description, date, id] + ); + res.status(200).json({ message: "Expense updated successfully", data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const deleteExpenses = async (req, res) => { + try { + const id = parseInt(req.params.id); + await pool.query("DELETE FROM expenses WHERE id = $1", [id]); + res.status(200).json({ message: "Expense deleted successfully" }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +export default { + getExpenses, + getExpensesById, + addExpenses, + updateExpenses, + deleteExpenses, +}; diff --git a/server/controllers/income.js b/server/controllers/income.js new file mode 100644 index 000000000..275c1426d --- /dev/null +++ b/server/controllers/income.js @@ -0,0 +1,66 @@ +import { pool } from '../config/database.js'; + +const getIncome = async (req, res) => { + try { + const user_id = req.params.user_id; + const results = await pool.query('SELECT * FROM income where user_id = $1', [user_id]); + res.status(200).json({ message: 'Income retrieved successfully', data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const getIncomeById = async (req, res) => { + try { + const id = parseInt(req.params.id); + const results = await pool.query('SELECT * FROM income WHERE id = $1', [id]); + res.status(200).json({ message: 'Income retrieved successfully', data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const addIncome = async (req, res) => { + try { + const { user_id, amount, source, date } = req.body; + const results = await pool.query( + 'INSERT INTO income (user_id, amount, source, date) VALUES ($1, $2, $3, $4) RETURNING *', + [user_id, amount, source, date] + ); + res.status(201).json({ message: 'Income added successfully', data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const updateIncome = async (req, res) => { + try { + const id = parseInt(req.params.id); + const { user_id, amount, source, date } = req.body; + const results = await pool.query( + 'UPDATE income SET user_id = $1, amount = $2, source = $3, date = $4 WHERE id = $5 RETURNING *', + [user_id, amount, source, date, id] + ); + res.status(200).json({ message: 'Income updated successfully', data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const deleteIncome = async (req, res) => { + try { + const id = parseInt(req.params.id); + await pool.query('DELETE FROM income WHERE id = $1', [id]); + res.status(200).json({ message: 'Income deleted successfully' }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +export default { + getIncome, + getIncomeById, + addIncome, + updateIncome, + deleteIncome +}; diff --git a/server/controllers/report.js b/server/controllers/report.js new file mode 100644 index 000000000..64d15ffa1 --- /dev/null +++ b/server/controllers/report.js @@ -0,0 +1,89 @@ +import express from "express"; +import { pool } from "../config/database.js"; + +const router = express.Router(); + +// Endpoint to generate dynamic reports +const getReports = async (req, res) => { +// console.log("req.query", req.query); + const { user_id, type, year, month } = req.query; + + try { + if (!user_id || !type || !year || !month) { + return res + .status(400) + .json({ error: "Missing required query parameters" }); + } + + let query = ""; + let values = [user_id, year, month]; + + if (type === "monthly") { + const startDate = `${year}-${month}-01`; + let endDate = 11; + if (month === "02") { + endDate = `${year}-${month}-28`; + } else if (["04", "06", "09", "11"].includes(month)) { + endDate = `${year}-${month}-30`; + } else { + endDate = `${year}-${month}-31`; + }; + + query = ` + SELECT + DATE_TRUNC('month', date) AS month, + SUM(amount) AS total, + 'income' AS category + FROM income + WHERE user_id = $1 AND date >= $2 AND date <= $3 + GROUP BY month + UNION ALL + SELECT + DATE_TRUNC('month', date) AS month, + SUM(amount) AS total, + 'expenses' AS category + FROM expenses + WHERE user_id = $1 AND date >= $2 AND date <= $3 + GROUP BY month; + `; + + values = [user_id, startDate, endDate]; + } else if (type === "yearly") { + const startDate = `${year}-01-01`; + const endDate = `${year}-12-31`; + + query = ` + SELECT + DATE_TRUNC('year', date) AS year, + SUM(amount) AS total_income + 'income' AS category + FROM income + WHERE user_id = $1 AND date >= $2 AND date <= $3 + GROUP BY year + UNION ALL + SELECT + DATE_TRUNC('year', date) AS year, + SUM(amount) AS total_expenses + 'expenses' AS category + FROM expenses + WHERE user_id = $1 AND date >= $2 AND date <= $3 + GROUP BY year; + `; + values = [user_id, startDate, endDate]; + } else { + return res + .status(400) + .json({ error: "Invalid report type. Use 'monthly' or 'yearly'." }); + } + + console.log('query', query); + const result = await pool.query(query, values); + console.log('result.rows', result.rows); + res.json(result.rows); + } catch (error) { + console.error("Error generating dynamic report:", error); + res.status(500).json({ error: "Internal server error" }); + } +}; + +export { getReports }; diff --git a/server/controllers/savingGoal.js b/server/controllers/savingGoal.js new file mode 100644 index 000000000..0801c6115 --- /dev/null +++ b/server/controllers/savingGoal.js @@ -0,0 +1,54 @@ +import { pool } from '../config/database.js'; + +const getGoals = async (req, res) => { + try { + const user_id = req.params.user_id; + const results = await pool.query('SELECT * FROM savings_goals where user_id = $1', [user_id]); + res.status(200).json({ message: 'Goals retrieved successfully', data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; +const addGoal = async (req, res) => { + try { + const { goal_name, target_amount, current_amount, user_id, deadline } = req.body; + const results = await pool.query( + 'INSERT INTO savings_goals (goal_name, target_amount, current_amount, user_id, deadline) VALUES ($1, $2, $3, $4, $5) RETURNING *', + [goal_name, target_amount, current_amount, user_id, deadline || 0] + ); + res.status(201).json({ message: 'Goal added successfully', data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const updateGoal = async (req, res) => { + try { + const goalId = parseInt(req.params.goal_id); + const { current_amount } = req.body; + const results = await pool.query( + 'UPDATE savings_goals SET current_amount = $1 WHERE id = $2 RETURNING *', + [current_amount, goalId] + ); + res.status(200).json({ message: 'Goal updated successfully', data: results.rows }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +const deleteGoal = async (req, res) => { + try { + const goalId = parseInt(req.params.goal_id); + await pool.query('DELETE FROM savings_goals WHERE id = $1', [goalId]); + res.status(200).json({ message: 'Goal deleted successfully' }); + } catch (error) { + res.status(500).json({ error: error.message }); + } +}; + +export default { + addGoal, + getGoals, + updateGoal, + deleteGoal +}; \ No newline at end of file diff --git a/server/data/categories.js b/server/data/categories.js new file mode 100644 index 000000000..3d3a69c52 --- /dev/null +++ b/server/data/categories.js @@ -0,0 +1,42 @@ +export const categoriesData = [ + { + id: 1, + name: "Groceries" + }, + { + id: 2, + name: "Rent" + }, + { + id: 3, + name: "Utilities" + }, + { + id: 4, + name: "Transportation" + }, + { + id: 5, + name: "Entertainment" + }, + { + id: 6, + name: "Dining Out" + }, + { + id: 7, + name: "Healthcare" + }, + { + id: 8, + name: "Education" + }, + { + id: 9, + name: "Savings" + }, + { + id: 10, + name: "Miscellaneous" + } +]; \ No newline at end of file diff --git a/server/package-lock.json b/server/package-lock.json new file mode 100644 index 000000000..d861af47f --- /dev/null +++ b/server/package-lock.json @@ -0,0 +1,1557 @@ +{ + "name": "budgetbuddy", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "budgetbuddy", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.4.5", + "express": "^4.21.1", + "express-session": "^1.18.1", + "jsonwebtoken": "^9.0.2", + "nodemon": "^3.1.7", + "passport": "^0.7.0", + "passport-github2": "^0.1.12", + "pg": "^8.13.1" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-session": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz", + "integrity": "sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA==", + "license": "MIT", + "dependencies": { + "cookie": "0.7.2", + "cookie-signature": "1.0.7", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express-session/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express-session/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "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/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "license": "ISC" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "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==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/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/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz", + "integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==", + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/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/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.0.tgz", + "integrity": "sha512-1orQ9MT1vHFGQxhuy7E/0gECD3fd2fCC+PIX+/jgmU/gI3EpRocXtmtvxCO5x3WZ443FLTLFWNDjl5MPJf9u+Q==", + "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/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/passport": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz", + "integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==", + "license": "MIT", + "dependencies": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-github2": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/passport-github2/-/passport-github2-0.1.12.tgz", + "integrity": "sha512-3nPUCc7ttF/3HSP/k9sAXjz3SkGv5Nki84I05kSQPo01Jqq1NzJACgMblCK0fGcv9pKCG/KXU3AJRDGLqHLoIw==", + "dependencies": { + "passport-oauth2": "1.x.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/passport-oauth2": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz", + "integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==", + "license": "MIT", + "dependencies": { + "base64url": "3.x.x", + "oauth": "0.10.x", + "passport-strategy": "1.x.x", + "uid2": "0.0.x", + "utils-merge": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "license": "MIT" + }, + "node_modules/pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" + }, + "node_modules/pg": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", + "integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.7.0", + "pg-pool": "^3.7.0", + "pg-protocol": "^1.7.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/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/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "license": "MIT", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uid2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==", + "license": "MIT" + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 000000000..280a67d39 --- /dev/null +++ b/server/package.json @@ -0,0 +1,37 @@ +{ + "name": "budgetbuddy", + "version": "1.0.0", + "description": "BudgetBuddy helps users manage personal finances by tracking income, expenses, and savings goals. Users can plan budgets, categorize expenses, and visualize financial reports, ensuring better money management and meeting financial goals.", + "main": "server.js", + "type": "module", + "scripts": { + "start": "npm run reset && nodemon --require dotenv/config server.js", + "test": "echo \"Error: no test specified\" && exit 1", + "reset": "cd config && node --require dotenv/config reset.js" + }, + "author": "Ayushi Porwal", + "license": "ISC", + "repository": { + "type": "git", + "url": "git+https://github.com/ayushiporwal13/BudgetBuddy.git" + }, + "keywords": [ + "finance", + "tracker" + ], + "bugs": { + "url": "https://github.com/ayushiporwal13/BudgetBuddy/issues" + }, + "homepage": "https://github.com/ayushiporwal13/BudgetBuddy#readme", + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.4.5", + "express": "^4.21.1", + "express-session": "^1.18.1", + "jsonwebtoken": "^9.0.2", + "nodemon": "^3.1.7", + "passport": "^0.7.0", + "passport-github2": "^0.1.12", + "pg": "^8.13.1" + } +} diff --git a/server/public/assets/html2canvas.esm-CBrSDip1.js b/server/public/assets/html2canvas.esm-CBrSDip1.js new file mode 100644 index 000000000..943d4b144 --- /dev/null +++ b/server/public/assets/html2canvas.esm-CBrSDip1.js @@ -0,0 +1,22 @@ +/*! + * html2canvas 1.4.1 + * Copyright (c) 2022 Niklas von Hertzen + * Released under MIT License + *//*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var mr=function(e,A){return mr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var B in r)Object.prototype.hasOwnProperty.call(r,B)&&(t[B]=r[B])},mr(e,A)};function tA(e,A){if(typeof A!="function"&&A!==null)throw new TypeError("Class extends value "+String(A)+" is not a constructor or null");mr(e,A);function t(){this.constructor=e}e.prototype=A===null?Object.create(A):(t.prototype=A.prototype,new t)}var Lr=function(){return Lr=Object.assign||function(A){for(var t,r=1,B=arguments.length;r0&&n[n.length-1])&&(o[0]===6||o[0]===2)){t=0;continue}if(o[0]===3&&(!n||o[1]>n[0]&&o[1]=55296&&B<=56319&&t>10)+55296,s%1024+56320)),(B+1===t||r.length>16384)&&(n+=String.fromCharCode.apply(String,r),r.length=0)}return n},nt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",on=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var le=0;le"u"?[]:new Uint8Array(256);for(var fe=0;fe>4,Q[B++]=(s&15)<<4|i>>2,Q[B++]=(i&3)<<6|a&63;return o},gn=function(e){for(var A=e.length,t=[],r=0;r>bA,Cn=1<>bA,ln=BB+un,fn=ln,Un=32,Fn=fn+Un,hn=65536>>zr,dn=1<=0){if(A<55296||A>56319&&A<=65535)return t=this.index[A>>bA],t=(t<>bA)],t=(t<>zr),t=this.index[t],t+=A>>bA&En,t=this.index[t],t=(t<"u"?[]:new Uint8Array(256);for(var Ue=0;Ueot?(B.push(!0),i-=ot):B.push(!1),["normal","auto","loose"].indexOf(A)!==-1&&[8208,8211,12316,12448].indexOf(n)!==-1)return r.push(s),t.push(xr);if(i===mn||i===Dr){if(s===0)return r.push(s),t.push(LA);var a=t[s-1];return Mn.indexOf(a)===-1?(r.push(r[s-1]),t.push(a)):(r.push(s),t.push(LA))}if(r.push(s),i===Tn)return t.push(A==="strict"?Tr:Qe);if(i===iB||i===xn)return t.push(LA);if(i===Sn)return n>=131072&&n<=196605||n>=196608&&n<=262141?t.push(Qe):t.push(LA);t.push(i)}),[r,t,B]},wr=function(e,A,t,r){var B=r[t];if(Array.isArray(e)?e.indexOf(B)!==-1:e===B)for(var n=t;n<=r.length;){n++;var s=r[n];if(s===A)return!0;if(s!==FA)break}if(B===FA)for(var n=t;n>0;){n--;var i=r[n];if(Array.isArray(e)?e.indexOf(i)!==-1:e===i)for(var a=t;a<=r.length;){a++;var s=r[a];if(s===A)return!0;if(s!==FA)break}if(i!==FA)break}return!1},lt=function(e,A){for(var t=e;t>=0;){var r=A[t];if(r===FA)t--;else return r}return 0},Vn=function(e,A,t,r,B){if(t[r]===0)return I;var n=r-1;if(Array.isArray(B)&&B[n]===!0)return I;var s=n-1,i=n+1,a=A[n],o=s>=0?A[s]:0,Q=A[i];if(a===nB&&Q===sB)return I;if(Vr.indexOf(a)!==-1)return oB;if(Vr.indexOf(Q)!==-1||QB.indexOf(Q)!==-1)return I;if(lt(n,A)===aB)return Ee;if(Rr.get(e[n])===Dr||(a===he||a===de)&&Rr.get(e[i])===Dr||a===Qt||Q===Qt||a===gt||[FA,br,$A].indexOf(a)===-1&&Q===gt||[Fe,WA,bn,SA,OA].indexOf(Q)!==-1||lt(n,A)===ZA||wr(Qr,ZA,n,A)||wr([Fe,WA],Tr,n,A)||wr(wt,wt,n,A))return I;if(a===FA)return Ee;if(a===Qr||Q===Qr)return I;if(Q===xr||a===xr)return Ee;if([br,$A,Tr].indexOf(Q)!==-1||a===Dn||o===Mr&&Gn.indexOf(a)!==-1||a===OA&&Q===Mr||Q===ct||QA.indexOf(Q)!==-1&&a===j||QA.indexOf(a)!==-1&&Q===j||a===ee&&[Qe,he,de].indexOf(Q)!==-1||[Qe,he,de].indexOf(a)!==-1&&Q===Ae||QA.indexOf(a)!==-1&&Ct.indexOf(Q)!==-1||Ct.indexOf(a)!==-1&&QA.indexOf(Q)!==-1||[ee,Ae].indexOf(a)!==-1&&(Q===j||[ZA,$A].indexOf(Q)!==-1&&A[i+1]===j)||[ZA,$A].indexOf(a)!==-1&&Q===j||a===j&&[j,OA,SA].indexOf(Q)!==-1)return I;if([j,OA,SA,Fe,WA].indexOf(Q)!==-1)for(var g=n;g>=0;){var w=A[g];if(w===j)return I;if([OA,SA].indexOf(w)!==-1)g--;else break}if([ee,Ae].indexOf(Q)!==-1)for(var g=[Fe,WA].indexOf(a)!==-1?s:n;g>=0;){var w=A[g];if(w===j)return I;if([OA,SA].indexOf(w)!==-1)g--;else break}if(Gr===a&&[Gr,Ge,Sr,Or].indexOf(Q)!==-1||[Ge,Sr].indexOf(a)!==-1&&[Ge,Re].indexOf(Q)!==-1||[Re,Or].indexOf(a)!==-1&&Q===Re||ut.indexOf(a)!==-1&&[ct,Ae].indexOf(Q)!==-1||ut.indexOf(Q)!==-1&&a===ee||QA.indexOf(a)!==-1&&QA.indexOf(Q)!==-1||a===SA&&QA.indexOf(Q)!==-1||QA.concat(j).indexOf(a)!==-1&&Q===ZA&&On.indexOf(e[i])===-1||QA.concat(j).indexOf(Q)!==-1&&a===WA)return I;if(a===gr&&Q===gr){for(var f=t[n],c=1;f>0&&(f--,A[f]===gr);)c++;if(c%2!==0)return I}return a===he&&Q===de?I:Ee},Nn=function(e,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var t=Rn(e,A.lineBreak),r=t[0],B=t[1],n=t[2];(A.wordBreak==="break-all"||A.wordBreak==="break-word")&&(B=B.map(function(i){return[j,LA,iB].indexOf(i)!==-1?Qe:i}));var s=A.wordBreak==="keep-all"?n.map(function(i,a){return i&&e[a]>=19968&&e[a]<=40959}):void 0;return[r,B,s]},Xn=function(){function e(A,t,r,B){this.codePoints=A,this.required=t===oB,this.start=r,this.end=B}return e.prototype.slice=function(){return S.apply(void 0,this.codePoints.slice(this.start,this.end))},e}(),_n=function(e,A){var t=$e(e),r=Nn(t,A),B=r[0],n=r[1],s=r[2],i=t.length,a=0,o=0;return{next:function(){if(o>=i)return{done:!0,value:null};for(var Q=I;o=gB&&e<=57},Hs=function(e){return e>=55296&&e<=57343},MA=function(e){return J(e)||e>=CB&&e<=lB||e>=wB&&e<=Us},ps=function(e){return e>=wB&&e<=hs},Is=function(e){return e>=CB&&e<=Es},vs=function(e){return ps(e)||Is(e)},ys=function(e){return e>=is},ye=function(e){return e===Xe||e===kn||e===Yn},_e=function(e){return vs(e)||ys(e)||e===jn},dt=function(e){return _e(e)||J(e)||e===Z},Ks=function(e){return e>=ws&&e<=cs||e===Cs||e>=us&&e<=ls||e===fs},UA=function(e,A){return e!==ne?!1:A!==Xe},Ke=function(e,A,t){return e===Z?_e(A)||UA(A,t):_e(e)?!0:!!(e===ne&&UA(e,A))},Cr=function(e,A,t){return e===DA||e===Z?J(A)?!0:A===ge&&J(t):J(e===ge?A:e)},ms=function(e){var A=0,t=1;(e[A]===DA||e[A]===Z)&&(e[A]===Z&&(t=-1),A++);for(var r=[];J(e[A]);)r.push(e[A++]);var B=r.length?parseInt(S.apply(void 0,r),10):0;e[A]===ge&&A++;for(var n=[];J(e[A]);)n.push(e[A++]);var s=n.length,i=s?parseInt(S.apply(void 0,n),10):0;(e[A]===uB||e[A]===cB)&&A++;var a=1;(e[A]===DA||e[A]===Z)&&(e[A]===Z&&(a=-1),A++);for(var o=[];J(e[A]);)o.push(e[A++]);var Q=o.length?parseInt(S.apply(void 0,o),10):0;return t*(B+i*Math.pow(10,-s))*Math.pow(10,a*Q)},Ls={type:2},Ds={type:3},bs={type:4},xs={type:13},Ts={type:8},Ss={type:21},Os={type:9},Ms={type:10},Gs={type:11},Rs={type:12},Vs={type:14},me={type:23},Ns={type:1},Xs={type:25},_s={type:24},Js={type:26},Ps={type:27},ks={type:28},Ys={type:29},Ws={type:31},Nr={type:32},fB=function(){function e(){this._value=[]}return e.prototype.write=function(A){this._value=this._value.concat($e(A))},e.prototype.read=function(){for(var A=[],t=this.consumeToken();t!==Nr;)A.push(t),t=this.consumeToken();return A},e.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case He:return this.consumeStringToken(He);case Wn:var t=this.peekCodePoint(0),r=this.peekCodePoint(1),B=this.peekCodePoint(2);if(dt(t)||UA(r,B)){var n=Ke(t,r,B)?Pn:Jn,s=this.consumeName();return{type:5,value:s,flags:n}}break;case Zn:if(this.peekCodePoint(0)===qA)return this.consumeCodePoint(),xs;break;case pe:return this.consumeStringToken(pe);case Ie:return Ls;case jA:return Ds;case cr:if(this.peekCodePoint(0)===qA)return this.consumeCodePoint(),Vs;break;case DA:if(Cr(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case os:return bs;case Z:var i=A,a=this.peekCodePoint(0),o=this.peekCodePoint(1);if(Cr(i,a,o))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(Ke(i,a,o))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(a===Z&&o===As)return this.consumeCodePoint(),this.consumeCodePoint(),_s;break;case ge:if(Cr(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case Ut:if(this.peekCodePoint(0)===cr)for(this.consumeCodePoint();;){var Q=this.consumeCodePoint();if(Q===cr&&(Q=this.consumeCodePoint(),Q===Ut))return this.consumeToken();if(Q===nA)return this.consumeToken()}break;case Qs:return Js;case gs:return Ps;case $n:if(this.peekCodePoint(0)===zn&&this.peekCodePoint(1)===Z&&this.peekCodePoint(2)===Z)return this.consumeCodePoint(),this.consumeCodePoint(),Xs;break;case es:var g=this.peekCodePoint(0),w=this.peekCodePoint(1),f=this.peekCodePoint(2);if(Ke(g,w,f)){var s=this.consumeName();return{type:7,value:s}}break;case rs:return ks;case ne:if(UA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case ts:return Ys;case Bs:if(this.peekCodePoint(0)===qA)return this.consumeCodePoint(),Ts;break;case ns:return Gs;case ss:return Rs;case Fs:case ds:var c=this.peekCodePoint(0),C=this.peekCodePoint(1);return c===DA&&(MA(C)||C===ve)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case Ft:if(this.peekCodePoint(0)===qA)return this.consumeCodePoint(),Os;if(this.peekCodePoint(0)===Ft)return this.consumeCodePoint(),Ss;break;case as:if(this.peekCodePoint(0)===qA)return this.consumeCodePoint(),Ms;break;case nA:return Nr}return ye(A)?(this.consumeWhiteSpace(),Ws):J(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):_e(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:6,value:S(A)}},e.prototype.consumeCodePoint=function(){var A=this._value.shift();return typeof A>"u"?-1:A},e.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},e.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},e.prototype.consumeUnicodeRangeToken=function(){for(var A=[],t=this.consumeCodePoint();MA(t)&&A.length<6;)A.push(t),t=this.consumeCodePoint();for(var r=!1;t===ve&&A.length<6;)A.push(t),t=this.consumeCodePoint(),r=!0;if(r){var B=parseInt(S.apply(void 0,A.map(function(a){return a===ve?gB:a})),16),n=parseInt(S.apply(void 0,A.map(function(a){return a===ve?lB:a})),16);return{type:30,start:B,end:n}}var s=parseInt(S.apply(void 0,A),16);if(this.peekCodePoint(0)===Z&&MA(this.peekCodePoint(1))){this.consumeCodePoint(),t=this.consumeCodePoint();for(var i=[];MA(t)&&i.length<6;)i.push(t),t=this.consumeCodePoint();var n=parseInt(S.apply(void 0,i),16);return{type:30,start:s,end:n}}else return{type:30,start:s,end:s}},e.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return A.toLowerCase()==="url"&&this.peekCodePoint(0)===Ie?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===Ie?(this.consumeCodePoint(),{type:19,value:A}):{type:20,value:A}},e.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===nA)return{type:22,value:""};var t=this.peekCodePoint(0);if(t===pe||t===He){var r=this.consumeStringToken(this.consumeCodePoint());return r.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===nA||this.peekCodePoint(0)===jA)?(this.consumeCodePoint(),{type:22,value:r.value}):(this.consumeBadUrlRemnants(),me)}for(;;){var B=this.consumeCodePoint();if(B===nA||B===jA)return{type:22,value:S.apply(void 0,A)};if(ye(B))return this.consumeWhiteSpace(),this.peekCodePoint(0)===nA||this.peekCodePoint(0)===jA?(this.consumeCodePoint(),{type:22,value:S.apply(void 0,A)}):(this.consumeBadUrlRemnants(),me);if(B===He||B===pe||B===Ie||Ks(B))return this.consumeBadUrlRemnants(),me;if(B===ne)if(UA(B,this.peekCodePoint(0)))A.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),me;else A.push(B)}},e.prototype.consumeWhiteSpace=function(){for(;ye(this.peekCodePoint(0));)this.consumeCodePoint()},e.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(A===jA||A===nA)return;UA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},e.prototype.consumeStringSlice=function(A){for(var t=5e4,r="";A>0;){var B=Math.min(t,A);r+=S.apply(void 0,this._value.splice(0,B)),A-=B}return this._value.shift(),r},e.prototype.consumeStringToken=function(A){var t="",r=0;do{var B=this._value[r];if(B===nA||B===void 0||B===A)return t+=this.consumeStringSlice(r),{type:0,value:t};if(B===Xe)return this._value.splice(0,r),Ns;if(B===ne){var n=this._value[r+1];n!==nA&&n!==void 0&&(n===Xe?(t+=this.consumeStringSlice(r),r=-1,this._value.shift()):UA(B,n)&&(t+=this.consumeStringSlice(r),t+=S(this.consumeEscapedCodePoint()),r=-1))}r++}while(!0)},e.prototype.consumeNumber=function(){var A=[],t=ce,r=this.peekCodePoint(0);for((r===DA||r===Z)&&A.push(this.consumeCodePoint());J(this.peekCodePoint(0));)A.push(this.consumeCodePoint());r=this.peekCodePoint(0);var B=this.peekCodePoint(1);if(r===ge&&J(B))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),t=ft;J(this.peekCodePoint(0));)A.push(this.consumeCodePoint());r=this.peekCodePoint(0),B=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((r===uB||r===cB)&&((B===DA||B===Z)&&J(n)||J(B)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),t=ft;J(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[ms(A),t]},e.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),t=A[0],r=A[1],B=this.peekCodePoint(0),n=this.peekCodePoint(1),s=this.peekCodePoint(2);if(Ke(B,n,s)){var i=this.consumeName();return{type:15,number:t,flags:r,unit:i}}return B===qn?(this.consumeCodePoint(),{type:16,number:t,flags:r}):{type:17,number:t,flags:r}},e.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(MA(A)){for(var t=S(A);MA(this.peekCodePoint(0))&&t.length<6;)t+=S(this.consumeCodePoint());ye(this.peekCodePoint(0))&&this.consumeCodePoint();var r=parseInt(t,16);return r===0||Hs(r)||r>1114111?ht:r}return A===nA?ht:A},e.prototype.consumeName=function(){for(var A="";;){var t=this.consumeCodePoint();if(dt(t))A+=S(t);else if(UA(t,this.peekCodePoint(0)))A+=S(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(t),A}},e}(),UB=function(){function e(A){this._tokens=A}return e.create=function(A){var t=new fB;return t.write(A),new e(t.read())},e.parseValue=function(A){return e.create(A).parseComponentValue()},e.parseValues=function(A){return e.create(A).parseComponentValues()},e.prototype.parseComponentValue=function(){for(var A=this.consumeToken();A.type===31;)A=this.consumeToken();if(A.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);var t=this.consumeComponentValue();do A=this.consumeToken();while(A.type===31);if(A.type===32)return t;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},e.prototype.parseComponentValues=function(){for(var A=[];;){var t=this.consumeComponentValue();if(t.type===32)return A;A.push(t),A.push()}},e.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case 11:case 28:case 2:return this.consumeSimpleBlock(A.type);case 19:return this.consumeFunction(A)}return A},e.prototype.consumeSimpleBlock=function(A){for(var t={type:A,values:[]},r=this.consumeToken();;){if(r.type===32||qs(r,A))return t;this.reconsumeToken(r),t.values.push(this.consumeComponentValue()),r=this.consumeToken()}},e.prototype.consumeFunction=function(A){for(var t={name:A.value,values:[],type:18};;){var r=this.consumeToken();if(r.type===32||r.type===3)return t;this.reconsumeToken(r),t.values.push(this.consumeComponentValue())}},e.prototype.consumeToken=function(){var A=this._tokens.shift();return typeof A>"u"?Nr:A},e.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},e}(),Ce=function(e){return e.type===15},kA=function(e){return e.type===17},D=function(e){return e.type===20},Zs=function(e){return e.type===0},Xr=function(e,A){return D(e)&&e.value===A},FB=function(e){return e.type!==31},PA=function(e){return e.type!==31&&e.type!==4},sA=function(e){var A=[],t=[];return e.forEach(function(r){if(r.type===4){if(t.length===0)throw new Error("Error parsing function args, zero tokens for arg");A.push(t),t=[];return}r.type!==31&&t.push(r)}),t.length&&A.push(t),A},qs=function(e,A){return A===11&&e.type===12||A===28&&e.type===29?!0:A===2&&e.type===3},pA=function(e){return e.type===17||e.type===15},M=function(e){return e.type===16||pA(e)},hB=function(e){return e.length>1?[e[0],e[1]]:[e[0]]},X={type:17,number:0,flags:ce},$r={type:16,number:50,flags:ce},hA={type:16,number:100,flags:ce},re=function(e,A,t){var r=e[0],B=e[1];return[b(r,A),b(typeof B<"u"?B:r,t)]},b=function(e,A){if(e.type===16)return e.number/100*A;if(Ce(e))switch(e.unit){case"rem":case"em":return 16*e.number;case"px":default:return e.number}return e.number},dB="deg",EB="grad",HB="rad",pB="turn",Ar={name:"angle",parse:function(e,A){if(A.type===15)switch(A.unit){case dB:return Math.PI*A.number/180;case EB:return Math.PI/200*A.number;case HB:return A.number;case pB:return Math.PI*2*A.number}throw new Error("Unsupported angle type")}},IB=function(e){return e.type===15&&(e.unit===dB||e.unit===EB||e.unit===HB||e.unit===pB)},vB=function(e){var A=e.filter(D).map(function(t){return t.value}).join(" ");switch(A){case"to bottom right":case"to right bottom":case"left top":case"top left":return[X,X];case"to top":case"bottom":return AA(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[X,hA];case"to right":case"left":return AA(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[hA,hA];case"to bottom":case"top":return AA(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[hA,X];case"to left":case"right":return AA(270)}return 0},AA=function(e){return Math.PI*e/180},EA={name:"color",parse:function(e,A){if(A.type===18){var t=js[A.name];if(typeof t>"u")throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return t(e,A.values)}if(A.type===5){if(A.value.length===3){var r=A.value.substring(0,1),B=A.value.substring(1,2),n=A.value.substring(2,3);return dA(parseInt(r+r,16),parseInt(B+B,16),parseInt(n+n,16),1)}if(A.value.length===4){var r=A.value.substring(0,1),B=A.value.substring(1,2),n=A.value.substring(2,3),s=A.value.substring(3,4);return dA(parseInt(r+r,16),parseInt(B+B,16),parseInt(n+n,16),parseInt(s+s,16)/255)}if(A.value.length===6){var r=A.value.substring(0,2),B=A.value.substring(2,4),n=A.value.substring(4,6);return dA(parseInt(r,16),parseInt(B,16),parseInt(n,16),1)}if(A.value.length===8){var r=A.value.substring(0,2),B=A.value.substring(2,4),n=A.value.substring(4,6),s=A.value.substring(6,8);return dA(parseInt(r,16),parseInt(B,16),parseInt(n,16),parseInt(s,16)/255)}}if(A.type===20){var i=wA[A.value.toUpperCase()];if(typeof i<"u")return i}return wA.TRANSPARENT}},HA=function(e){return(255&e)===0},R=function(e){var A=255&e,t=255&e>>8,r=255&e>>16,B=255&e>>24;return A<255?"rgba("+B+","+r+","+t+","+A/255+")":"rgb("+B+","+r+","+t+")"},dA=function(e,A,t,r){return(e<<24|A<<16|t<<8|Math.round(r*255)<<0)>>>0},Et=function(e,A){if(e.type===17)return e.number;if(e.type===16){var t=A===3?1:255;return A===3?e.number/100*t:Math.round(e.number/100*t)}return 0},Ht=function(e,A){var t=A.filter(PA);if(t.length===3){var r=t.map(Et),B=r[0],n=r[1],s=r[2];return dA(B,n,s,1)}if(t.length===4){var i=t.map(Et),B=i[0],n=i[1],s=i[2],a=i[3];return dA(B,n,s,a)}return 0};function ur(e,A,t){return t<0&&(t+=1),t>=1&&(t-=1),t<1/6?(A-e)*t*6+e:t<1/2?A:t<2/3?(A-e)*6*(2/3-t)+e:e}var pt=function(e,A){var t=A.filter(PA),r=t[0],B=t[1],n=t[2],s=t[3],i=(r.type===17?AA(r.number):Ar.parse(e,r))/(Math.PI*2),a=M(B)?B.number/100:0,o=M(n)?n.number/100:0,Q=typeof s<"u"&&M(s)?b(s,1):1;if(a===0)return dA(o*255,o*255,o*255,1);var g=o<=.5?o*(a+1):o+a-o*a,w=o*2-g,f=ur(w,g,i+1/3),c=ur(w,g,i),C=ur(w,g,i-1/3);return dA(f*255,c*255,C*255,Q)},js={hsl:pt,hsla:pt,rgb:Ht,rgba:Ht},se=function(e,A){return EA.parse(e,UB.create(A).parseComponentValue())},wA={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},zs={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(e,A){return A.map(function(t){if(D(t))switch(t.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},$s={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},er=function(e,A){var t=EA.parse(e,A[0]),r=A[1];return r&&M(r)?{color:t,stop:r}:{color:t,stop:null}},It=function(e,A){var t=e[0],r=e[e.length-1];t.stop===null&&(t.stop=X),r.stop===null&&(r.stop=hA);for(var B=[],n=0,s=0;sn?B.push(a):B.push(n),n=a}else B.push(null)}for(var o=null,s=0;ss.optimumDistance)?{optimumCorner:i,optimumDistance:Q}:s},{optimumDistance:B?1/0:-1/0,optimumCorner:null}).optimumCorner},ra=function(e,A,t,r,B){var n=0,s=0;switch(e.size){case 0:e.shape===0?n=s=Math.min(Math.abs(A),Math.abs(A-r),Math.abs(t),Math.abs(t-B)):e.shape===1&&(n=Math.min(Math.abs(A),Math.abs(A-r)),s=Math.min(Math.abs(t),Math.abs(t-B)));break;case 2:if(e.shape===0)n=s=Math.min(rA(A,t),rA(A,t-B),rA(A-r,t),rA(A-r,t-B));else if(e.shape===1){var i=Math.min(Math.abs(t),Math.abs(t-B))/Math.min(Math.abs(A),Math.abs(A-r)),a=vt(r,B,A,t,!0),o=a[0],Q=a[1];n=rA(o-A,(Q-t)/i),s=i*n}break;case 1:e.shape===0?n=s=Math.max(Math.abs(A),Math.abs(A-r),Math.abs(t),Math.abs(t-B)):e.shape===1&&(n=Math.max(Math.abs(A),Math.abs(A-r)),s=Math.max(Math.abs(t),Math.abs(t-B)));break;case 3:if(e.shape===0)n=s=Math.max(rA(A,t),rA(A,t-B),rA(A-r,t),rA(A-r,t-B));else if(e.shape===1){var i=Math.max(Math.abs(t),Math.abs(t-B))/Math.max(Math.abs(A),Math.abs(A-r)),g=vt(r,B,A,t,!1),o=g[0],Q=g[1];n=rA(o-A,(Q-t)/i),s=i*n}break}return Array.isArray(e.size)&&(n=b(e.size[0],r),s=e.size.length===2?b(e.size[1],B):n),[n,s]},ta=function(e,A){var t=AA(180),r=[];return sA(A).forEach(function(B,n){if(n===0){var s=B[0];if(s.type===20&&s.value==="to"){t=vB(B);return}else if(IB(s)){t=Ar.parse(e,s);return}}var i=er(e,B);r.push(i)}),{angle:t,stops:r,type:1}},Le=function(e,A){var t=AA(180),r=[];return sA(A).forEach(function(B,n){if(n===0){var s=B[0];if(s.type===20&&["top","left","right","bottom"].indexOf(s.value)!==-1){t=vB(B);return}else if(IB(s)){t=(Ar.parse(e,s)+AA(270))%AA(360);return}}var i=er(e,B);r.push(i)}),{angle:t,stops:r,type:1}},Ba=function(e,A){var t=AA(180),r=[],B=1,n=0,s=3,i=[];return sA(A).forEach(function(a,o){var Q=a[0];if(o===0){if(D(Q)&&Q.value==="linear"){B=1;return}else if(D(Q)&&Q.value==="radial"){B=2;return}}if(Q.type===18){if(Q.name==="from"){var g=EA.parse(e,Q.values[0]);r.push({stop:X,color:g})}else if(Q.name==="to"){var g=EA.parse(e,Q.values[0]);r.push({stop:hA,color:g})}else if(Q.name==="color-stop"){var w=Q.values.filter(PA);if(w.length===2){var g=EA.parse(e,w[1]),f=w[0];kA(f)&&r.push({stop:{type:16,number:f.number*100,flags:f.flags},color:g})}}}}),B===1?{angle:(t+AA(180))%AA(360),stops:r,type:B}:{size:s,shape:n,stops:r,position:i,type:B}},yB="closest-side",KB="farthest-side",mB="closest-corner",LB="farthest-corner",DB="circle",bB="ellipse",xB="cover",TB="contain",na=function(e,A){var t=0,r=3,B=[],n=[];return sA(A).forEach(function(s,i){var a=!0;if(i===0){var o=!1;a=s.reduce(function(g,w){if(o)if(D(w))switch(w.value){case"center":return n.push($r),g;case"top":case"left":return n.push(X),g;case"right":case"bottom":return n.push(hA),g}else(M(w)||pA(w))&&n.push(w);else if(D(w))switch(w.value){case DB:return t=0,!1;case bB:return t=1,!1;case"at":return o=!0,!1;case yB:return r=0,!1;case xB:case KB:return r=1,!1;case TB:case mB:return r=2,!1;case LB:return r=3,!1}else if(pA(w)||M(w))return Array.isArray(r)||(r=[]),r.push(w),!1;return g},a)}if(a){var Q=er(e,s);B.push(Q)}}),{size:r,shape:t,stops:B,position:n,type:2}},De=function(e,A){var t=0,r=3,B=[],n=[];return sA(A).forEach(function(s,i){var a=!0;if(i===0?a=s.reduce(function(Q,g){if(D(g))switch(g.value){case"center":return n.push($r),!1;case"top":case"left":return n.push(X),!1;case"right":case"bottom":return n.push(hA),!1}else if(M(g)||pA(g))return n.push(g),!1;return Q},a):i===1&&(a=s.reduce(function(Q,g){if(D(g))switch(g.value){case DB:return t=0,!1;case bB:return t=1,!1;case TB:case yB:return r=0,!1;case KB:return r=1,!1;case mB:return r=2,!1;case xB:case LB:return r=3,!1}else if(pA(g)||M(g))return Array.isArray(r)||(r=[]),r.push(g),!1;return Q},a)),a){var o=er(e,s);B.push(o)}}),{size:r,shape:t,stops:B,position:n,type:2}},sa=function(e){return e.type===1},aa=function(e){return e.type===2},At={name:"image",parse:function(e,A){if(A.type===22){var t={url:A.value,type:0};return e.cache.addImage(A.value),t}if(A.type===18){var r=SB[A.name];if(typeof r>"u")throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return r(e,A.values)}throw new Error("Unsupported image type "+A.type)}};function ia(e){return!(e.type===20&&e.value==="none")&&(e.type!==18||!!SB[e.name])}var SB={"linear-gradient":ta,"-moz-linear-gradient":Le,"-ms-linear-gradient":Le,"-o-linear-gradient":Le,"-webkit-linear-gradient":Le,"radial-gradient":na,"-moz-radial-gradient":De,"-ms-radial-gradient":De,"-o-radial-gradient":De,"-webkit-radial-gradient":De,"-webkit-gradient":Ba},oa={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(e,A){if(A.length===0)return[];var t=A[0];return t.type===20&&t.value==="none"?[]:A.filter(function(r){return PA(r)&&ia(r)}).map(function(r){return At.parse(e,r)})}},Qa={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(e,A){return A.map(function(t){if(D(t))switch(t.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},ga={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(e,A){return sA(A).map(function(t){return t.filter(M)}).map(hB)}},wa={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(e,A){return sA(A).map(function(t){return t.filter(D).map(function(r){return r.value}).join(" ")}).map(ca)}},ca=function(e){switch(e){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}},JA;(function(e){e.AUTO="auto",e.CONTAIN="contain",e.COVER="cover"})(JA||(JA={}));var Ca={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(e,A){return sA(A).map(function(t){return t.filter(ua)})}},ua=function(e){return D(e)||M(e)},rr=function(e){return{name:"border-"+e+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},la=rr("top"),fa=rr("right"),Ua=rr("bottom"),Fa=rr("left"),tr=function(e){return{name:"border-radius-"+e,initialValue:"0 0",prefix:!1,type:1,parse:function(A,t){return hB(t.filter(M))}}},ha=tr("top-left"),da=tr("top-right"),Ea=tr("bottom-right"),Ha=tr("bottom-left"),Br=function(e){return{name:"border-"+e+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(A,t){switch(t){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},pa=Br("top"),Ia=Br("right"),va=Br("bottom"),ya=Br("left"),nr=function(e){return{name:"border-"+e+"-width",initialValue:"0",type:0,prefix:!1,parse:function(A,t){return Ce(t)?t.number:0}}},Ka=nr("top"),ma=nr("right"),La=nr("bottom"),Da=nr("left"),ba={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},xa={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(e,A){switch(A){case"rtl":return 1;case"ltr":default:return 0}}},Ta={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(e,A){return A.filter(D).reduce(function(t,r){return t|Sa(r.value)},0)}},Sa=function(e){switch(e){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},Oa={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},Ma={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(e,A){return A.type===20&&A.value==="normal"?0:A.type===17||A.type===15?A.number:0}},Je;(function(e){e.NORMAL="normal",e.STRICT="strict"})(Je||(Je={}));var Ga={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){switch(A){case"strict":return Je.STRICT;case"normal":default:return Je.NORMAL}}},Ra={name:"line-height",initialValue:"normal",prefix:!1,type:4},yt=function(e,A){return D(e)&&e.value==="normal"?1.2*A:e.type===17?A*e.number:M(e)?b(e,A):A},Va={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(e,A){return A.type===20&&A.value==="none"?null:At.parse(e,A)}},Na={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(e,A){switch(A){case"inside":return 0;case"outside":default:return 1}}},_r={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},sr=function(e){return{name:"margin-"+e,initialValue:"0",prefix:!1,type:4}},Xa=sr("top"),_a=sr("right"),Ja=sr("bottom"),Pa=sr("left"),ka={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(e,A){return A.filter(D).map(function(t){switch(t.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},Ya={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){switch(A){case"break-word":return"break-word";case"normal":default:return"normal"}}},ar=function(e){return{name:"padding-"+e,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},Wa=ar("top"),Za=ar("right"),qa=ar("bottom"),ja=ar("left"),za={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(e,A){switch(A){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},$a={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(e,A){switch(A){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},Ai={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(e,A){return A.length===1&&Xr(A[0],"none")?[]:sA(A).map(function(t){for(var r={color:wA.TRANSPARENT,offsetX:X,offsetY:X,blur:X},B=0,n=0;n"u")throw new Error('Attempting to parse an unsupported transform function "'+A.name+'"');return t(A.values)}return null}},ti=function(e){var A=e.filter(function(t){return t.type===17}).map(function(t){return t.number});return A.length===6?A:null},Bi=function(e){var A=e.filter(function(a){return a.type===17}).map(function(a){return a.number}),t=A[0],r=A[1];A[2],A[3];var B=A[4],n=A[5];A[6],A[7],A[8],A[9],A[10],A[11];var s=A[12],i=A[13];return A[14],A[15],A.length===16?[t,r,B,n,s,i]:null},ni={matrix:ti,matrix3d:Bi},Kt={type:16,number:50,flags:ce},si=[Kt,Kt],ai={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(e,A){var t=A.filter(M);return t.length!==2?si:[t[0],t[1]]}},ii={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(e,A){switch(A){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}},ae;(function(e){e.NORMAL="normal",e.BREAK_ALL="break-all",e.KEEP_ALL="keep-all"})(ae||(ae={}));var oi={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){switch(A){case"break-all":return ae.BREAK_ALL;case"keep-all":return ae.KEEP_ALL;case"normal":default:return ae.NORMAL}}},Qi={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(e,A){if(A.type===20)return{auto:!0,order:0};if(kA(A))return{auto:!1,order:A.number};throw new Error("Invalid z-index number parsed")}},OB={name:"time",parse:function(e,A){if(A.type===15)switch(A.unit.toLowerCase()){case"s":return 1e3*A.number;case"ms":return A.number}throw new Error("Unsupported time type")}},gi={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(e,A){return kA(A)?A.number:1}},wi={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},ci={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(e,A){return A.filter(D).map(function(t){switch(t.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(t){return t!==0})}},Ci={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(e,A){var t=[],r=[];return A.forEach(function(B){switch(B.type){case 20:case 0:t.push(B.value);break;case 17:t.push(B.number.toString());break;case 4:r.push(t.join(" ")),t.length=0;break}}),t.length&&r.push(t.join(" ")),r.map(function(B){return B.indexOf(" ")===-1?B:"'"+B+"'"})}},ui={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},li={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(e,A){if(kA(A))return A.number;if(D(A))switch(A.value){case"bold":return 700;case"normal":default:return 400}return 400}},fi={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(e,A){return A.filter(D).map(function(t){return t.value})}},Ui={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(e,A){switch(A){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},G=function(e,A){return(e&A)!==0},Fi={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(e,A){if(A.length===0)return[];var t=A[0];return t.type===20&&t.value==="none"?[]:A}},hi={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(e,A){if(A.length===0)return null;var t=A[0];if(t.type===20&&t.value==="none")return null;for(var r=[],B=A.filter(FB),n=0;n1?1:0],this.overflowWrap=U(A,Ya,t.overflowWrap),this.paddingTop=U(A,Wa,t.paddingTop),this.paddingRight=U(A,Za,t.paddingRight),this.paddingBottom=U(A,qa,t.paddingBottom),this.paddingLeft=U(A,ja,t.paddingLeft),this.paintOrder=U(A,Ii,t.paintOrder),this.position=U(A,$a,t.position),this.textAlign=U(A,za,t.textAlign),this.textDecorationColor=U(A,wi,(r=t.textDecorationColor)!==null&&r!==void 0?r:t.color),this.textDecorationLine=U(A,ci,(B=t.textDecorationLine)!==null&&B!==void 0?B:t.textDecoration),this.textShadow=U(A,Ai,t.textShadow),this.textTransform=U(A,ei,t.textTransform),this.transform=U(A,ri,t.transform),this.transformOrigin=U(A,ai,t.transformOrigin),this.visibility=U(A,ii,t.visibility),this.webkitTextStrokeColor=U(A,vi,t.webkitTextStrokeColor),this.webkitTextStrokeWidth=U(A,yi,t.webkitTextStrokeWidth),this.wordBreak=U(A,oi,t.wordBreak),this.zIndex=U(A,Qi,t.zIndex)}return e.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},e.prototype.isTransparent=function(){return HA(this.backgroundColor)},e.prototype.isTransformed=function(){return this.transform!==null},e.prototype.isPositioned=function(){return this.position!==0},e.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},e.prototype.isFloating=function(){return this.float!==0},e.prototype.isInlineLevel=function(){return G(this.display,4)||G(this.display,33554432)||G(this.display,268435456)||G(this.display,536870912)||G(this.display,67108864)||G(this.display,134217728)},e}(),mi=function(){function e(A,t){this.content=U(A,Fi,t.content),this.quotes=U(A,Hi,t.quotes)}return e}(),Lt=function(){function e(A,t){this.counterIncrement=U(A,hi,t.counterIncrement),this.counterReset=U(A,di,t.counterReset)}return e}(),U=function(e,A,t){var r=new fB,B=t!==null&&typeof t<"u"?t.toString():A.initialValue;r.write(B);var n=new UB(r.read());switch(A.type){case 2:var s=n.parseComponentValue();return A.parse(e,D(s)?s.value:A.initialValue);case 0:return A.parse(e,n.parseComponentValue());case 1:return A.parse(e,n.parseComponentValues());case 4:return n.parseComponentValue();case 3:switch(A.format){case"angle":return Ar.parse(e,n.parseComponentValue());case"color":return EA.parse(e,n.parseComponentValue());case"image":return At.parse(e,n.parseComponentValue());case"length":var i=n.parseComponentValue();return pA(i)?i:X;case"length-percentage":var a=n.parseComponentValue();return M(a)?a:X;case"time":return OB.parse(e,n.parseComponentValue())}break}},Li="data-html2canvas-debug",Di=function(e){var A=e.getAttribute(Li);switch(A){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},Jr=function(e,A){var t=Di(e);return t===1||A===t},aA=function(){function e(A,t){if(this.context=A,this.textNodes=[],this.elements=[],this.flags=0,Jr(t,3))debugger;this.styles=new Ki(A,window.getComputedStyle(t,null)),Yr(t)&&(this.styles.animationDuration.some(function(r){return r>0})&&(t.style.animationDuration="0s"),this.styles.transform!==null&&(t.style.transform="none")),this.bounds=ze(this.context,t),Jr(t,4)&&(this.flags|=16)}return e}(),bi="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",Dt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",te=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var be=0;be>4,Q[B++]=(s&15)<<4|i>>2,Q[B++]=(i&3)<<6|a&63;return o},Ti=function(e){for(var A=e.length,t=[],r=0;r>xA,Mi=1<>xA,Ri=MB+Gi,Vi=Ri,Ni=32,Xi=Vi+Ni,_i=65536>>et,Ji=1<=0){if(A<55296||A>56319&&A<=65535)return t=this.index[A>>xA],t=(t<>xA)],t=(t<>et),t=this.index[t],t+=A>>xA&Pi,t=this.index[t],t=(t<"u"?[]:new Uint8Array(256);for(var xe=0;xe=55296&&B<=56319&&t>10)+55296,s%1024+56320)),(B+1===t||r.length>16384)&&(n+=String.fromCharCode.apply(String,r),r.length=0)}return n},Ao=Yi(bi),z="×",Hr="÷",eo=function(e){return Ao.get(e)},ro=function(e,A,t){var r=t-2,B=A[r],n=A[t-1],s=A[t];if(n===Ur&&s===Fr)return z;if(n===Ur||n===Fr||n===Tt||s===Ur||s===Fr||s===Tt)return Hr;if(n===Ot&&[Ot,hr,Mt,Gt].indexOf(s)!==-1||(n===Mt||n===hr)&&(s===hr||s===dr)||(n===Gt||n===dr)&&s===dr||s===Rt||s===St||s===ji||n===qi)return z;if(n===Rt&&s===Vt){for(;B===St;)B=A[--r];if(B===Vt)return z}if(n===Er&&s===Er){for(var i=0;B===Er;)i++,B=A[--r];if(i%2===0)return z}return Hr},to=function(e){var A=zi(e),t=A.length,r=0,B=0,n=A.map(eo);return{next:function(){if(r>=t)return{done:!0,value:null};for(var s=z;rs.x||Q.y>s.y;return s=Q,o===0?!0:g});return e.body.removeChild(A),i},ao=function(){return typeof new Image().crossOrigin<"u"},io=function(){return typeof new XMLHttpRequest().responseType=="string"},oo=function(e){var A=new Image,t=e.createElement("canvas"),r=t.getContext("2d");if(!r)return!1;A.src="data:image/svg+xml,";try{r.drawImage(A,0,0),t.toDataURL()}catch{return!1}return!0},Nt=function(e){return e[0]===0&&e[1]===255&&e[2]===0&&e[3]===255},Qo=function(e){var A=e.createElement("canvas"),t=100;A.width=t,A.height=t;var r=A.getContext("2d");if(!r)return Promise.reject(!1);r.fillStyle="rgb(0, 255, 0)",r.fillRect(0,0,t,t);var B=new Image,n=A.toDataURL();B.src=n;var s=Pr(t,t,0,0,B);return r.fillStyle="red",r.fillRect(0,0,t,t),Xt(s).then(function(i){r.drawImage(i,0,0);var a=r.getImageData(0,0,t,t).data;r.fillStyle="red",r.fillRect(0,0,t,t);var o=e.createElement("div");return o.style.backgroundImage="url("+n+")",o.style.height=t+"px",Nt(a)?Xt(Pr(t,t,0,0,o)):Promise.reject(!1)}).then(function(i){return r.drawImage(i,0,0),Nt(r.getImageData(0,0,t,t).data)}).catch(function(){return!1})},Pr=function(e,A,t,r,B){var n="http://www.w3.org/2000/svg",s=document.createElementNS(n,"svg"),i=document.createElementNS(n,"foreignObject");return s.setAttributeNS(null,"width",e.toString()),s.setAttributeNS(null,"height",A.toString()),i.setAttributeNS(null,"width","100%"),i.setAttributeNS(null,"height","100%"),i.setAttributeNS(null,"x",t.toString()),i.setAttributeNS(null,"y",r.toString()),i.setAttributeNS(null,"externalResourcesRequired","true"),s.appendChild(i),i.appendChild(B),s},Xt=function(e){return new Promise(function(A,t){var r=new Image;r.onload=function(){return A(r)},r.onerror=t,r.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(e))})},N={get SUPPORT_RANGE_BOUNDS(){var e=no(document);return Object.defineProperty(N,"SUPPORT_RANGE_BOUNDS",{value:e}),e},get SUPPORT_WORD_BREAKING(){var e=N.SUPPORT_RANGE_BOUNDS&&so(document);return Object.defineProperty(N,"SUPPORT_WORD_BREAKING",{value:e}),e},get SUPPORT_SVG_DRAWING(){var e=oo(document);return Object.defineProperty(N,"SUPPORT_SVG_DRAWING",{value:e}),e},get SUPPORT_FOREIGNOBJECT_DRAWING(){var e=typeof Array.from=="function"&&typeof window.fetch=="function"?Qo(document):Promise.resolve(!1);return Object.defineProperty(N,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:e}),e},get SUPPORT_CORS_IMAGES(){var e=ao();return Object.defineProperty(N,"SUPPORT_CORS_IMAGES",{value:e}),e},get SUPPORT_RESPONSE_TYPE(){var e=io();return Object.defineProperty(N,"SUPPORT_RESPONSE_TYPE",{value:e}),e},get SUPPORT_CORS_XHR(){var e="withCredentials"in new XMLHttpRequest;return Object.defineProperty(N,"SUPPORT_CORS_XHR",{value:e}),e},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var e=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(N,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:e}),e}},ie=function(){function e(A,t){this.text=A,this.bounds=t}return e}(),go=function(e,A,t,r){var B=Co(A,t),n=[],s=0;return B.forEach(function(i){if(t.textDecorationLine.length||i.trim().length>0)if(N.SUPPORT_RANGE_BOUNDS){var a=_t(r,s,i.length).getClientRects();if(a.length>1){var o=rt(i),Q=0;o.forEach(function(w){n.push(new ie(w,cA.fromDOMRectList(e,_t(r,Q+s,w.length).getClientRects()))),Q+=w.length})}else n.push(new ie(i,cA.fromDOMRectList(e,a)))}else{var g=r.splitText(i.length);n.push(new ie(i,wo(e,r))),r=g}else N.SUPPORT_RANGE_BOUNDS||(r=r.splitText(i.length));s+=i.length}),n},wo=function(e,A){var t=A.ownerDocument;if(t){var r=t.createElement("html2canvaswrapper");r.appendChild(A.cloneNode(!0));var B=A.parentNode;if(B){B.replaceChild(r,A);var n=ze(e,r);return r.firstChild&&B.replaceChild(r.firstChild,r),n}}return cA.EMPTY},_t=function(e,A,t){var r=e.ownerDocument;if(!r)throw new Error("Node has no owner document");var B=r.createRange();return B.setStart(e,A),B.setEnd(e,A+t),B},rt=function(e){if(N.SUPPORT_NATIVE_TEXT_SEGMENTATION){var A=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(A.segment(e)).map(function(t){return t.segment})}return Bo(e)},co=function(e,A){if(N.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(t.segment(e)).map(function(r){return r.segment})}return lo(e,A)},Co=function(e,A){return A.letterSpacing!==0?rt(e):co(e,A)},uo=[32,160,4961,65792,65793,4153,4241],lo=function(e,A){for(var t=_n(e,{lineBreak:A.lineBreak,wordBreak:A.overflowWrap==="break-word"?"break-word":A.wordBreak}),r=[],B,n=function(){if(B.value){var s=B.value.slice(),i=$e(s),a="";i.forEach(function(o){uo.indexOf(o)===-1?a+=S(o):(a.length&&r.push(a),r.push(S(o)),a="")}),a.length&&r.push(a)}};!(B=t.next()).done;)n();return r},fo=function(){function e(A,t,r){this.text=Uo(t.data,r.textTransform),this.textBounds=go(A,this.text,r,t)}return e}(),Uo=function(e,A){switch(A){case 1:return e.toLowerCase();case 3:return e.replace(Fo,ho);case 2:return e.toUpperCase();default:return e}},Fo=/(^|\s|:|-|\(|\))([a-z])/g,ho=function(e,A,t){return e.length>0?A+t.toUpperCase():e},GB=function(e){tA(A,e);function A(t,r){var B=e.call(this,t,r)||this;return B.src=r.currentSrc||r.src,B.intrinsicWidth=r.naturalWidth,B.intrinsicHeight=r.naturalHeight,B.context.cache.addImage(B.src),B}return A}(aA),RB=function(e){tA(A,e);function A(t,r){var B=e.call(this,t,r)||this;return B.canvas=r,B.intrinsicWidth=r.width,B.intrinsicHeight=r.height,B}return A}(aA),VB=function(e){tA(A,e);function A(t,r){var B=e.call(this,t,r)||this,n=new XMLSerializer,s=ze(t,r);return r.setAttribute("width",s.width+"px"),r.setAttribute("height",s.height+"px"),B.svg="data:image/svg+xml,"+encodeURIComponent(n.serializeToString(r)),B.intrinsicWidth=r.width.baseVal.value,B.intrinsicHeight=r.height.baseVal.value,B.context.cache.addImage(B.svg),B}return A}(aA),NB=function(e){tA(A,e);function A(t,r){var B=e.call(this,t,r)||this;return B.value=r.value,B}return A}(aA),kr=function(e){tA(A,e);function A(t,r){var B=e.call(this,t,r)||this;return B.start=r.start,B.reversed=typeof r.reversed=="boolean"&&r.reversed===!0,B}return A}(aA),Eo=[{type:15,flags:0,unit:"px",number:3}],Ho=[{type:16,flags:0,number:50}],po=function(e){return e.width>e.height?new cA(e.left+(e.width-e.height)/2,e.top,e.height,e.height):e.width0)t.textNodes.push(new fo(e,B,t.styles));else if(_A(B))if(jB(B)&&B.assignedNodes)B.assignedNodes().forEach(function(i){return Ve(e,i,t,r)});else{var s=PB(e,B);s.styles.isVisible()&&(Ko(B,s,r)?s.flags|=4:mo(s.styles)&&(s.flags|=2),yo.indexOf(B.tagName)!==-1&&(s.flags|=8),t.elements.push(s),B.slot,B.shadowRoot?Ve(e,B.shadowRoot,s,r):!Ye(B)&&!WB(B)&&!We(B)&&Ve(e,B,s,r))}},PB=function(e,A){return Wr(A)?new GB(e,A):ZB(A)?new RB(e,A):WB(A)?new VB(e,A):Lo(A)?new NB(e,A):Do(A)?new kr(e,A):bo(A)?new tt(e,A):We(A)?new XB(e,A):Ye(A)?new _B(e,A):qB(A)?new JB(e,A):new aA(e,A)},kB=function(e,A){var t=PB(e,A);return t.flags|=4,Ve(e,A,t,t),t},Ko=function(e,A,t){return A.styles.isPositionedWithZIndex()||A.styles.opacity<1||A.styles.isTransformed()||Bt(e)&&t.styles.isTransparent()},mo=function(e){return e.isPositioned()||e.isFloating()},YB=function(e){return e.nodeType===Node.TEXT_NODE},_A=function(e){return e.nodeType===Node.ELEMENT_NODE},Yr=function(e){return _A(e)&&typeof e.style<"u"&&!Ne(e)},Ne=function(e){return typeof e.className=="object"},Lo=function(e){return e.tagName==="LI"},Do=function(e){return e.tagName==="OL"},bo=function(e){return e.tagName==="INPUT"},xo=function(e){return e.tagName==="HTML"},WB=function(e){return e.tagName==="svg"},Bt=function(e){return e.tagName==="BODY"},ZB=function(e){return e.tagName==="CANVAS"},Pt=function(e){return e.tagName==="VIDEO"},Wr=function(e){return e.tagName==="IMG"},qB=function(e){return e.tagName==="IFRAME"},kt=function(e){return e.tagName==="STYLE"},To=function(e){return e.tagName==="SCRIPT"},Ye=function(e){return e.tagName==="TEXTAREA"},We=function(e){return e.tagName==="SELECT"},jB=function(e){return e.tagName==="SLOT"},Yt=function(e){return e.tagName.indexOf("-")>0},So=function(){function e(){this.counters={}}return e.prototype.getCounterValue=function(A){var t=this.counters[A];return t&&t.length?t[t.length-1]:1},e.prototype.getCounterValues=function(A){var t=this.counters[A];return t||[]},e.prototype.pop=function(A){var t=this;A.forEach(function(r){return t.counters[r].pop()})},e.prototype.parse=function(A){var t=this,r=A.counterIncrement,B=A.counterReset,n=!0;r!==null&&r.forEach(function(i){var a=t.counters[i.counter];a&&i.increment!==0&&(n=!1,a.length||a.push(1),a[Math.max(0,a.length-1)]+=i.increment)});var s=[];return n&&B.forEach(function(i){var a=t.counters[i.counter];s.push(i.counter),a||(a=t.counters[i.counter]=[]),a.push(i.reset)}),s},e}(),Wt={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},Zt={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},Oo={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},Mo={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},GA=function(e,A,t,r,B,n){return et?we(e,B,n.length>0):r.integers.reduce(function(s,i,a){for(;e>=i;)e-=i,s+=r.values[a];return s},"")+n},zB=function(e,A,t,r){var B="";do t||e--,B=r(e)+B,e/=A;while(e*A>=A);return B},T=function(e,A,t,r,B){var n=t-A+1;return(e<0?"-":"")+(zB(Math.abs(e),n,r,function(s){return S(Math.floor(s%n)+A)})+B)},mA=function(e,A,t){t===void 0&&(t=". ");var r=A.length;return zB(Math.abs(e),r,!1,function(B){return A[Math.floor(B%r)]})+t},NA=1,lA=2,fA=4,Be=8,gA=function(e,A,t,r,B,n){if(e<-9999||e>9999)return we(e,4,B.length>0);var s=Math.abs(e),i=B;if(s===0)return A[0]+i;for(var a=0;s>0&&a<=4;a++){var o=s%10;o===0&&G(n,NA)&&i!==""?i=A[o]+i:o>1||o===1&&a===0||o===1&&a===1&&G(n,lA)||o===1&&a===1&&G(n,fA)&&e>100||o===1&&a>1&&G(n,Be)?i=A[o]+(a>0?t[a-1]:"")+i:o===1&&a>0&&(i=t[a-1]+i),s=Math.floor(s/10)}return(e<0?r:"")+i},qt="十百千萬",jt="拾佰仟萬",zt="マイナス",pr="마이너스",we=function(e,A,t){var r=t?". ":"",B=t?"、":"",n=t?", ":"",s=t?" ":"";switch(A){case 0:return"•"+s;case 1:return"◦"+s;case 2:return"◾"+s;case 5:var i=T(e,48,57,!0,r);return i.length<4?"0"+i:i;case 4:return mA(e,"〇一二三四五六七八九",B);case 6:return GA(e,1,3999,Wt,3,r).toLowerCase();case 7:return GA(e,1,3999,Wt,3,r);case 8:return T(e,945,969,!1,r);case 9:return T(e,97,122,!1,r);case 10:return T(e,65,90,!1,r);case 11:return T(e,1632,1641,!0,r);case 12:case 49:return GA(e,1,9999,Zt,3,r);case 35:return GA(e,1,9999,Zt,3,r).toLowerCase();case 13:return T(e,2534,2543,!0,r);case 14:case 30:return T(e,6112,6121,!0,r);case 15:return mA(e,"子丑寅卯辰巳午未申酉戌亥",B);case 16:return mA(e,"甲乙丙丁戊己庚辛壬癸",B);case 17:case 48:return gA(e,"零一二三四五六七八九",qt,"負",B,lA|fA|Be);case 47:return gA(e,"零壹貳參肆伍陸柒捌玖",jt,"負",B,NA|lA|fA|Be);case 42:return gA(e,"零一二三四五六七八九",qt,"负",B,lA|fA|Be);case 41:return gA(e,"零壹贰叁肆伍陆柒捌玖",jt,"负",B,NA|lA|fA|Be);case 26:return gA(e,"〇一二三四五六七八九","十百千万",zt,B,0);case 25:return gA(e,"零壱弐参四伍六七八九","拾百千万",zt,B,NA|lA|fA);case 31:return gA(e,"영일이삼사오육칠팔구","십백천만",pr,n,NA|lA|fA);case 33:return gA(e,"零一二三四五六七八九","十百千萬",pr,n,0);case 32:return gA(e,"零壹貳參四五六七八九","拾百千",pr,n,NA|lA|fA);case 18:return T(e,2406,2415,!0,r);case 20:return GA(e,1,19999,Mo,3,r);case 21:return T(e,2790,2799,!0,r);case 22:return T(e,2662,2671,!0,r);case 22:return GA(e,1,10999,Oo,3,r);case 23:return mA(e,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case 24:return mA(e,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case 27:return T(e,3302,3311,!0,r);case 28:return mA(e,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",B);case 29:return mA(e,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",B);case 34:return T(e,3792,3801,!0,r);case 37:return T(e,6160,6169,!0,r);case 38:return T(e,4160,4169,!0,r);case 39:return T(e,2918,2927,!0,r);case 40:return T(e,1776,1785,!0,r);case 43:return T(e,3046,3055,!0,r);case 44:return T(e,3174,3183,!0,r);case 45:return T(e,3664,3673,!0,r);case 46:return T(e,3872,3881,!0,r);case 3:default:return T(e,48,57,!0,r)}},$B="data-html2canvas-ignore",$t=function(){function e(A,t,r){if(this.context=A,this.options=r,this.scrolledElements=[],this.referenceElement=t,this.counters=new So,this.quoteDepth=0,!t.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(t.ownerDocument.documentElement,!1)}return e.prototype.toIFrame=function(A,t){var r=this,B=Go(A,t);if(!B.contentWindow)return Promise.reject("Unable to find iframe window");var n=A.defaultView.pageXOffset,s=A.defaultView.pageYOffset,i=B.contentWindow,a=i.document,o=No(B).then(function(){return P(r,void 0,void 0,function(){var Q,g;return _(this,function(w){switch(w.label){case 0:return this.scrolledElements.forEach(Po),i&&(i.scrollTo(t.left,t.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(i.scrollY!==t.top||i.scrollX!==t.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(i.scrollX-t.left,i.scrollY-t.top,0,0))),Q=this.options.onclone,g=this.clonedReferenceElement,typeof g>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:a.fonts&&a.fonts.ready?[4,a.fonts.ready]:[3,2];case 1:w.sent(),w.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,Vo(a)]:[3,4];case 3:w.sent(),w.label=4;case 4:return typeof Q=="function"?[2,Promise.resolve().then(function(){return Q(a,g)}).then(function(){return B})]:[2,B]}})})});return a.open(),a.write(_o(document.doctype)+""),Jo(this.referenceElement.ownerDocument,n,s),a.replaceChild(a.adoptNode(this.documentElement),a.documentElement),a.close(),o},e.prototype.createElementClone=function(A){if(Jr(A,2))debugger;if(ZB(A))return this.createCanvasClone(A);if(Pt(A))return this.createVideoClone(A);if(kt(A))return this.createStyleClone(A);var t=A.cloneNode(!1);return Wr(t)&&(Wr(A)&&A.currentSrc&&A.currentSrc!==A.src&&(t.src=A.currentSrc,t.srcset=""),t.loading==="lazy"&&(t.loading="eager")),Yt(t)?this.createCustomElementClone(t):t},e.prototype.createCustomElementClone=function(A){var t=document.createElement("html2canvascustomelement");return Ir(A.style,t),t},e.prototype.createStyleClone=function(A){try{var t=A.sheet;if(t&&t.cssRules){var r=[].slice.call(t.cssRules,0).reduce(function(n,s){return s&&typeof s.cssText=="string"?n+s.cssText:n},""),B=A.cloneNode(!1);return B.textContent=r,B}}catch(n){if(this.context.logger.error("Unable to access cssRules property",n),n.name!=="SecurityError")throw n}return A.cloneNode(!1)},e.prototype.createCanvasClone=function(A){var t;if(this.options.inlineImages&&A.ownerDocument){var r=A.ownerDocument.createElement("img");try{return r.src=A.toDataURL(),r}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",A)}}var B=A.cloneNode(!1);try{B.width=A.width,B.height=A.height;var n=A.getContext("2d"),s=B.getContext("2d");if(s)if(!this.options.allowTaint&&n)s.putImageData(n.getImageData(0,0,A.width,A.height),0,0);else{var i=(t=A.getContext("webgl2"))!==null&&t!==void 0?t:A.getContext("webgl");if(i){var a=i.getContextAttributes();(a==null?void 0:a.preserveDrawingBuffer)===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",A)}s.drawImage(A,0,0)}return B}catch{this.context.logger.info("Unable to clone canvas as it is tainted",A)}return B},e.prototype.createVideoClone=function(A){var t=A.ownerDocument.createElement("canvas");t.width=A.offsetWidth,t.height=A.offsetHeight;var r=t.getContext("2d");try{return r&&(r.drawImage(A,0,0,t.width,t.height),this.options.allowTaint||r.getImageData(0,0,t.width,t.height)),t}catch{this.context.logger.info("Unable to clone video as it is tainted",A)}var B=A.ownerDocument.createElement("canvas");return B.width=A.offsetWidth,B.height=A.offsetHeight,B},e.prototype.appendChildNode=function(A,t,r){(!_A(t)||!To(t)&&!t.hasAttribute($B)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(t)))&&(!this.options.copyStyles||!_A(t)||!kt(t))&&A.appendChild(this.cloneNode(t,r))},e.prototype.cloneChildNodes=function(A,t,r){for(var B=this,n=A.shadowRoot?A.shadowRoot.firstChild:A.firstChild;n;n=n.nextSibling)if(_A(n)&&jB(n)&&typeof n.assignedNodes=="function"){var s=n.assignedNodes();s.length&&s.forEach(function(i){return B.appendChildNode(t,i,r)})}else this.appendChildNode(t,n,r)},e.prototype.cloneNode=function(A,t){if(YB(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var r=A.ownerDocument.defaultView;if(r&&_A(A)&&(Yr(A)||Ne(A))){var B=this.createElementClone(A);B.style.transitionProperty="none";var n=r.getComputedStyle(A),s=r.getComputedStyle(A,":before"),i=r.getComputedStyle(A,":after");this.referenceElement===A&&Yr(B)&&(this.clonedReferenceElement=B),Bt(B)&&Wo(B);var a=this.counters.parse(new Lt(this.context,n)),o=this.resolvePseudoContent(A,B,s,oe.BEFORE);Yt(A)&&(t=!0),Pt(A)||this.cloneChildNodes(A,B,t),o&&B.insertBefore(o,B.firstChild);var Q=this.resolvePseudoContent(A,B,i,oe.AFTER);return Q&&B.appendChild(Q),this.counters.pop(a),(n&&(this.options.copyStyles||Ne(A))&&!qB(A)||t)&&Ir(n,B),(A.scrollTop!==0||A.scrollLeft!==0)&&this.scrolledElements.push([B,A.scrollLeft,A.scrollTop]),(Ye(A)||We(A))&&(Ye(B)||We(B))&&(B.value=A.value),B}return A.cloneNode(!1)},e.prototype.resolvePseudoContent=function(A,t,r,B){var n=this;if(r){var s=r.content,i=t.ownerDocument;if(!(!i||!s||s==="none"||s==="-moz-alt-content"||r.display==="none")){this.counters.parse(new Lt(this.context,r));var a=new mi(this.context,r),o=i.createElement("html2canvaspseudoelement");Ir(r,o),a.content.forEach(function(g){if(g.type===0)o.appendChild(i.createTextNode(g.value));else if(g.type===22){var w=i.createElement("img");w.src=g.value,w.style.opacity="1",o.appendChild(w)}else if(g.type===18){if(g.name==="attr"){var f=g.values.filter(D);f.length&&o.appendChild(i.createTextNode(A.getAttribute(f[0].value)||""))}else if(g.name==="counter"){var c=g.values.filter(PA),C=c[0],H=c[1];if(C&&D(C)){var h=n.counters.getCounterValue(C.value),F=H&&D(H)?_r.parse(n.context,H.value):3;o.appendChild(i.createTextNode(we(h,F,!1)))}}else if(g.name==="counters"){var K=g.values.filter(PA),C=K[0],p=K[1],H=K[2];if(C&&D(C)){var d=n.counters.getCounterValues(C.value),l=H&&D(H)?_r.parse(n.context,H.value):3,v=p&&p.type===0?p.value:"",y=d.map(function(k){return we(k,l,!1)}).join(v);o.appendChild(i.createTextNode(y))}}}else if(g.type===20)switch(g.value){case"open-quote":o.appendChild(i.createTextNode(mt(a.quotes,n.quoteDepth++,!0)));break;case"close-quote":o.appendChild(i.createTextNode(mt(a.quotes,--n.quoteDepth,!1)));break;default:o.appendChild(i.createTextNode(g.value))}}),o.className=Zr+" "+qr;var Q=B===oe.BEFORE?" "+Zr:" "+qr;return Ne(t)?t.className.baseValue+=Q:t.className+=Q,o}}},e.destroy=function(A){return A.parentNode?(A.parentNode.removeChild(A),!0):!1},e}(),oe;(function(e){e[e.BEFORE=0]="BEFORE",e[e.AFTER=1]="AFTER"})(oe||(oe={}));var Go=function(e,A){var t=e.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=A.width.toString(),t.height=A.height.toString(),t.scrolling="no",t.setAttribute($B,"true"),e.body.appendChild(t),t},Ro=function(e){return new Promise(function(A){if(e.complete){A();return}if(!e.src){A();return}e.onload=A,e.onerror=A})},Vo=function(e){return Promise.all([].slice.call(e.images,0).map(Ro))},No=function(e){return new Promise(function(A,t){var r=e.contentWindow;if(!r)return t("No window assigned for iframe");var B=r.document;r.onload=e.onload=function(){r.onload=e.onload=null;var n=setInterval(function(){B.body.childNodes.length>0&&B.readyState==="complete"&&(clearInterval(n),A(e))},50)}})},Xo=["all","d","content"],Ir=function(e,A){for(var t=e.length-1;t>=0;t--){var r=e.item(t);Xo.indexOf(r)===-1&&A.style.setProperty(r,e.getPropertyValue(r))}return A},_o=function(e){var A="";return e&&(A+=""),A},Jo=function(e,A,t){e&&e.defaultView&&(A!==e.defaultView.pageXOffset||t!==e.defaultView.pageYOffset)&&e.defaultView.scrollTo(A,t)},Po=function(e){var A=e[0],t=e[1],r=e[2];A.scrollLeft=t,A.scrollTop=r},ko=":before",Yo=":after",Zr="___html2canvas___pseudoelement_before",qr="___html2canvas___pseudoelement_after",AB=`{ + content: "" !important; + display: none !important; +}`,Wo=function(e){Zo(e,"."+Zr+ko+AB+` + .`+qr+Yo+AB)},Zo=function(e,A){var t=e.ownerDocument;if(t){var r=t.createElement("style");r.textContent=A,e.appendChild(r)}},An=function(){function e(){}return e.getOrigin=function(A){var t=e._link;return t?(t.href=A,t.href=t.href,t.protocol+t.hostname+t.port):"about:blank"},e.isSameOrigin=function(A){return e.getOrigin(A)===e._origin},e.setContext=function(A){e._link=A.document.createElement("a"),e._origin=e.getOrigin(A.location.href)},e._origin="about:blank",e}(),qo=function(){function e(A,t){this.context=A,this._options=t,this._cache={}}return e.prototype.addImage=function(A){var t=Promise.resolve();return this.has(A)||(yr(A)||AQ(A))&&(this._cache[A]=this.loadImage(A)).catch(function(){}),t},e.prototype.match=function(A){return this._cache[A]},e.prototype.loadImage=function(A){return P(this,void 0,void 0,function(){var t,r,B,n,s=this;return _(this,function(i){switch(i.label){case 0:return t=An.isSameOrigin(A),r=!vr(A)&&this._options.useCORS===!0&&N.SUPPORT_CORS_IMAGES&&!t,B=!vr(A)&&!t&&!yr(A)&&typeof this._options.proxy=="string"&&N.SUPPORT_CORS_XHR&&!r,!t&&this._options.allowTaint===!1&&!vr(A)&&!yr(A)&&!B&&!r?[2]:(n=A,B?[4,this.proxy(n)]:[3,2]);case 1:n=i.sent(),i.label=2;case 2:return this.context.logger.debug("Added image "+A.substring(0,256)),[4,new Promise(function(a,o){var Q=new Image;Q.onload=function(){return a(Q)},Q.onerror=o,(eQ(n)||r)&&(Q.crossOrigin="anonymous"),Q.src=n,Q.complete===!0&&setTimeout(function(){return a(Q)},500),s._options.imageTimeout>0&&setTimeout(function(){return o("Timed out ("+s._options.imageTimeout+"ms) loading image")},s._options.imageTimeout)})];case 3:return[2,i.sent()]}})})},e.prototype.has=function(A){return typeof this._cache[A]<"u"},e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},e.prototype.proxy=function(A){var t=this,r=this._options.proxy;if(!r)throw new Error("No proxy defined");var B=A.substring(0,256);return new Promise(function(n,s){var i=N.SUPPORT_RESPONSE_TYPE?"blob":"text",a=new XMLHttpRequest;a.onload=function(){if(a.status===200)if(i==="text")n(a.response);else{var g=new FileReader;g.addEventListener("load",function(){return n(g.result)},!1),g.addEventListener("error",function(w){return s(w)},!1),g.readAsDataURL(a.response)}else s("Failed to proxy resource "+B+" with status code "+a.status)},a.onerror=s;var o=r.indexOf("?")>-1?"&":"?";if(a.open("GET",""+r+o+"url="+encodeURIComponent(A)+"&responseType="+i),i!=="text"&&a instanceof XMLHttpRequest&&(a.responseType=i),t._options.imageTimeout){var Q=t._options.imageTimeout;a.timeout=Q,a.ontimeout=function(){return s("Timed out ("+Q+"ms) proxying "+B)}}a.send()})},e}(),jo=/^data:image\/svg\+xml/i,zo=/^data:image\/.*;base64,/i,$o=/^data:image\/.*/i,AQ=function(e){return N.SUPPORT_SVG_DRAWING||!rQ(e)},vr=function(e){return $o.test(e)},eQ=function(e){return zo.test(e)},yr=function(e){return e.substr(0,4)==="blob"},rQ=function(e){return e.substr(-3).toLowerCase()==="svg"||jo.test(e)},u=function(){function e(A,t){this.type=0,this.x=A,this.y=t}return e.prototype.add=function(A,t){return new e(this.x+A,this.y+t)},e}(),RA=function(e,A,t){return new u(e.x+(A.x-e.x)*t,e.y+(A.y-e.y)*t)},Te=function(){function e(A,t,r,B){this.type=1,this.start=A,this.startControl=t,this.endControl=r,this.end=B}return e.prototype.subdivide=function(A,t){var r=RA(this.start,this.startControl,A),B=RA(this.startControl,this.endControl,A),n=RA(this.endControl,this.end,A),s=RA(r,B,A),i=RA(B,n,A),a=RA(s,i,A);return t?new e(this.start,r,s,a):new e(a,i,n,this.end)},e.prototype.add=function(A,t){return new e(this.start.add(A,t),this.startControl.add(A,t),this.endControl.add(A,t),this.end.add(A,t))},e.prototype.reverse=function(){return new e(this.end,this.endControl,this.startControl,this.start)},e}(),$=function(e){return e.type===1},tQ=function(){function e(A){var t=A.styles,r=A.bounds,B=re(t.borderTopLeftRadius,r.width,r.height),n=B[0],s=B[1],i=re(t.borderTopRightRadius,r.width,r.height),a=i[0],o=i[1],Q=re(t.borderBottomRightRadius,r.width,r.height),g=Q[0],w=Q[1],f=re(t.borderBottomLeftRadius,r.width,r.height),c=f[0],C=f[1],H=[];H.push((n+a)/r.width),H.push((c+g)/r.width),H.push((s+C)/r.height),H.push((o+w)/r.height);var h=Math.max.apply(Math,H);h>1&&(n/=h,s/=h,a/=h,o/=h,g/=h,w/=h,c/=h,C/=h);var F=r.width-a,K=r.height-w,p=r.width-g,d=r.height-C,l=t.borderTopWidth,v=t.borderRightWidth,y=t.borderBottomWidth,E=t.borderLeftWidth,O=b(t.paddingTop,A.bounds.width),k=b(t.paddingRight,A.bounds.width),q=b(t.paddingBottom,A.bounds.width),L=b(t.paddingLeft,A.bounds.width);this.topLeftBorderDoubleOuterBox=n>0||s>0?x(r.left+E/3,r.top+l/3,n-E/3,s-l/3,m.TOP_LEFT):new u(r.left+E/3,r.top+l/3),this.topRightBorderDoubleOuterBox=n>0||s>0?x(r.left+F,r.top+l/3,a-v/3,o-l/3,m.TOP_RIGHT):new u(r.left+r.width-v/3,r.top+l/3),this.bottomRightBorderDoubleOuterBox=g>0||w>0?x(r.left+p,r.top+K,g-v/3,w-y/3,m.BOTTOM_RIGHT):new u(r.left+r.width-v/3,r.top+r.height-y/3),this.bottomLeftBorderDoubleOuterBox=c>0||C>0?x(r.left+E/3,r.top+d,c-E/3,C-y/3,m.BOTTOM_LEFT):new u(r.left+E/3,r.top+r.height-y/3),this.topLeftBorderDoubleInnerBox=n>0||s>0?x(r.left+E*2/3,r.top+l*2/3,n-E*2/3,s-l*2/3,m.TOP_LEFT):new u(r.left+E*2/3,r.top+l*2/3),this.topRightBorderDoubleInnerBox=n>0||s>0?x(r.left+F,r.top+l*2/3,a-v*2/3,o-l*2/3,m.TOP_RIGHT):new u(r.left+r.width-v*2/3,r.top+l*2/3),this.bottomRightBorderDoubleInnerBox=g>0||w>0?x(r.left+p,r.top+K,g-v*2/3,w-y*2/3,m.BOTTOM_RIGHT):new u(r.left+r.width-v*2/3,r.top+r.height-y*2/3),this.bottomLeftBorderDoubleInnerBox=c>0||C>0?x(r.left+E*2/3,r.top+d,c-E*2/3,C-y*2/3,m.BOTTOM_LEFT):new u(r.left+E*2/3,r.top+r.height-y*2/3),this.topLeftBorderStroke=n>0||s>0?x(r.left+E/2,r.top+l/2,n-E/2,s-l/2,m.TOP_LEFT):new u(r.left+E/2,r.top+l/2),this.topRightBorderStroke=n>0||s>0?x(r.left+F,r.top+l/2,a-v/2,o-l/2,m.TOP_RIGHT):new u(r.left+r.width-v/2,r.top+l/2),this.bottomRightBorderStroke=g>0||w>0?x(r.left+p,r.top+K,g-v/2,w-y/2,m.BOTTOM_RIGHT):new u(r.left+r.width-v/2,r.top+r.height-y/2),this.bottomLeftBorderStroke=c>0||C>0?x(r.left+E/2,r.top+d,c-E/2,C-y/2,m.BOTTOM_LEFT):new u(r.left+E/2,r.top+r.height-y/2),this.topLeftBorderBox=n>0||s>0?x(r.left,r.top,n,s,m.TOP_LEFT):new u(r.left,r.top),this.topRightBorderBox=a>0||o>0?x(r.left+F,r.top,a,o,m.TOP_RIGHT):new u(r.left+r.width,r.top),this.bottomRightBorderBox=g>0||w>0?x(r.left+p,r.top+K,g,w,m.BOTTOM_RIGHT):new u(r.left+r.width,r.top+r.height),this.bottomLeftBorderBox=c>0||C>0?x(r.left,r.top+d,c,C,m.BOTTOM_LEFT):new u(r.left,r.top+r.height),this.topLeftPaddingBox=n>0||s>0?x(r.left+E,r.top+l,Math.max(0,n-E),Math.max(0,s-l),m.TOP_LEFT):new u(r.left+E,r.top+l),this.topRightPaddingBox=a>0||o>0?x(r.left+Math.min(F,r.width-v),r.top+l,F>r.width+v?0:Math.max(0,a-v),Math.max(0,o-l),m.TOP_RIGHT):new u(r.left+r.width-v,r.top+l),this.bottomRightPaddingBox=g>0||w>0?x(r.left+Math.min(p,r.width-E),r.top+Math.min(K,r.height-y),Math.max(0,g-v),Math.max(0,w-y),m.BOTTOM_RIGHT):new u(r.left+r.width-v,r.top+r.height-y),this.bottomLeftPaddingBox=c>0||C>0?x(r.left+E,r.top+Math.min(d,r.height-y),Math.max(0,c-E),Math.max(0,C-y),m.BOTTOM_LEFT):new u(r.left+E,r.top+r.height-y),this.topLeftContentBox=n>0||s>0?x(r.left+E+L,r.top+l+O,Math.max(0,n-(E+L)),Math.max(0,s-(l+O)),m.TOP_LEFT):new u(r.left+E+L,r.top+l+O),this.topRightContentBox=a>0||o>0?x(r.left+Math.min(F,r.width+E+L),r.top+l+O,F>r.width+E+L?0:a-E+L,o-(l+O),m.TOP_RIGHT):new u(r.left+r.width-(v+k),r.top+l+O),this.bottomRightContentBox=g>0||w>0?x(r.left+Math.min(p,r.width-(E+L)),r.top+Math.min(K,r.height+l+O),Math.max(0,g-(v+k)),w-(y+q),m.BOTTOM_RIGHT):new u(r.left+r.width-(v+k),r.top+r.height-(y+q)),this.bottomLeftContentBox=c>0||C>0?x(r.left+E+L,r.top+d,Math.max(0,c-(E+L)),C-(y+q),m.BOTTOM_LEFT):new u(r.left+E+L,r.top+r.height-(y+q))}return e}(),m;(function(e){e[e.TOP_LEFT=0]="TOP_LEFT",e[e.TOP_RIGHT=1]="TOP_RIGHT",e[e.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",e[e.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(m||(m={}));var x=function(e,A,t,r,B){var n=4*((Math.sqrt(2)-1)/3),s=t*n,i=r*n,a=e+t,o=A+r;switch(B){case m.TOP_LEFT:return new Te(new u(e,o),new u(e,o-i),new u(a-s,A),new u(a,A));case m.TOP_RIGHT:return new Te(new u(e,A),new u(e+s,A),new u(a,o-i),new u(a,o));case m.BOTTOM_RIGHT:return new Te(new u(a,A),new u(a,A+i),new u(e+s,o),new u(e,o));case m.BOTTOM_LEFT:default:return new Te(new u(a,o),new u(a-s,o),new u(e,A+i),new u(e,A))}},Ze=function(e){return[e.topLeftBorderBox,e.topRightBorderBox,e.bottomRightBorderBox,e.bottomLeftBorderBox]},BQ=function(e){return[e.topLeftContentBox,e.topRightContentBox,e.bottomRightContentBox,e.bottomLeftContentBox]},qe=function(e){return[e.topLeftPaddingBox,e.topRightPaddingBox,e.bottomRightPaddingBox,e.bottomLeftPaddingBox]},nQ=function(){function e(A,t,r){this.offsetX=A,this.offsetY=t,this.matrix=r,this.type=0,this.target=6}return e}(),Se=function(){function e(A,t){this.path=A,this.target=t,this.type=1}return e}(),sQ=function(){function e(A){this.opacity=A,this.type=2,this.target=6}return e}(),aQ=function(e){return e.type===0},en=function(e){return e.type===1},iQ=function(e){return e.type===2},eB=function(e,A){return e.length===A.length?e.some(function(t,r){return t===A[r]}):!1},oQ=function(e,A,t,r,B){return e.map(function(n,s){switch(s){case 0:return n.add(A,t);case 1:return n.add(A+r,t);case 2:return n.add(A+r,t+B);case 3:return n.add(A,t+B)}return n})},rn=function(){function e(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return e}(),tn=function(){function e(A,t){if(this.container=A,this.parent=t,this.effects=[],this.curves=new tQ(this.container),this.container.styles.opacity<1&&this.effects.push(new sQ(this.container.styles.opacity)),this.container.styles.transform!==null){var r=this.container.bounds.left+this.container.styles.transformOrigin[0].number,B=this.container.bounds.top+this.container.styles.transformOrigin[1].number,n=this.container.styles.transform;this.effects.push(new nQ(r,B,n))}if(this.container.styles.overflowX!==0){var s=Ze(this.curves),i=qe(this.curves);eB(s,i)?this.effects.push(new Se(s,6)):(this.effects.push(new Se(s,2)),this.effects.push(new Se(i,4)))}}return e.prototype.getEffects=function(A){for(var t=[2,3].indexOf(this.container.styles.position)===-1,r=this.parent,B=this.effects.slice(0);r;){var n=r.effects.filter(function(a){return!en(a)});if(t||r.container.styles.position!==0||!r.parent){if(B.unshift.apply(B,n),t=[2,3].indexOf(r.container.styles.position)===-1,r.container.styles.overflowX!==0){var s=Ze(r.curves),i=qe(r.curves);eB(s,i)||B.unshift(new Se(i,6))}}else B.unshift.apply(B,n);r=r.parent}return B.filter(function(a){return G(a.target,A)})},e}(),jr=function(e,A,t,r){e.container.elements.forEach(function(B){var n=G(B.flags,4),s=G(B.flags,2),i=new tn(B,e);G(B.styles.display,2048)&&r.push(i);var a=G(B.flags,8)?[]:r;if(n||s){var o=n||B.styles.isPositioned()?t:A,Q=new rn(i);if(B.styles.isPositioned()||B.styles.opacity<1||B.styles.isTransformed()){var g=B.styles.zIndex.order;if(g<0){var w=0;o.negativeZIndex.some(function(c,C){return g>c.element.container.styles.zIndex.order?(w=C,!1):w>0}),o.negativeZIndex.splice(w,0,Q)}else if(g>0){var f=0;o.positiveZIndex.some(function(c,C){return g>=c.element.container.styles.zIndex.order?(f=C+1,!1):f>0}),o.positiveZIndex.splice(f,0,Q)}else o.zeroOrAutoZIndexOrTransformedOrOpacity.push(Q)}else B.styles.isFloating()?o.nonPositionedFloats.push(Q):o.nonPositionedInlineLevel.push(Q);jr(i,Q,n?Q:t,a)}else B.styles.isInlineLevel()?A.inlineLevel.push(i):A.nonInlineLevel.push(i),jr(i,A,t,a);G(B.flags,8)&&Bn(B,a)})},Bn=function(e,A){for(var t=e instanceof kr?e.start:1,r=e instanceof kr?e.reversed:!1,B=0;B"u"?e[0]:t},fQ=function(e,A,t,r,B){var n=A[0],s=A[1],i=t[0],a=t[1];switch(e){case 2:return[new u(Math.round(r.left),Math.round(r.top+s)),new u(Math.round(r.left+r.width),Math.round(r.top+s)),new u(Math.round(r.left+r.width),Math.round(a+r.top+s)),new u(Math.round(r.left),Math.round(a+r.top+s))];case 3:return[new u(Math.round(r.left+n),Math.round(r.top)),new u(Math.round(r.left+n+i),Math.round(r.top)),new u(Math.round(r.left+n+i),Math.round(r.height+r.top)),new u(Math.round(r.left+n),Math.round(r.height+r.top))];case 1:return[new u(Math.round(r.left+n),Math.round(r.top+s)),new u(Math.round(r.left+n+i),Math.round(r.top+s)),new u(Math.round(r.left+n+i),Math.round(r.top+s+a)),new u(Math.round(r.left+n),Math.round(r.top+s+a))];default:return[new u(Math.round(B.left),Math.round(B.top)),new u(Math.round(B.left+B.width),Math.round(B.top)),new u(Math.round(B.left+B.width),Math.round(B.height+B.top)),new u(Math.round(B.left),Math.round(B.height+B.top))]}},UQ="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",tB="Hidden Text",FQ=function(){function e(A){this._data={},this._document=A}return e.prototype.parseMetrics=function(A,t){var r=this._document.createElement("div"),B=this._document.createElement("img"),n=this._document.createElement("span"),s=this._document.body;r.style.visibility="hidden",r.style.fontFamily=A,r.style.fontSize=t,r.style.margin="0",r.style.padding="0",r.style.whiteSpace="nowrap",s.appendChild(r),B.src=UQ,B.width=1,B.height=1,B.style.margin="0",B.style.padding="0",B.style.verticalAlign="baseline",n.style.fontFamily=A,n.style.fontSize=t,n.style.margin="0",n.style.padding="0",n.appendChild(this._document.createTextNode(tB)),r.appendChild(n),r.appendChild(B);var i=B.offsetTop-n.offsetTop+2;r.removeChild(n),r.appendChild(this._document.createTextNode(tB)),r.style.lineHeight="normal",B.style.verticalAlign="super";var a=B.offsetTop-r.offsetTop+2;return s.removeChild(r),{baseline:i,middle:a}},e.prototype.getMetrics=function(A,t){var r=A+" "+t;return typeof this._data[r]>"u"&&(this._data[r]=this.parseMetrics(A,t)),this._data[r]},e}(),sn=function(){function e(A,t){this.context=A,this.options=t}return e}(),hQ=1e4,dQ=function(e){tA(A,e);function A(t,r){var B=e.call(this,t,r)||this;return B._activeEffects=[],B.canvas=r.canvas?r.canvas:document.createElement("canvas"),B.ctx=B.canvas.getContext("2d"),r.canvas||(B.canvas.width=Math.floor(r.width*r.scale),B.canvas.height=Math.floor(r.height*r.scale),B.canvas.style.width=r.width+"px",B.canvas.style.height=r.height+"px"),B.fontMetrics=new FQ(document),B.ctx.scale(B.options.scale,B.options.scale),B.ctx.translate(-r.x,-r.y),B.ctx.textBaseline="bottom",B._activeEffects=[],B.context.logger.debug("Canvas renderer initialized ("+r.width+"x"+r.height+") with scale "+r.scale),B}return A.prototype.applyEffects=function(t){for(var r=this;this._activeEffects.length;)this.popEffect();t.forEach(function(B){return r.applyEffect(B)})},A.prototype.applyEffect=function(t){this.ctx.save(),iQ(t)&&(this.ctx.globalAlpha=t.opacity),aQ(t)&&(this.ctx.translate(t.offsetX,t.offsetY),this.ctx.transform(t.matrix[0],t.matrix[1],t.matrix[2],t.matrix[3],t.matrix[4],t.matrix[5]),this.ctx.translate(-t.offsetX,-t.offsetY)),en(t)&&(this.path(t.path),this.ctx.clip()),this._activeEffects.push(t)},A.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},A.prototype.renderStack=function(t){return P(this,void 0,void 0,function(){var r;return _(this,function(B){switch(B.label){case 0:return r=t.element.container.styles,r.isVisible()?[4,this.renderStackContent(t)]:[3,2];case 1:B.sent(),B.label=2;case 2:return[2]}})})},A.prototype.renderNode=function(t){return P(this,void 0,void 0,function(){return _(this,function(r){switch(r.label){case 0:if(G(t.container.flags,16))debugger;return t.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(t)]:[3,3];case 1:return r.sent(),[4,this.renderNodeContent(t)];case 2:r.sent(),r.label=3;case 3:return[2]}})})},A.prototype.renderTextWithLetterSpacing=function(t,r,B){var n=this;if(r===0)this.ctx.fillText(t.text,t.bounds.left,t.bounds.top+B);else{var s=rt(t.text);s.reduce(function(i,a){return n.ctx.fillText(a,i,t.bounds.top+B),i+n.ctx.measureText(a).width},t.bounds.left)}},A.prototype.createFontStyle=function(t){var r=t.fontVariant.filter(function(s){return s==="normal"||s==="small-caps"}).join(""),B=vQ(t.fontFamily).join(", "),n=Ce(t.fontSize)?""+t.fontSize.number+t.fontSize.unit:t.fontSize.number+"px";return[[t.fontStyle,r,t.fontWeight,n,B].join(" "),B,n]},A.prototype.renderTextNode=function(t,r){return P(this,void 0,void 0,function(){var B,n,s,i,a,o,Q,g,w=this;return _(this,function(f){return B=this.createFontStyle(r),n=B[0],s=B[1],i=B[2],this.ctx.font=n,this.ctx.direction=r.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",a=this.fontMetrics.getMetrics(s,i),o=a.baseline,Q=a.middle,g=r.paintOrder,t.textBounds.forEach(function(c){g.forEach(function(C){switch(C){case 0:w.ctx.fillStyle=R(r.color),w.renderTextWithLetterSpacing(c,r.letterSpacing,o);var H=r.textShadow;H.length&&c.text.trim().length&&(H.slice(0).reverse().forEach(function(h){w.ctx.shadowColor=R(h.color),w.ctx.shadowOffsetX=h.offsetX.number*w.options.scale,w.ctx.shadowOffsetY=h.offsetY.number*w.options.scale,w.ctx.shadowBlur=h.blur.number,w.renderTextWithLetterSpacing(c,r.letterSpacing,o)}),w.ctx.shadowColor="",w.ctx.shadowOffsetX=0,w.ctx.shadowOffsetY=0,w.ctx.shadowBlur=0),r.textDecorationLine.length&&(w.ctx.fillStyle=R(r.textDecorationColor||r.color),r.textDecorationLine.forEach(function(h){switch(h){case 1:w.ctx.fillRect(c.bounds.left,Math.round(c.bounds.top+o),c.bounds.width,1);break;case 2:w.ctx.fillRect(c.bounds.left,Math.round(c.bounds.top),c.bounds.width,1);break;case 3:w.ctx.fillRect(c.bounds.left,Math.ceil(c.bounds.top+Q),c.bounds.width,1);break}}));break;case 1:r.webkitTextStrokeWidth&&c.text.trim().length&&(w.ctx.strokeStyle=R(r.webkitTextStrokeColor),w.ctx.lineWidth=r.webkitTextStrokeWidth,w.ctx.lineJoin=window.chrome?"miter":"round",w.ctx.strokeText(c.text,c.bounds.left,c.bounds.top+o)),w.ctx.strokeStyle="",w.ctx.lineWidth=0,w.ctx.lineJoin="miter";break}})}),[2]})})},A.prototype.renderReplacedElement=function(t,r,B){if(B&&t.intrinsicWidth>0&&t.intrinsicHeight>0){var n=je(t),s=qe(r);this.path(s),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(B,0,0,t.intrinsicWidth,t.intrinsicHeight,n.left,n.top,n.width,n.height),this.ctx.restore()}},A.prototype.renderNodeContent=function(t){return P(this,void 0,void 0,function(){var r,B,n,s,i,a,F,F,o,Q,g,w,p,f,c,d,C,H,h,F,K,p,d;return _(this,function(l){switch(l.label){case 0:this.applyEffects(t.getEffects(4)),r=t.container,B=t.curves,n=r.styles,s=0,i=r.textNodes,l.label=1;case 1:return s0&&V>0&&(y=n.ctx.createPattern(d,"repeat"),n.renderRepeat(O,y,Y,W))):aa(Q)&&(E=Kr(t,r,[null,null,null]),O=E[0],k=E[1],q=E[2],L=E[3],V=E[4],CA=Q.position.length===0?[$r]:Q.position,Y=b(CA[0],L),W=b(CA[CA.length-1],V),IA=ra(Q,Y,W,L,V),BA=IA[0],uA=IA[1],BA>0&&uA>0&&(vA=n.ctx.createRadialGradient(k+Y,q+W,0,k+Y,q+W,BA),It(Q.stops,BA*2).forEach(function(YA){return vA.addColorStop(YA.stop,R(YA.color))}),n.path(O),n.ctx.fillStyle=vA,BA!==uA?(yA=t.bounds.left+.5*t.bounds.width,iA=t.bounds.top+.5*t.bounds.height,KA=uA/BA,oA=1/KA,n.ctx.save(),n.ctx.translate(yA,iA),n.ctx.transform(1,0,0,KA,0,0),n.ctx.translate(-yA,-iA),n.ctx.fillRect(k,oA*(q-iA)+iA,L,V*oA),n.ctx.restore()):n.ctx.fill())),TA.label=6;case 6:return r--,[2]}})},n=this,s=0,i=t.styles.backgroundImage.slice(0).reverse(),o.label=1;case 1:return s0?Q.style!==2?[3,5]:[4,this.renderDashedDottedBorder(Q.color,Q.width,i,t.curves,2)]:[3,11]):[3,13];case 4:return w.sent(),[3,11];case 5:return Q.style!==3?[3,7]:[4,this.renderDashedDottedBorder(Q.color,Q.width,i,t.curves,3)];case 6:return w.sent(),[3,11];case 7:return Q.style!==4?[3,9]:[4,this.renderDoubleBorder(Q.color,Q.width,i,t.curves)];case 8:return w.sent(),[3,11];case 9:return[4,this.renderSolidBorder(Q.color,i,t.curves)];case 10:w.sent(),w.label=11;case 11:i++,w.label=12;case 12:return a++,[3,3];case 13:return[2]}})})},A.prototype.renderDashedDottedBorder=function(t,r,B,n,s){return P(this,void 0,void 0,function(){var i,a,o,Q,g,w,f,c,C,H,h,F,K,p,d,l,d,l;return _(this,function(v){return this.ctx.save(),i=cQ(n,B),a=rB(n,B),s===2&&(this.path(a),this.ctx.clip()),$(a[0])?(o=a[0].start.x,Q=a[0].start.y):(o=a[0].x,Q=a[0].y),$(a[1])?(g=a[1].end.x,w=a[1].end.y):(g=a[1].x,w=a[1].y),B===0||B===2?f=Math.abs(o-g):f=Math.abs(Q-w),this.ctx.beginPath(),s===3?this.formatPath(i):this.formatPath(a.slice(0,2)),c=r<3?r*3:r*2,C=r<3?r*2:r,s===3&&(c=r,C=r),H=!0,f<=c*2?H=!1:f<=c*2+C?(h=f/(2*c+C),c*=h,C*=h):(F=Math.floor((f+C)/(c+C)),K=(f-F*c)/(F-1),p=(f-(F+1)*c)/F,C=p<=0||Math.abs(C-K)e in t?U8(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Mt=(t,e,n)=>q8(t,typeof e!="symbol"?e+"":e,n);function W8(t,e){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var LV=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sg(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var s4={exports:{}},ag={},a4={exports:{}},he={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ah=Symbol.for("react.element"),V8=Symbol.for("react.portal"),H8=Symbol.for("react.fragment"),G8=Symbol.for("react.strict_mode"),Y8=Symbol.for("react.profiler"),X8=Symbol.for("react.provider"),K8=Symbol.for("react.context"),J8=Symbol.for("react.forward_ref"),Q8=Symbol.for("react.suspense"),Z8=Symbol.for("react.memo"),tL=Symbol.for("react.lazy"),Bb=Symbol.iterator;function eL(t){return t===null||typeof t!="object"?null:(t=Bb&&t[Bb]||t["@@iterator"],typeof t=="function"?t:null)}var l4={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},c4=Object.assign,u4={};function nu(t,e,n){this.props=t,this.context=e,this.refs=u4,this.updater=n||l4}nu.prototype.isReactComponent={};nu.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};nu.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function f4(){}f4.prototype=nu.prototype;function ly(t,e,n){this.props=t,this.context=e,this.refs=u4,this.updater=n||l4}var cy=ly.prototype=new f4;cy.constructor=ly;c4(cy,nu.prototype);cy.isPureReactComponent=!0;var zb=Array.isArray,h4=Object.prototype.hasOwnProperty,uy={current:null},d4={key:!0,ref:!0,__self:!0,__source:!0};function p4(t,e,n){var r,i={},o=null,s=null;if(e!=null)for(r in e.ref!==void 0&&(s=e.ref),e.key!==void 0&&(o=""+e.key),e)h4.call(e,r)&&!d4.hasOwnProperty(r)&&(i[r]=e[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,M=Y[xt];if(0>>1;xt<$;){var q=2*(xt+1)-1,J=Y[q],Z=q+1,ut=Y[Z];if(0>i(J,at))Zi(ut,J)?(Y[xt]=ut,Y[Z]=at,xt=Z):(Y[xt]=J,Y[q]=at,xt=q);else if(Zi(ut,at))Y[xt]=ut,Y[Z]=at,xt=Z;else break t}}return et}function i(Y,et){var at=Y.sortIndex-et.sortIndex;return at!==0?at:Y.id-et.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;t.unstable_now=function(){return o.now()}}else{var s=Date,a=s.now();t.unstable_now=function(){return s.now()-a}}var l=[],c=[],u=1,h=null,p=3,d=!1,y=!1,b=!1,_=typeof setTimeout=="function"?setTimeout:null,m=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function S(Y){for(var et=n(c);et!==null;){if(et.callback===null)r(c);else if(et.startTime<=Y)r(c),et.sortIndex=et.expirationTime,e(l,et);else break;et=n(c)}}function A(Y){if(b=!1,S(Y),!y)if(n(l)!==null)y=!0,rt(P);else{var et=n(c);et!==null&<(A,et.startTime-Y)}}function P(Y,et){y=!1,b&&(b=!1,m(R),R=-1),d=!0;var at=p;try{for(S(et),h=n(l);h!==null&&(!(h.expirationTime>et)||Y&&!L());){var xt=h.callback;if(typeof xt=="function"){h.callback=null,p=h.priorityLevel;var M=xt(h.expirationTime<=et);et=t.unstable_now(),typeof M=="function"?h.callback=M:h===n(l)&&r(l),S(et)}else r(l);h=n(l)}if(h!==null)var $=!0;else{var q=n(c);q!==null&<(A,q.startTime-et),$=!1}return $}finally{h=null,p=at,d=!1}}var z=!1,I=null,R=-1,X=5,C=-1;function L(){return!(t.unstable_now()-CY||125xt?(Y.sortIndex=at,e(c,Y),n(l)===null&&Y===n(c)&&(b?(m(R),R=-1):b=!0,lt(A,at-xt))):(Y.sortIndex=M,e(l,Y),y||d||(y=!0,rt(P))),Y},t.unstable_shouldYield=L,t.unstable_wrapCallback=function(Y){var et=p;return function(){var at=p;p=et;try{return Y.apply(this,arguments)}finally{p=at}}}})(b4);v4.exports=b4;var hL=v4.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var dL=H,ni=hL;function Et(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),h2=Object.prototype.hasOwnProperty,pL=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ub={},qb={};function gL(t){return h2.call(qb,t)?!0:h2.call(Ub,t)?!1:pL.test(t)?qb[t]=!0:(Ub[t]=!0,!1)}function mL(t,e,n,r){if(n!==null&&n.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function yL(t,e,n,r){if(e===null||typeof e>"u"||mL(t,e,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function wr(t,e,n,r,i,o,s){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=t,this.type=e,this.sanitizeURL=o,this.removeEmptyString=s}var Qn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){Qn[t]=new wr(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];Qn[e]=new wr(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){Qn[t]=new wr(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){Qn[t]=new wr(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){Qn[t]=new wr(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){Qn[t]=new wr(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){Qn[t]=new wr(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){Qn[t]=new wr(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){Qn[t]=new wr(t,5,!1,t.toLowerCase(),null,!1,!1)});var hy=/[\-:]([a-z])/g;function dy(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(hy,dy);Qn[e]=new wr(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(hy,dy);Qn[e]=new wr(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(hy,dy);Qn[e]=new wr(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){Qn[t]=new wr(t,1,!1,t.toLowerCase(),null,!1,!1)});Qn.xlinkHref=new wr("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){Qn[t]=new wr(t,1,!1,t.toLowerCase(),null,!0,!0)});function py(t,e,n,r){var i=Qn.hasOwnProperty(e)?Qn[e]:null;(i!==null?i.type!==0:r||!(2a||i[s]!==o[a]){var l=` +`+i[s].replace(" at new "," at ");return t.displayName&&l.includes("")&&(l=l.replace("",t.displayName)),l}while(1<=s&&0<=a);break}}}finally{im=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?cf(t):""}function vL(t){switch(t.tag){case 5:return cf(t.type);case 16:return cf("Lazy");case 13:return cf("Suspense");case 19:return cf("SuspenseList");case 0:case 2:case 15:return t=om(t.type,!1),t;case 11:return t=om(t.type.render,!1),t;case 1:return t=om(t.type,!0),t;default:return""}}function m2(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case dc:return"Fragment";case hc:return"Portal";case d2:return"Profiler";case gy:return"StrictMode";case p2:return"Suspense";case g2:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case _4:return(t.displayName||"Context")+".Consumer";case w4:return(t._context.displayName||"Context")+".Provider";case my:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case yy:return e=t.displayName||null,e!==null?e:m2(t.type)||"Memo";case Is:e=t._payload,t=t._init;try{return m2(t(e))}catch{}}return null}function bL(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return m2(e);case 8:return e===gy?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function sa(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function k4(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function xL(t){var e=k4(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),r=""+t[e];if(!t.hasOwnProperty(e)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(s){r=""+s,o.call(this,s)}}),Object.defineProperty(t,e,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function jd(t){t._valueTracker||(t._valueTracker=xL(t))}function A4(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var n=e.getValue(),r="";return t&&(r=k4(t)?t.checked?"true":"false":t.value),t=r,t!==n?(e.setValue(t),!0):!1}function a0(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function y2(t,e){var n=e.checked;return on({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Vb(t,e){var n=e.defaultValue==null?"":e.defaultValue,r=e.checked!=null?e.checked:e.defaultChecked;n=sa(e.value!=null?e.value:n),t._wrapperState={initialChecked:r,initialValue:n,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function C4(t,e){e=e.checked,e!=null&&py(t,"checked",e,!1)}function v2(t,e){C4(t,e);var n=sa(e.value),r=e.type;if(n!=null)r==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(r==="submit"||r==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?b2(t,e.type,n):e.hasOwnProperty("defaultValue")&&b2(t,e.type,sa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function Hb(t,e,n){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var r=e.type;if(!(r!=="submit"&&r!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,n||e===t.value||(t.value=e),t.defaultValue=e}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function b2(t,e,n){(e!=="number"||a0(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var uf=Array.isArray;function Cc(t,e,n,r){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=Bd.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function Wf(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=e;return}}t.textContent=e}var Af={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},wL=["Webkit","ms","Moz","O"];Object.keys(Af).forEach(function(t){wL.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Af[e]=Af[t]})});function E4(t,e,n){return e==null||typeof e=="boolean"||e===""?"":n||typeof e!="number"||e===0||Af.hasOwnProperty(t)&&Af[t]?(""+e).trim():e+"px"}function M4(t,e){t=t.style;for(var n in e)if(e.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=E4(n,e[n],r);n==="float"&&(n="cssFloat"),r?t.setProperty(n,i):t[n]=i}}var _L=on({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _2(t,e){if(e){if(_L[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(Et(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(Et(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(Et(61))}if(e.style!=null&&typeof e.style!="object")throw Error(Et(62))}}function S2(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var k2=null;function vy(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var A2=null,Lc=null,Nc=null;function Xb(t){if(t=Nh(t)){if(typeof A2!="function")throw Error(Et(280));var e=t.stateNode;e&&(e=hg(e),A2(t.stateNode,t.type,e))}}function T4(t){Lc?Nc?Nc.push(t):Nc=[t]:Lc=t}function O4(){if(Lc){var t=Lc,e=Nc;if(Nc=Lc=null,Xb(t),e)for(t=0;t>>=0,t===0?32:31-(OL(t)/RL|0)|0}var zd=64,$d=4194304;function ff(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function f0(t,e){var n=t.pendingLanes;if(n===0)return 0;var r=0,i=t.suspendedLanes,o=t.pingedLanes,s=n&268435455;if(s!==0){var a=s&~i;a!==0?r=ff(a):(o&=s,o!==0&&(r=ff(o)))}else s=n&~i,s!==0?r=ff(s):o!==0&&(r=ff(o));if(r===0)return 0;if(e!==0&&e!==r&&!(e&i)&&(i=r&-r,o=e&-e,i>=o||i===16&&(o&4194240)!==0))return e;if(r&4&&(r|=n&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=r;0n;n++)e.push(t);return e}function Ch(t,e,n){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-Wi(e),t[e]=n}function jL(t,e){var n=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var r=t.eventTimes;for(t=t.expirationTimes;0=Lf),ix=" ",ox=!1;function Z4(t,e){switch(t){case"keyup":return hN.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function tS(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var pc=!1;function pN(t,e){switch(t){case"compositionend":return tS(e);case"keypress":return e.which!==32?null:(ox=!0,ix);case"textInput":return t=e.data,t===ix&&ox?null:t;default:return null}}function gN(t,e){if(pc)return t==="compositionend"||!Cy&&Z4(t,e)?(t=J4(),Ep=Sy=Ws=null,pc=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:n,offset:e-t};t=r}t:{for(;n;){if(n.nextSibling){n=n.nextSibling;break t}n=n.parentNode}n=void 0}n=cx(n)}}function iS(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?iS(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function oS(){for(var t=window,e=a0();e instanceof t.HTMLIFrameElement;){try{var n=typeof e.contentWindow.location.href=="string"}catch{n=!1}if(n)t=e.contentWindow;else break;e=a0(t.document)}return e}function Ly(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function kN(t){var e=oS(),n=t.focusedElem,r=t.selectionRange;if(e!==n&&n&&n.ownerDocument&&iS(n.ownerDocument.documentElement,n)){if(r!==null&&Ly(n)){if(e=r.start,t=r.end,t===void 0&&(t=e),"selectionStart"in n)n.selectionStart=e,n.selectionEnd=Math.min(t,n.value.length);else if(t=(e=n.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!t.extend&&o>r&&(i=r,r=o,o=i),i=ux(n,o);var s=ux(n,r);i&&s&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==s.node||t.focusOffset!==s.offset)&&(e=e.createRange(),e.setStart(i.node,i.offset),t.removeAllRanges(),o>r?(t.addRange(e),t.extend(s.node,s.offset)):(e.setEnd(s.node,s.offset),t.addRange(e)))}}for(e=[],t=n;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,gc=null,M2=null,Pf=null,T2=!1;function fx(t,e,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;T2||gc==null||gc!==a0(r)||(r=gc,"selectionStart"in r&&Ly(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Pf&&Kf(Pf,r)||(Pf=r,r=p0(M2,"onSelect"),0vc||(t.current=j2[vc],j2[vc]=null,vc--)}function Ue(t,e){vc++,j2[vc]=t.current,t.current=e}var aa={},dr=pa(aa),Rr=pa(!1),sl=aa;function qc(t,e){var n=t.type.contextTypes;if(!n)return aa;var r=t.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===e)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=e[o];return r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function Ir(t){return t=t.childContextTypes,t!=null}function m0(){He(Rr),He(dr)}function vx(t,e,n){if(dr.current!==aa)throw Error(Et(168));Ue(dr,e),Ue(Rr,n)}function pS(t,e,n){var r=t.stateNode;if(e=e.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in e))throw Error(Et(108,bL(t)||"Unknown",i));return on({},n,r)}function y0(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||aa,sl=dr.current,Ue(dr,t),Ue(Rr,Rr.current),!0}function bx(t,e,n){var r=t.stateNode;if(!r)throw Error(Et(169));n?(t=pS(t,e,sl),r.__reactInternalMemoizedMergedChildContext=t,He(Rr),He(dr),Ue(dr,t)):He(Rr),Ue(Rr,n)}var Jo=null,dg=!1,bm=!1;function gS(t){Jo===null?Jo=[t]:Jo.push(t)}function FN(t){dg=!0,gS(t)}function ga(){if(!bm&&Jo!==null){bm=!0;var t=0,e=Me;try{var n=Jo;for(Me=1;t>=s,i-=s,ts=1<<32-Wi(e)+i|n<R?(X=I,I=null):X=I.sibling;var C=p(m,I,S[R],A);if(C===null){I===null&&(I=X);break}t&&I&&C.alternate===null&&e(m,I),w=o(C,w,R),z===null?P=C:z.sibling=C,z=C,I=X}if(R===S.length)return n(m,I),Je&&Fa(m,R),P;if(I===null){for(;RR?(X=I,I=null):X=I.sibling;var L=p(m,I,C.value,A);if(L===null){I===null&&(I=X);break}t&&I&&L.alternate===null&&e(m,I),w=o(L,w,R),z===null?P=L:z.sibling=L,z=L,I=X}if(C.done)return n(m,I),Je&&Fa(m,R),P;if(I===null){for(;!C.done;R++,C=S.next())C=h(m,C.value,A),C!==null&&(w=o(C,w,R),z===null?P=C:z.sibling=C,z=C);return Je&&Fa(m,R),P}for(I=r(m,I);!C.done;R++,C=S.next())C=d(I,m,R,C.value,A),C!==null&&(t&&C.alternate!==null&&I.delete(C.key===null?R:C.key),w=o(C,w,R),z===null?P=C:z.sibling=C,z=C);return t&&I.forEach(function(T){return e(m,T)}),Je&&Fa(m,R),P}function _(m,w,S,A){if(typeof S=="object"&&S!==null&&S.type===dc&&S.key===null&&(S=S.props.children),typeof S=="object"&&S!==null){switch(S.$$typeof){case Dd:t:{for(var P=S.key,z=w;z!==null;){if(z.key===P){if(P=S.type,P===dc){if(z.tag===7){n(m,z.sibling),w=i(z,S.props.children),w.return=m,m=w;break t}}else if(z.elementType===P||typeof P=="object"&&P!==null&&P.$$typeof===Is&&_x(P)===z.type){n(m,z.sibling),w=i(z,S.props),w.ref=Hu(m,z,S),w.return=m,m=w;break t}n(m,z);break}else e(m,z);z=z.sibling}S.type===dc?(w=Za(S.props.children,m.mode,A,S.key),w.return=m,m=w):(A=jp(S.type,S.key,S.props,null,m.mode,A),A.ref=Hu(m,w,S),A.return=m,m=A)}return s(m);case hc:t:{for(z=S.key;w!==null;){if(w.key===z)if(w.tag===4&&w.stateNode.containerInfo===S.containerInfo&&w.stateNode.implementation===S.implementation){n(m,w.sibling),w=i(w,S.children||[]),w.return=m,m=w;break t}else{n(m,w);break}else e(m,w);w=w.sibling}w=Lm(S,m.mode,A),w.return=m,m=w}return s(m);case Is:return z=S._init,_(m,w,z(S._payload),A)}if(uf(S))return y(m,w,S,A);if($u(S))return b(m,w,S,A);Yd(m,S)}return typeof S=="string"&&S!==""||typeof S=="number"?(S=""+S,w!==null&&w.tag===6?(n(m,w.sibling),w=i(w,S),w.return=m,m=w):(n(m,w),w=Cm(S,m.mode,A),w.return=m,m=w),s(m)):n(m,w)}return _}var Vc=bS(!0),xS=bS(!1),x0=pa(null),w0=null,wc=null,My=null;function Ty(){My=wc=w0=null}function Oy(t){var e=x0.current;He(x0),t._currentValue=e}function $2(t,e,n){for(;t!==null;){var r=t.alternate;if((t.childLanes&e)!==e?(t.childLanes|=e,r!==null&&(r.childLanes|=e)):r!==null&&(r.childLanes&e)!==e&&(r.childLanes|=e),t===n)break;t=t.return}}function Ec(t,e){w0=t,My=wc=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&e&&(Tr=!0),t.firstContext=null)}function wi(t){var e=t._currentValue;if(My!==t)if(t={context:t,memoizedValue:e,next:null},wc===null){if(w0===null)throw Error(Et(308));wc=t,w0.dependencies={lanes:0,firstContext:t}}else wc=wc.next=t;return e}var Va=null;function Ry(t){Va===null?Va=[t]:Va.push(t)}function wS(t,e,n,r){var i=e.interleaved;return i===null?(n.next=n,Ry(e)):(n.next=i.next,i.next=n),e.interleaved=n,cs(t,r)}function cs(t,e){t.lanes|=e;var n=t.alternate;for(n!==null&&(n.lanes|=e),n=t,t=t.return;t!==null;)t.childLanes|=e,n=t.alternate,n!==null&&(n.childLanes|=e),n=t,t=t.return;return n.tag===3?n.stateNode:null}var Fs=!1;function Iy(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function _S(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function os(t,e){return{eventTime:t,lane:e,tag:0,payload:null,callback:null,next:null}}function ea(t,e,n){var r=t.updateQueue;if(r===null)return null;if(r=r.shared,ve&2){var i=r.pending;return i===null?e.next=e:(e.next=i.next,i.next=e),r.pending=e,cs(t,n)}return i=r.interleaved,i===null?(e.next=e,Ry(r)):(e.next=i.next,i.next=e),r.interleaved=e,cs(t,n)}function Tp(t,e,n){if(e=e.updateQueue,e!==null&&(e=e.shared,(n&4194240)!==0)){var r=e.lanes;r&=t.pendingLanes,n|=r,e.lanes=n,xy(t,n)}}function Sx(t,e){var n=t.updateQueue,r=t.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var s={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?i=o=s:o=o.next=s,n=n.next}while(n!==null);o===null?i=o=e:o=o.next=e}else i=o=e;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:r.shared,effects:r.effects},t.updateQueue=n;return}t=n.lastBaseUpdate,t===null?n.firstBaseUpdate=e:t.next=e,n.lastBaseUpdate=e}function _0(t,e,n,r){var i=t.updateQueue;Fs=!1;var o=i.firstBaseUpdate,s=i.lastBaseUpdate,a=i.shared.pending;if(a!==null){i.shared.pending=null;var l=a,c=l.next;l.next=null,s===null?o=c:s.next=c,s=l;var u=t.alternate;u!==null&&(u=u.updateQueue,a=u.lastBaseUpdate,a!==s&&(a===null?u.firstBaseUpdate=c:a.next=c,u.lastBaseUpdate=l))}if(o!==null){var h=i.baseState;s=0,u=c=l=null,a=o;do{var p=a.lane,d=a.eventTime;if((r&p)===p){u!==null&&(u=u.next={eventTime:d,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});t:{var y=t,b=a;switch(p=e,d=n,b.tag){case 1:if(y=b.payload,typeof y=="function"){h=y.call(d,h,p);break t}h=y;break t;case 3:y.flags=y.flags&-65537|128;case 0:if(y=b.payload,p=typeof y=="function"?y.call(d,h,p):y,p==null)break t;h=on({},h,p);break t;case 2:Fs=!0}}a.callback!==null&&a.lane!==0&&(t.flags|=64,p=i.effects,p===null?i.effects=[a]:p.push(a))}else d={eventTime:d,lane:p,tag:a.tag,payload:a.payload,callback:a.callback,next:null},u===null?(c=u=d,l=h):u=u.next=d,s|=p;if(a=a.next,a===null){if(a=i.shared.pending,a===null)break;p=a,a=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(!0);if(u===null&&(l=h),i.baseState=l,i.firstBaseUpdate=c,i.lastBaseUpdate=u,e=i.shared.interleaved,e!==null){i=e;do s|=i.lane,i=i.next;while(i!==e)}else o===null&&(i.shared.lanes=0);cl|=s,t.lanes=s,t.memoizedState=h}}function kx(t,e,n){if(t=e.effects,e.effects=null,t!==null)for(e=0;en?n:4,t(!0);var r=wm.transition;wm.transition={};try{t(!1),e()}finally{Me=n,wm.transition=r}}function BS(){return _i().memoizedState}function zN(t,e,n){var r=ra(t);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},zS(t))$S(e,n);else if(n=wS(t,e,n,r),n!==null){var i=br();Vi(n,t,r,i),US(n,e,r)}}function $N(t,e,n){var r=ra(t),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(zS(t))$S(e,i);else{var o=t.alternate;if(t.lanes===0&&(o===null||o.lanes===0)&&(o=e.lastRenderedReducer,o!==null))try{var s=e.lastRenderedState,a=o(s,n);if(i.hasEagerState=!0,i.eagerState=a,Gi(a,s)){var l=e.interleaved;l===null?(i.next=i,Ry(e)):(i.next=l.next,l.next=i),e.interleaved=i;return}}catch{}finally{}n=wS(t,e,i,r),n!==null&&(i=br(),Vi(n,t,r,i),US(n,e,r))}}function zS(t){var e=t.alternate;return t===rn||e!==null&&e===rn}function $S(t,e){Ef=k0=!0;var n=t.pending;n===null?e.next=e:(e.next=n.next,n.next=e),t.pending=e}function US(t,e,n){if(n&4194240){var r=e.lanes;r&=t.pendingLanes,n|=r,e.lanes=n,xy(t,n)}}var A0={readContext:wi,useCallback:nr,useContext:nr,useEffect:nr,useImperativeHandle:nr,useInsertionEffect:nr,useLayoutEffect:nr,useMemo:nr,useReducer:nr,useRef:nr,useState:nr,useDebugValue:nr,useDeferredValue:nr,useTransition:nr,useMutableSource:nr,useSyncExternalStore:nr,useId:nr,unstable_isNewReconciler:!1},UN={readContext:wi,useCallback:function(t,e){return mo().memoizedState=[t,e===void 0?null:e],t},useContext:wi,useEffect:Cx,useImperativeHandle:function(t,e,n){return n=n!=null?n.concat([t]):null,Rp(4194308,4,RS.bind(null,e,t),n)},useLayoutEffect:function(t,e){return Rp(4194308,4,t,e)},useInsertionEffect:function(t,e){return Rp(4,2,t,e)},useMemo:function(t,e){var n=mo();return e=e===void 0?null:e,t=t(),n.memoizedState=[t,e],t},useReducer:function(t,e,n){var r=mo();return e=n!==void 0?n(e):e,r.memoizedState=r.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},r.queue=t,t=t.dispatch=zN.bind(null,rn,t),[r.memoizedState,t]},useRef:function(t){var e=mo();return t={current:t},e.memoizedState=t},useState:Ax,useDebugValue:qy,useDeferredValue:function(t){return mo().memoizedState=t},useTransition:function(){var t=Ax(!1),e=t[0];return t=BN.bind(null,t[1]),mo().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,n){var r=rn,i=mo();if(Je){if(n===void 0)throw Error(Et(407));n=n()}else{if(n=e(),qn===null)throw Error(Et(349));ll&30||CS(r,e,n)}i.memoizedState=n;var o={value:n,getSnapshot:e};return i.queue=o,Cx(NS.bind(null,r,o,t),[t]),r.flags|=2048,ih(9,LS.bind(null,r,o,n,e),void 0,null),n},useId:function(){var t=mo(),e=qn.identifierPrefix;if(Je){var n=es,r=ts;n=(r&~(1<<32-Wi(r)-1)).toString(32)+n,e=":"+e+"R"+n,n=nh++,0<\/script>",t=t.removeChild(t.firstChild)):typeof r.is=="string"?t=s.createElement(n,{is:r.is}):(t=s.createElement(n),n==="select"&&(s=t,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):t=s.createElementNS(t,n),t[xo]=e,t[Zf]=r,QS(t,e,!1,!1),e.stateNode=t;t:{switch(s=S2(n,r),n){case"dialog":We("cancel",t),We("close",t),i=r;break;case"iframe":case"object":case"embed":We("load",t),i=r;break;case"video":case"audio":for(i=0;iYc&&(e.flags|=128,r=!0,Gu(o,!1),e.lanes=4194304)}else{if(!r)if(t=S0(s),t!==null){if(e.flags|=128,r=!0,n=t.updateQueue,n!==null&&(e.updateQueue=n,e.flags|=4),Gu(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Je)return rr(e),null}else 2*vn()-o.renderingStartTime>Yc&&n!==1073741824&&(e.flags|=128,r=!0,Gu(o,!1),e.lanes=4194304);o.isBackwards?(s.sibling=e.child,e.child=s):(n=o.last,n!==null?n.sibling=s:e.child=s,o.last=s)}return o.tail!==null?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=vn(),e.sibling=null,n=en.current,Ue(en,r?n&1|2:n&1),e):(rr(e),null);case 22:case 23:return Xy(),r=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==r&&(e.flags|=8192),r&&e.mode&1?Gr&1073741824&&(rr(e),e.subtreeFlags&6&&(e.flags|=8192)):rr(e),null;case 24:return null;case 25:return null}throw Error(Et(156,e.tag))}function KN(t,e){switch(Py(e),e.tag){case 1:return Ir(e.type)&&m0(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return Hc(),He(Rr),He(dr),jy(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return Dy(e),null;case 13:if(He(en),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(Et(340));Wc()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return He(en),null;case 4:return Hc(),null;case 10:return Oy(e.type._context),null;case 22:case 23:return Xy(),null;case 24:return null;default:return null}}var Kd=!1,ur=!1,JN=typeof WeakSet=="function"?WeakSet:Set,Wt=null;function _c(t,e){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){dn(t,e,r)}else n.current=null}function K2(t,e,n){try{n()}catch(r){dn(t,e,r)}}var Dx=!1;function QN(t,e){if(O2=h0,t=oS(),Ly(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else t:{n=(n=t.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break t}var s=0,a=-1,l=-1,c=0,u=0,h=t,p=null;e:for(;;){for(var d;h!==n||i!==0&&h.nodeType!==3||(a=s+i),h!==o||r!==0&&h.nodeType!==3||(l=s+r),h.nodeType===3&&(s+=h.nodeValue.length),(d=h.firstChild)!==null;)p=h,h=d;for(;;){if(h===t)break e;if(p===n&&++c===i&&(a=s),p===o&&++u===r&&(l=s),(d=h.nextSibling)!==null)break;h=p,p=h.parentNode}h=d}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(R2={focusedElem:t,selectionRange:n},h0=!1,Wt=e;Wt!==null;)if(e=Wt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Wt=t;else for(;Wt!==null;){e=Wt;try{var y=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var b=y.memoizedProps,_=y.memoizedState,m=e.stateNode,w=m.getSnapshotBeforeUpdate(e.elementType===e.type?b:ji(e.type,b),_);m.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var S=e.stateNode.containerInfo;S.nodeType===1?S.textContent="":S.nodeType===9&&S.documentElement&&S.removeChild(S.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Et(163))}}catch(A){dn(e,e.return,A)}if(t=e.sibling,t!==null){t.return=e.return,Wt=t;break}Wt=e.return}return y=Dx,Dx=!1,y}function Mf(t,e,n){var r=e.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&t)===t){var o=i.destroy;i.destroy=void 0,o!==void 0&&K2(e,n,o)}i=i.next}while(i!==r)}}function mg(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var n=e=e.next;do{if((n.tag&t)===t){var r=n.create;n.destroy=r()}n=n.next}while(n!==e)}}function J2(t){var e=t.ref;if(e!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof e=="function"?e(t):e.current=t}}function e6(t){var e=t.alternate;e!==null&&(t.alternate=null,e6(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[xo],delete e[Zf],delete e[D2],delete e[RN],delete e[IN])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function n6(t){return t.tag===5||t.tag===3||t.tag===4}function jx(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||n6(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Q2(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.nodeType===8?n.parentNode.insertBefore(t,e):n.insertBefore(t,e):(n.nodeType===8?(e=n.parentNode,e.insertBefore(t,n)):(e=n,e.appendChild(t)),n=n._reactRootContainer,n!=null||e.onclick!==null||(e.onclick=g0));else if(r!==4&&(t=t.child,t!==null))for(Q2(t,e,n),t=t.sibling;t!==null;)Q2(t,e,n),t=t.sibling}function Z2(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.insertBefore(t,e):n.appendChild(t);else if(r!==4&&(t=t.child,t!==null))for(Z2(t,e,n),t=t.sibling;t!==null;)Z2(t,e,n),t=t.sibling}var Yn=null,zi=!1;function Es(t,e,n){for(n=n.child;n!==null;)r6(t,e,n),n=n.sibling}function r6(t,e,n){if(ko&&typeof ko.onCommitFiberUnmount=="function")try{ko.onCommitFiberUnmount(lg,n)}catch{}switch(n.tag){case 5:ur||_c(n,e);case 6:var r=Yn,i=zi;Yn=null,Es(t,e,n),Yn=r,zi=i,Yn!==null&&(zi?(t=Yn,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):Yn.removeChild(n.stateNode));break;case 18:Yn!==null&&(zi?(t=Yn,n=n.stateNode,t.nodeType===8?vm(t.parentNode,n):t.nodeType===1&&vm(t,n),Yf(t)):vm(Yn,n.stateNode));break;case 4:r=Yn,i=zi,Yn=n.stateNode.containerInfo,zi=!0,Es(t,e,n),Yn=r,zi=i;break;case 0:case 11:case 14:case 15:if(!ur&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,s=o.destroy;o=o.tag,s!==void 0&&(o&2||o&4)&&K2(n,e,s),i=i.next}while(i!==r)}Es(t,e,n);break;case 1:if(!ur&&(_c(n,e),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){dn(n,e,a)}Es(t,e,n);break;case 21:Es(t,e,n);break;case 22:n.mode&1?(ur=(r=ur)||n.memoizedState!==null,Es(t,e,n),ur=r):Es(t,e,n);break;default:Es(t,e,n)}}function Bx(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new JN),e.forEach(function(r){var i=aP.bind(null,t,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Ii(t,e){var n=e.deletions;if(n!==null)for(var r=0;ri&&(i=s),r&=~o}if(r=i,r=vn()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*tP(r/1960))-r,10t?16:t,Vs===null)var r=!1;else{if(t=Vs,Vs=null,N0=0,ve&6)throw Error(Et(331));var i=ve;for(ve|=4,Wt=t.current;Wt!==null;){var o=Wt,s=o.child;if(Wt.flags&16){var a=o.deletions;if(a!==null){for(var l=0;lvn()-Gy?Qa(t,0):Hy|=n),Fr(t,e)}function f6(t,e){e===0&&(t.mode&1?(e=$d,$d<<=1,!($d&130023424)&&($d=4194304)):e=1);var n=br();t=cs(t,e),t!==null&&(Ch(t,e,n),Fr(t,n))}function sP(t){var e=t.memoizedState,n=0;e!==null&&(n=e.retryLane),f6(t,n)}function aP(t,e){var n=0;switch(t.tag){case 13:var r=t.stateNode,i=t.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=t.stateNode;break;default:throw Error(Et(314))}r!==null&&r.delete(e),f6(t,n)}var h6;h6=function(t,e,n){if(t!==null)if(t.memoizedProps!==e.pendingProps||Rr.current)Tr=!0;else{if(!(t.lanes&n)&&!(e.flags&128))return Tr=!1,YN(t,e,n);Tr=!!(t.flags&131072)}else Tr=!1,Je&&e.flags&1048576&&mS(e,b0,e.index);switch(e.lanes=0,e.tag){case 2:var r=e.type;Ip(t,e),t=e.pendingProps;var i=qc(e,dr.current);Ec(e,n),i=zy(null,e,r,t,i,n);var o=$y();return e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Ir(r)?(o=!0,y0(e)):o=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Iy(e),i.updater=gg,e.stateNode=i,i._reactInternals=e,q2(e,r,t,n),e=H2(null,e,r,!0,o,n)):(e.tag=0,Je&&o&&Ny(e),vr(null,e,i,n),e=e.child),e;case 16:r=e.elementType;t:{switch(Ip(t,e),t=e.pendingProps,i=r._init,r=i(r._payload),e.type=r,i=e.tag=cP(r),t=ji(r,t),i){case 0:e=V2(null,e,r,t,n);break t;case 1:e=Rx(null,e,r,t,n);break t;case 11:e=Tx(null,e,r,t,n);break t;case 14:e=Ox(null,e,r,ji(r.type,t),n);break t}throw Error(Et(306,r,""))}return e;case 0:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:ji(r,i),V2(t,e,r,i,n);case 1:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:ji(r,i),Rx(t,e,r,i,n);case 3:t:{if(XS(e),t===null)throw Error(Et(387));r=e.pendingProps,o=e.memoizedState,i=o.element,_S(t,e),_0(e,r,null,n);var s=e.memoizedState;if(r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},e.updateQueue.baseState=o,e.memoizedState=o,e.flags&256){i=Gc(Error(Et(423)),e),e=Ix(t,e,r,n,i);break t}else if(r!==i){i=Gc(Error(Et(424)),e),e=Ix(t,e,r,n,i);break t}else for(Kr=ta(e.stateNode.containerInfo.firstChild),Qr=e,Je=!0,$i=null,n=xS(e,null,r,n),e.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Wc(),r===i){e=us(t,e,n);break t}vr(t,e,r,n)}e=e.child}return e;case 5:return SS(e),t===null&&z2(e),r=e.type,i=e.pendingProps,o=t!==null?t.memoizedProps:null,s=i.children,I2(r,i)?s=null:o!==null&&I2(r,o)&&(e.flags|=32),YS(t,e),vr(t,e,s,n),e.child;case 6:return t===null&&z2(e),null;case 13:return KS(t,e,n);case 4:return Fy(e,e.stateNode.containerInfo),r=e.pendingProps,t===null?e.child=Vc(e,null,r,n):vr(t,e,r,n),e.child;case 11:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:ji(r,i),Tx(t,e,r,i,n);case 7:return vr(t,e,e.pendingProps,n),e.child;case 8:return vr(t,e,e.pendingProps.children,n),e.child;case 12:return vr(t,e,e.pendingProps.children,n),e.child;case 10:t:{if(r=e.type._context,i=e.pendingProps,o=e.memoizedProps,s=i.value,Ue(x0,r._currentValue),r._currentValue=s,o!==null)if(Gi(o.value,s)){if(o.children===i.children&&!Rr.current){e=us(t,e,n);break t}}else for(o=e.child,o!==null&&(o.return=e);o!==null;){var a=o.dependencies;if(a!==null){s=o.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=os(-1,n&-n),l.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var u=c.pending;u===null?l.next=l:(l.next=u.next,u.next=l),c.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),$2(o.return,n,e),a.lanes|=n;break}l=l.next}}else if(o.tag===10)s=o.type===e.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(Et(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),$2(s,n,e),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===e){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}vr(t,e,i.children,n),e=e.child}return e;case 9:return i=e.type,r=e.pendingProps.children,Ec(e,n),i=wi(i),r=r(i),e.flags|=1,vr(t,e,r,n),e.child;case 14:return r=e.type,i=ji(r,e.pendingProps),i=ji(r.type,i),Ox(t,e,r,i,n);case 15:return HS(t,e,e.type,e.pendingProps,n);case 17:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:ji(r,i),Ip(t,e),e.tag=1,Ir(r)?(t=!0,y0(e)):t=!1,Ec(e,n),qS(e,r,i),q2(e,r,i,n),H2(null,e,r,!0,t,n);case 19:return JS(t,e,n);case 22:return GS(t,e,n)}throw Error(Et(156,e.tag))};function d6(t,e){return z4(t,e)}function lP(t,e,n,r){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function bi(t,e,n,r){return new lP(t,e,n,r)}function Jy(t){return t=t.prototype,!(!t||!t.isReactComponent)}function cP(t){if(typeof t=="function")return Jy(t)?1:0;if(t!=null){if(t=t.$$typeof,t===my)return 11;if(t===yy)return 14}return 2}function ia(t,e){var n=t.alternate;return n===null?(n=bi(t.tag,e,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=e,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,e=t.dependencies,n.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function jp(t,e,n,r,i,o){var s=2;if(r=t,typeof t=="function")Jy(t)&&(s=1);else if(typeof t=="string")s=5;else t:switch(t){case dc:return Za(n.children,i,o,e);case gy:s=8,i|=8;break;case d2:return t=bi(12,n,e,i|2),t.elementType=d2,t.lanes=o,t;case p2:return t=bi(13,n,e,i),t.elementType=p2,t.lanes=o,t;case g2:return t=bi(19,n,e,i),t.elementType=g2,t.lanes=o,t;case S4:return vg(n,i,o,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case w4:s=10;break t;case _4:s=9;break t;case my:s=11;break t;case yy:s=14;break t;case Is:s=16,r=null;break t}throw Error(Et(130,t==null?t:typeof t,""))}return e=bi(s,n,e,i),e.elementType=t,e.type=r,e.lanes=o,e}function Za(t,e,n,r){return t=bi(7,t,r,e),t.lanes=n,t}function vg(t,e,n,r){return t=bi(22,t,r,e),t.elementType=S4,t.lanes=n,t.stateNode={isHidden:!1},t}function Cm(t,e,n){return t=bi(6,t,null,e),t.lanes=n,t}function Lm(t,e,n){return e=bi(4,t.children!==null?t.children:[],t.key,e),e.lanes=n,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function uP(t,e,n,r,i){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=am(0),this.expirationTimes=am(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=am(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Qy(t,e,n,r,i,o,s,a,l){return t=new uP(t,e,n,a,l),e===1?(e=1,o===!0&&(e|=8)):e=0,o=bi(3,null,null,e),t.current=o,o.stateNode=t,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Iy(o),t}function fP(t,e,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(y6)}catch(t){console.error(t)}}y6(),y4.exports=ri;var v6=y4.exports;const kc=sg(v6);var b6,Gx=v6;b6=Gx.createRoot,Gx.hydrateRoot;/** + * @remix-run/router v1.21.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function M0(){return M0=Object.assign?Object.assign.bind():function(t){for(var e=1;e"u")throw new Error(e)}function x6(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function yP(){return Math.random().toString(36).substr(2,8)}function Xx(t,e){return{usr:t.state,key:t.key,idx:e}}function i5(t,e,n,r){return n===void 0&&(n=null),M0({pathname:typeof t=="string"?t:t.pathname,search:"",hash:""},typeof e=="string"?nv(e):e,{state:n,key:e&&e.key||r||yP()})}function w6(t){let{pathname:e="/",search:n="",hash:r=""}=t;return n&&n!=="?"&&(e+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(e+=r.charAt(0)==="#"?r:"#"+r),e}function nv(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substr(n),t=t.substr(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substr(r),t=t.substr(0,r)),t&&(e.pathname=t)}return e}function vP(t,e,n,r){r===void 0&&(r={});let{window:i=document.defaultView,v5Compat:o=!1}=r,s=i.history,a=Ga.Pop,l=null,c=u();c==null&&(c=0,s.replaceState(M0({},s.state,{idx:c}),""));function u(){return(s.state||{idx:null}).idx}function h(){a=Ga.Pop;let _=u(),m=_==null?null:_-c;c=_,l&&l({action:a,location:b.location,delta:m})}function p(_,m){a=Ga.Push;let w=i5(b.location,_,m);c=u()+1;let S=Xx(w,c),A=b.createHref(w);try{s.pushState(S,"",A)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;i.location.assign(A)}o&&l&&l({action:a,location:b.location,delta:1})}function d(_,m){a=Ga.Replace;let w=i5(b.location,_,m);c=u();let S=Xx(w,c),A=b.createHref(w);s.replaceState(S,"",A),o&&l&&l({action:a,location:b.location,delta:0})}function y(_){let m=i.location.origin!=="null"?i.location.origin:i.location.href,w=typeof _=="string"?_:w6(_);return w=w.replace(/ $/,"%20"),Eo(m,"No window.location.(origin|href) available to create URL for href: "+w),new URL(w,m)}let b={get action(){return a},get location(){return t(i,s)},listen(_){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener(Yx,h),l=_,()=>{i.removeEventListener(Yx,h),l=null}},createHref(_){return e(i,_)},createURL:y,encodeLocation(_){let m=y(_);return{pathname:m.pathname,search:m.search,hash:m.hash}},push:p,replace:d,go(_){return s.go(_)}};return b}var Kx;(function(t){t.data="data",t.deferred="deferred",t.redirect="redirect",t.error="error"})(Kx||(Kx={}));function bP(t,e,n){return n===void 0&&(n="/"),xP(t,e,n,!1)}function xP(t,e,n,r){let i=typeof e=="string"?nv(e):e,o=k6(i.pathname||"/",n);if(o==null)return null;let s=_6(t);wP(s);let a=null;for(let l=0;a==null&&l{let l={relativePath:a===void 0?o.path||"":a,caseSensitive:o.caseSensitive===!0,childrenIndex:s,route:o};l.relativePath.startsWith("/")&&(Eo(l.relativePath.startsWith(r),'Absolute route path "'+l.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),l.relativePath=l.relativePath.slice(r.length));let c=Tc([r,l.relativePath]),u=n.concat(l);o.children&&o.children.length>0&&(Eo(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),_6(o.children,e,u,c)),!(o.path==null&&!o.index)&&e.push({path:c,score:NP(c,o.index),routesMeta:u})};return t.forEach((o,s)=>{var a;if(o.path===""||!((a=o.path)!=null&&a.includes("?")))i(o,s);else for(let l of S6(o.path))i(o,s,l)}),e}function S6(t){let e=t.split("/");if(e.length===0)return[];let[n,...r]=e,i=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return i?[o,""]:[o];let s=S6(r.join("/")),a=[];return a.push(...s.map(l=>l===""?o:[o,l].join("/"))),i&&a.push(...s),a.map(l=>t.startsWith("/")&&l===""?"/":l)}function wP(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:PP(e.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const _P=/^:[\w-]+$/,SP=3,kP=2,AP=1,CP=10,LP=-2,Jx=t=>t==="*";function NP(t,e){let n=t.split("/"),r=n.length;return n.some(Jx)&&(r+=LP),e&&(r+=kP),n.filter(i=>!Jx(i)).reduce((i,o)=>i+(_P.test(o)?SP:o===""?AP:CP),r)}function PP(t,e){return t.length===e.length&&t.slice(0,-1).every((r,i)=>r===e[i])?t[t.length-1]-e[e.length-1]:0}function EP(t,e,n){let{routesMeta:r}=t,i={},o="/",s=[];for(let a=0;a{let{paramName:p,isOptional:d}=u;if(p==="*"){let b=a[h]||"";s=o.slice(0,o.length-b.length).replace(/(.)\/+$/,"$1")}const y=a[h];return d&&!y?c[p]=void 0:c[p]=(y||"").replace(/%2F/g,"/"),c},{}),pathname:o,pathnameBase:s,pattern:t}}function MP(t,e,n){e===void 0&&(e=!1),n===void 0&&(n=!0),x6(t==="*"||!t.endsWith("*")||t.endsWith("/*"),'Route path "'+t+'" will be treated as if it were '+('"'+t.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+t.replace(/\*$/,"/*")+'".'));let r=[],i="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,a,l)=>(r.push({paramName:a,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)"));return t.endsWith("*")?(r.push({paramName:"*"}),i+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":t!==""&&t!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,e?void 0:"i"),r]}function TP(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return x6(!1,'The URL path "'+t+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+e+").")),t}}function k6(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,r=t.charAt(n);return r&&r!=="/"?null:t.slice(n)||"/"}const Tc=t=>t.join("/").replace(/\/\/+/g,"/"),OP=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/");function RP(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}const A6=["post","put","patch","delete"];new Set(A6);const IP=["get",...A6];new Set(IP);/** + * React Router v6.28.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function o5(){return o5=Object.assign?Object.assign.bind():function(t){for(var e=1;eObject.assign({},b,{params:Object.assign({},a,b.params),pathname:Tc([l,i.encodeLocation?i.encodeLocation(b.pathname).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?l:Tc([l,i.encodeLocation?i.encodeLocation(b.pathnameBase).pathname:b.pathnameBase])})),o,n,r)}function $P(){let t=XP(),e=RP(t)?t.status+" "+t.statusText:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return H.createElement(H.Fragment,null,H.createElement("h2",null,"Unexpected Application Error!"),H.createElement("h3",{style:{fontStyle:"italic"}},e),n?H.createElement("pre",{style:i},n):null,null)}const UP=H.createElement($P,null);class qP extends H.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,n){return n.location!==e.location||n.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:n.error,location:n.location,revalidation:e.revalidation||n.revalidation}}componentDidCatch(e,n){console.error("React Router caught the following error during render",e,n)}render(){return this.state.error!==void 0?H.createElement(Eh.Provider,{value:this.props.routeContext},H.createElement(L6.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function WP(t){let{routeContext:e,match:n,children:r}=t,i=H.useContext(FP);return i&&i.static&&i.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),H.createElement(Eh.Provider,{value:e},r)}function VP(t,e,n,r){var i;if(e===void 0&&(e=[]),n===void 0&&(n=null),r===void 0&&(r=null),t==null){var o;if(!n)return null;if(n.errors)t=n.matches;else if((o=r)!=null&&o.v7_partialHydration&&e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let s=t,a=(i=n)==null?void 0:i.errors;if(a!=null){let u=s.findIndex(h=>h.route.id&&(a==null?void 0:a[h.route.id])!==void 0);u>=0||Eo(!1),s=s.slice(0,Math.min(s.length,u+1))}let l=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let u=0;u=0?s=s.slice(0,c+1):s=[s[0]];break}}}return s.reduceRight((u,h,p)=>{let d,y=!1,b=null,_=null;n&&(d=a&&h.route.id?a[h.route.id]:void 0,b=h.route.errorElement||UP,l&&(c<0&&p===0?(KP("route-fallback"),y=!0,_=null):c===p&&(y=!0,_=h.route.hydrateFallbackElement||null)));let m=e.concat(s.slice(0,p+1)),w=()=>{let S;return d?S=b:y?S=_:h.route.Component?S=H.createElement(h.route.Component,null):h.route.element?S=h.route.element:S=u,H.createElement(WP,{match:h,routeContext:{outlet:u,matches:m,isDataRoute:n!=null},children:S})};return n&&(h.route.ErrorBoundary||h.route.errorElement||p===0)?H.createElement(qP,{location:n.location,revalidation:n.revalidation,component:b,error:d,children:w(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):w()},null)}var s5=function(t){return t.UseBlocker="useBlocker",t.UseLoaderData="useLoaderData",t.UseActionData="useActionData",t.UseRouteError="useRouteError",t.UseNavigation="useNavigation",t.UseRouteLoaderData="useRouteLoaderData",t.UseMatches="useMatches",t.UseRevalidator="useRevalidator",t.UseNavigateStable="useNavigate",t.UseRouteId="useRouteId",t}(s5||{});function HP(t){let e=H.useContext(DP);return e||Eo(!1),e}function GP(t){let e=H.useContext(Eh);return e||Eo(!1),e}function YP(t){let e=GP(),n=e.matches[e.matches.length-1];return n.route.id||Eo(!1),n.route.id}function XP(){var t;let e=H.useContext(L6),n=HP(s5.UseRouteError),r=YP(s5.UseRouteError);return e!==void 0?e:(t=n.errors)==null?void 0:t[r]}const Zx={};function KP(t,e,n){Zx[t]||(Zx[t]=!0)}const tw={};function JP(t,e){tw[e]||(tw[e]=!0,console.warn(e))}const ew=(t,e,n)=>JP(t,"⚠️ React Router Future Flag Warning: "+e+". "+("You can use the `"+t+"` future flag to opt-in early. ")+("For more information, see "+n+"."));function QP(t,e){t!=null&&t.v7_startTransition||ew("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),!(t!=null&&t.v7_relativeSplatPath)&&!e&&ew("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath")}function ZP(t){let{basename:e="/",children:n=null,location:r,navigationType:i=Ga.Pop,navigator:o,static:s=!1,future:a}=t;iv()&&Eo(!1);let l=e.replace(/^\/*/,"/"),c=H.useMemo(()=>({basename:l,navigator:o,static:s,future:o5({v7_relativeSplatPath:!1},a)}),[l,a,o,s]);typeof r=="string"&&(r=nv(r));let{pathname:u="/",search:h="",hash:p="",state:d=null,key:y="default"}=r,b=H.useMemo(()=>{let _=k6(u,l);return _==null?null:{location:{pathname:_,search:h,hash:p,state:d,key:y},navigationType:i}},[l,u,h,p,d,y,i]);return b==null?null:H.createElement(C6.Provider,{value:c},H.createElement(rv.Provider,{children:n,value:b}))}new Promise(()=>{});/** + * React Router DOM v6.28.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */const tE="6";try{window.__reactRouterVersion=tE}catch{}const eE="startTransition",nw=f2[eE];function nE(t){let{basename:e,children:n,future:r,window:i}=t,o=H.useRef();o.current==null&&(o.current=mP({window:i,v5Compat:!0}));let s=o.current,[a,l]=H.useState({action:s.action,location:s.location}),{v7_startTransition:c}=r||{},u=H.useCallback(h=>{c&&nw?nw(()=>l(h)):l(h)},[l,c]);return H.useLayoutEffect(()=>s.listen(u),[s,u]),H.useEffect(()=>QP(r),[r]),H.createElement(ZP,{basename:e,children:n,location:a.location,navigationType:a.action,navigator:s,future:r})}var rw;(function(t){t.UseScrollRestoration="useScrollRestoration",t.UseSubmit="useSubmit",t.UseSubmitFetcher="useSubmitFetcher",t.UseFetcher="useFetcher",t.useViewTransitionState="useViewTransitionState"})(rw||(rw={}));var iw;(function(t){t.UseFetcher="useFetcher",t.UseFetchers="useFetchers",t.UseScrollRestoration="useScrollRestoration"})(iw||(iw={}));const sh={black:"#000",white:"#fff"},Jl={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},Ql={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},Zl={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},tc={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},ec={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},Xu={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},rE={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"};function fl(t,...e){const n=new URL(`https://mui.com/production-error/?code=${t}`);return e.forEach(r=>n.searchParams.append("args[]",r)),`Minified MUI error #${t}; visit ${n} for the full message.`}const N6="$$material";function T0(){return T0=Object.assign?Object.assign.bind():function(t){for(var e=1;e0?Xn(ou,--Br):0,Xc--,Nn===10&&(Xc=1,Ag--),Nn}function Zr(){return Nn=Br2||lh(Nn)>3?"":" "}function xE(t,e){for(;--e&&Zr()&&!(Nn<48||Nn>102||Nn>57&&Nn<65||Nn>70&&Nn<97););return Mh(t,Bp()+(e<6&&Co()==32&&Zr()==32))}function l5(t){for(;Zr();)switch(Nn){case t:return Br;case 34:case 39:t!==34&&t!==39&&l5(Nn);break;case 40:t===41&&l5(t);break;case 92:Zr();break}return Br}function wE(t,e){for(;Zr()&&t+Nn!==57;)if(t+Nn===84&&Co()===47)break;return"/*"+Mh(e,Br-1)+"*"+kg(t===47?t:Zr())}function _E(t){for(;!lh(Co());)Zr();return Mh(t,Br)}function SE(t){return I6($p("",null,null,null,[""],t=R6(t),0,[0],t))}function $p(t,e,n,r,i,o,s,a,l){for(var c=0,u=0,h=s,p=0,d=0,y=0,b=1,_=1,m=1,w=0,S="",A=i,P=o,z=r,I=S;_;)switch(y=w,w=Zr()){case 40:if(y!=108&&Xn(I,h-1)==58){a5(I+=ke(zp(w),"&","&\f"),"&\f")!=-1&&(m=-1);break}case 34:case 39:case 91:I+=zp(w);break;case 9:case 10:case 13:case 32:I+=bE(y);break;case 92:I+=xE(Bp()-1,7);continue;case 47:switch(Co()){case 42:case 47:Zd(kE(wE(Zr(),Bp()),e,n),l);break;default:I+="/"}break;case 123*b:a[c++]=vo(I)*m;case 125*b:case 59:case 0:switch(w){case 0:case 125:_=0;case 59+u:m==-1&&(I=ke(I,/\f/g,"")),d>0&&vo(I)-h&&Zd(d>32?sw(I+";",r,n,h-1):sw(ke(I," ","")+";",r,n,h-2),l);break;case 59:I+=";";default:if(Zd(z=ow(I,e,n,c,u,i,a,S,A=[],P=[],h),o),w===123)if(u===0)$p(I,e,z,z,A,o,h,a,P);else switch(p===99&&Xn(I,3)===110?100:p){case 100:case 108:case 109:case 115:$p(t,z,z,r&&Zd(ow(t,z,z,0,0,i,a,S,i,A=[],h),P),i,P,h,a,r?A:P);break;default:$p(I,z,z,z,[""],P,0,a,P)}}c=u=d=0,b=m=1,S=I="",h=s;break;case 58:h=1+vo(I),d=y;default:if(b<1){if(w==123)--b;else if(w==125&&b++==0&&vE()==125)continue}switch(I+=kg(w),w*b){case 38:m=u>0?1:(I+="\f",-1);break;case 44:a[c++]=(vo(I)-1)*m,m=1;break;case 64:Co()===45&&(I+=zp(Zr())),p=Co(),u=h=vo(S=I+=_E(Bp())),w++;break;case 45:y===45&&vo(I)==2&&(b=0)}}return o}function ow(t,e,n,r,i,o,s,a,l,c,u){for(var h=i-1,p=i===0?o:[""],d=av(p),y=0,b=0,_=0;y0?p[m]+" "+w:ke(w,/&\f/g,p[m])))&&(l[_++]=S);return Cg(t,e,n,i===0?ov:a,l,c,u)}function kE(t,e,n){return Cg(t,e,n,E6,kg(yE()),ah(t,2,-2),0)}function sw(t,e,n,r){return Cg(t,e,n,sv,ah(t,0,r),ah(t,r+1,-1),r)}function Oc(t,e){for(var n="",r=av(t),i=0;i6)switch(Xn(t,e+1)){case 109:if(Xn(t,e+4)!==45)break;case 102:return ke(t,/(.+:)(.+)-([^]+)/,"$1"+Se+"$2-$3$1"+O0+(Xn(t,e+3)==108?"$3":"$2-$3"))+t;case 115:return~a5(t,"stretch")?F6(ke(t,"stretch","fill-available"),e)+t:t}break;case 4949:if(Xn(t,e+1)!==115)break;case 6444:switch(Xn(t,vo(t)-3-(~a5(t,"!important")&&10))){case 107:return ke(t,":",":"+Se)+t;case 101:return ke(t,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Se+(Xn(t,14)===45?"inline-":"")+"box$3$1"+Se+"$2$3$1"+lr+"$2box$3")+t}break;case 5936:switch(Xn(t,e+11)){case 114:return Se+t+lr+ke(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return Se+t+lr+ke(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return Se+t+lr+ke(t,/[svh]\w+-[tblr]{2}/,"lr")+t}return Se+t+lr+t+t}return t}var OE=function(e,n,r,i){if(e.length>-1&&!e.return)switch(e.type){case sv:e.return=F6(e.value,e.length);break;case M6:return Oc([Ku(e,{value:ke(e.value,"@","@"+Se)})],i);case ov:if(e.length)return mE(e.props,function(o){switch(gE(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Oc([Ku(e,{props:[ke(o,/:(read-\w+)/,":"+O0+"$1")]})],i);case"::placeholder":return Oc([Ku(e,{props:[ke(o,/:(plac\w+)/,":"+Se+"input-$1")]}),Ku(e,{props:[ke(o,/:(plac\w+)/,":"+O0+"$1")]}),Ku(e,{props:[ke(o,/:(plac\w+)/,lr+"input-$1")]})],i)}return""})}},RE=[OE],IE=function(e){var n=e.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(b){var _=b.getAttribute("data-emotion");_.indexOf(" ")!==-1&&(document.head.appendChild(b),b.setAttribute("data-s",""))})}var i=e.stylisPlugins||RE,o={},s,a=[];s=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(b){for(var _=b.getAttribute("data-emotion").split(" "),m=1;m<_.length;m++)o[_[m]]=!0;a.push(b)});var l,c=[ME,TE];{var u,h=[AE,LE(function(b){u.insert(b)})],p=CE(c.concat(i,h)),d=function(_){return Oc(SE(_),p)};l=function(_,m,w,S){u=w,d(_?_+"{"+m.styles+"}":m.styles),S&&(y.inserted[m.name]=!0)}}var y={key:n,sheet:new cE({key:n,container:s,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:o,registered:{},insert:l};return y.sheet.hydrate(a),y},D6={exports:{}},Te={};/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Wn=typeof Symbol=="function"&&Symbol.for,lv=Wn?Symbol.for("react.element"):60103,cv=Wn?Symbol.for("react.portal"):60106,Lg=Wn?Symbol.for("react.fragment"):60107,Ng=Wn?Symbol.for("react.strict_mode"):60108,Pg=Wn?Symbol.for("react.profiler"):60114,Eg=Wn?Symbol.for("react.provider"):60109,Mg=Wn?Symbol.for("react.context"):60110,uv=Wn?Symbol.for("react.async_mode"):60111,Tg=Wn?Symbol.for("react.concurrent_mode"):60111,Og=Wn?Symbol.for("react.forward_ref"):60112,Rg=Wn?Symbol.for("react.suspense"):60113,FE=Wn?Symbol.for("react.suspense_list"):60120,Ig=Wn?Symbol.for("react.memo"):60115,Fg=Wn?Symbol.for("react.lazy"):60116,DE=Wn?Symbol.for("react.block"):60121,jE=Wn?Symbol.for("react.fundamental"):60117,BE=Wn?Symbol.for("react.responder"):60118,zE=Wn?Symbol.for("react.scope"):60119;function oi(t){if(typeof t=="object"&&t!==null){var e=t.$$typeof;switch(e){case lv:switch(t=t.type,t){case uv:case Tg:case Lg:case Pg:case Ng:case Rg:return t;default:switch(t=t&&t.$$typeof,t){case Mg:case Og:case Fg:case Ig:case Eg:return t;default:return e}}case cv:return e}}}function j6(t){return oi(t)===Tg}Te.AsyncMode=uv;Te.ConcurrentMode=Tg;Te.ContextConsumer=Mg;Te.ContextProvider=Eg;Te.Element=lv;Te.ForwardRef=Og;Te.Fragment=Lg;Te.Lazy=Fg;Te.Memo=Ig;Te.Portal=cv;Te.Profiler=Pg;Te.StrictMode=Ng;Te.Suspense=Rg;Te.isAsyncMode=function(t){return j6(t)||oi(t)===uv};Te.isConcurrentMode=j6;Te.isContextConsumer=function(t){return oi(t)===Mg};Te.isContextProvider=function(t){return oi(t)===Eg};Te.isElement=function(t){return typeof t=="object"&&t!==null&&t.$$typeof===lv};Te.isForwardRef=function(t){return oi(t)===Og};Te.isFragment=function(t){return oi(t)===Lg};Te.isLazy=function(t){return oi(t)===Fg};Te.isMemo=function(t){return oi(t)===Ig};Te.isPortal=function(t){return oi(t)===cv};Te.isProfiler=function(t){return oi(t)===Pg};Te.isStrictMode=function(t){return oi(t)===Ng};Te.isSuspense=function(t){return oi(t)===Rg};Te.isValidElementType=function(t){return typeof t=="string"||typeof t=="function"||t===Lg||t===Tg||t===Pg||t===Ng||t===Rg||t===FE||typeof t=="object"&&t!==null&&(t.$$typeof===Fg||t.$$typeof===Ig||t.$$typeof===Eg||t.$$typeof===Mg||t.$$typeof===Og||t.$$typeof===jE||t.$$typeof===BE||t.$$typeof===zE||t.$$typeof===DE)};Te.typeOf=oi;D6.exports=Te;var $E=D6.exports,B6=$E,UE={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},qE={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},z6={};z6[B6.ForwardRef]=UE;z6[B6.Memo]=qE;var WE=!0;function VE(t,e,n){var r="";return n.split(" ").forEach(function(i){t[i]!==void 0?e.push(t[i]+";"):i&&(r+=i+" ")}),r}var $6=function(e,n,r){var i=e.key+"-"+n.name;(r===!1||WE===!1)&&e.registered[i]===void 0&&(e.registered[i]=n.styles)},HE=function(e,n,r){$6(e,n,r);var i=e.key+"-"+n.name;if(e.inserted[n.name]===void 0){var o=n;do e.insert(n===o?"."+i:"",o,e.sheet,!0),o=o.next;while(o!==void 0)}};function GE(t){for(var e=0,n,r=0,i=t.length;i>=4;++r,i-=4)n=t.charCodeAt(r)&255|(t.charCodeAt(++r)&255)<<8|(t.charCodeAt(++r)&255)<<16|(t.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,e=(n&65535)*1540483477+((n>>>16)*59797<<16)^(e&65535)*1540483477+((e>>>16)*59797<<16);switch(i){case 3:e^=(t.charCodeAt(r+2)&255)<<16;case 2:e^=(t.charCodeAt(r+1)&255)<<8;case 1:e^=t.charCodeAt(r)&255,e=(e&65535)*1540483477+((e>>>16)*59797<<16)}return e^=e>>>13,e=(e&65535)*1540483477+((e>>>16)*59797<<16),((e^e>>>15)>>>0).toString(36)}var YE={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},XE=!1,KE=/[A-Z]|^ms/g,JE=/_EMO_([^_]+?)_([^]*?)_EMO_/g,U6=function(e){return e.charCodeAt(1)===45},lw=function(e){return e!=null&&typeof e!="boolean"},Nm=P6(function(t){return U6(t)?t:t.replace(KE,"-$&").toLowerCase()}),cw=function(e,n){switch(e){case"animation":case"animationName":if(typeof n=="string")return n.replace(JE,function(r,i,o){return bo={name:i,styles:o,next:bo},i})}return YE[e]!==1&&!U6(e)&&typeof n=="number"&&n!==0?n+"px":n},QE="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function ch(t,e,n){if(n==null)return"";var r=n;if(r.__emotion_styles!==void 0)return r;switch(typeof n){case"boolean":return"";case"object":{var i=n;if(i.anim===1)return bo={name:i.name,styles:i.styles,next:bo},i.name;var o=n;if(o.styles!==void 0){var s=o.next;if(s!==void 0)for(;s!==void 0;)bo={name:s.name,styles:s.styles,next:bo},s=s.next;var a=o.styles+";";return a}return ZE(t,e,n)}case"function":{if(t!==void 0){var l=bo,c=n(t);return bo=l,ch(t,e,c)}break}}var u=n;if(e==null)return u;var h=e[u];return h!==void 0?h:u}function ZE(t,e,n){var r="";if(Array.isArray(n))for(var i=0;i96?o7:s7},hw=function(e,n,r){var i;if(n){var o=n.shouldForwardProp;i=e.__emotion_forwardProp&&o?function(s){return e.__emotion_forwardProp(s)&&o(s)}:o}return typeof i!="function"&&r&&(i=e.__emotion_forwardProp),i},a7=!1,l7=function(e){var n=e.cache,r=e.serialized,i=e.isStringTag;return $6(n,r,i),n7(function(){return HE(n,r,i)}),null},c7=function t(e,n){var r=e.__emotion_real===e,i=r&&e.__emotion_base||e,o,s;n!==void 0&&(o=n.label,s=n.target);var a=hw(e,n,r),l=a||fw(i),c=!l("as");return function(){var u=arguments,h=r&&e.__emotion_styles!==void 0?e.__emotion_styles.slice(0):[];if(o!==void 0&&h.push("label:"+o+";"),u[0]==null||u[0].raw===void 0)h.push.apply(h,u);else{h.push(u[0][0]);for(var p=u.length,d=1;d{e[n]=Y6(t[n])}),e}function ti(t,e,n={clone:!0}){const r=n.clone?{...t}:t;return wo(t)&&wo(e)&&Object.keys(e).forEach(i=>{wo(e[i])&&Object.prototype.hasOwnProperty.call(t,i)&&wo(t[i])?r[i]=ti(t[i],e[i],n):n.clone?r[i]=wo(e[i])?Y6(e[i]):e[i]:r[i]=e[i]}),r}const v7=t=>{const e=Object.keys(t).map(n=>({key:n,val:t[n]}))||[];return e.sort((n,r)=>n.val-r.val),e.reduce((n,r)=>({...n,[r.key]:r.val}),{})};function b7(t){const{values:e={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5,...i}=t,o=v7(e),s=Object.keys(o);function a(p){return`@media (min-width:${typeof e[p]=="number"?e[p]:p}${n})`}function l(p){return`@media (max-width:${(typeof e[p]=="number"?e[p]:p)-r/100}${n})`}function c(p,d){const y=s.indexOf(d);return`@media (min-width:${typeof e[p]=="number"?e[p]:p}${n}) and (max-width:${(y!==-1&&typeof e[s[y]]=="number"?e[s[y]]:d)-r/100}${n})`}function u(p){return s.indexOf(p)+1r.startsWith("@container")).sort((r,i)=>{var s,a;const o=/min-width:\s*([0-9.]+)/;return+(((s=r.match(o))==null?void 0:s[1])||0)-+(((a=i.match(o))==null?void 0:a[1])||0)});return n.length?n.reduce((r,i)=>{const o=e[i];return delete r[i],r[i]=o,r},{...e}):e}function w7(t,e){return e==="@"||e.startsWith("@")&&(t.some(n=>e.startsWith(`@${n}`))||!!e.match(/^@\d/))}function _7(t,e){const n=e.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,i]=n,o=Number.isNaN(+r)?r||0:+r;return t.containerQueries(i).up(o)}function S7(t){const e=(o,s)=>o.replace("@media",s?`@container ${s}`:"@container");function n(o,s){o.up=(...a)=>e(t.breakpoints.up(...a),s),o.down=(...a)=>e(t.breakpoints.down(...a),s),o.between=(...a)=>e(t.breakpoints.between(...a),s),o.only=(...a)=>e(t.breakpoints.only(...a),s),o.not=(...a)=>{const l=e(t.breakpoints.not(...a),s);return l.includes("not all and")?l.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or"):l}}const r={},i=o=>(n(r,o),r);return n(i),{...t,containerQueries:i}}const k7={borderRadius:4};function Rf(t,e){return e?ti(t,e,{clone:!1}):t}const Dg={xs:0,sm:600,md:900,lg:1200,xl:1536},gw={keys:["xs","sm","md","lg","xl"],up:t=>`@media (min-width:${Dg[t]}px)`},A7={containerQueries:t=>({up:e=>{let n=typeof e=="number"?e:Dg[e]||e;return typeof n=="number"&&(n=`${n}px`),t?`@container ${t} (min-width:${n})`:`@container (min-width:${n})`}})};function fs(t,e,n){const r=t.theme||{};if(Array.isArray(e)){const o=r.breakpoints||gw;return e.reduce((s,a,l)=>(s[o.up(o.keys[l])]=n(e[l]),s),{})}if(typeof e=="object"){const o=r.breakpoints||gw;return Object.keys(e).reduce((s,a)=>{if(w7(o.keys,a)){const l=_7(r.containerQueries?r:A7,a);l&&(s[l]=n(e[a],a))}else if(Object.keys(o.values||Dg).includes(a)){const l=o.up(a);s[l]=n(e[a],a)}else{const l=a;s[l]=e[l]}return s},{})}return n(e)}function C7(t={}){var n;return((n=t.keys)==null?void 0:n.reduce((r,i)=>{const o=t.up(i);return r[o]={},r},{}))||{}}function L7(t,e){return t.reduce((n,r)=>{const i=n[r];return(!i||Object.keys(i).length===0)&&delete n[r],n},e)}function nn(t){if(typeof t!="string")throw new Error(fl(7));return t.charAt(0).toUpperCase()+t.slice(1)}function jg(t,e,n=!0){if(!e||typeof e!="string")return null;if(t&&t.vars&&n){const r=`vars.${e}`.split(".").reduce((i,o)=>i&&i[o]?i[o]:null,t);if(r!=null)return r}return e.split(".").reduce((r,i)=>r&&r[i]!=null?r[i]:null,t)}function R0(t,e,n,r=n){let i;return typeof t=="function"?i=t(n):Array.isArray(t)?i=t[n]||r:i=jg(t,n)||r,e&&(i=e(i,r,t)),i}function Sn(t){const{prop:e,cssProperty:n=t.prop,themeKey:r,transform:i}=t,o=s=>{if(s[e]==null)return null;const a=s[e],l=s.theme,c=jg(l,r)||{};return fs(s,a,h=>{let p=R0(c,i,h);return h===p&&typeof h=="string"&&(p=R0(c,i,`${e}${h==="default"?"":nn(h)}`,h)),n===!1?p:{[n]:p}})};return o.propTypes={},o.filterProps=[e],o}function N7(t){const e={};return n=>(e[n]===void 0&&(e[n]=t(n)),e[n])}const P7={m:"margin",p:"padding"},E7={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},mw={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},M7=N7(t=>{if(t.length>2)if(mw[t])t=mw[t];else return[t];const[e,n]=t.split(""),r=P7[e],i=E7[n]||"";return Array.isArray(i)?i.map(o=>r+o):[r+i]}),dv=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],pv=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...dv,...pv];function Th(t,e,n,r){const i=jg(t,e,!0)??n;return typeof i=="number"||typeof i=="string"?o=>typeof o=="string"?o:typeof i=="string"?`calc(${o} * ${i})`:i*o:Array.isArray(i)?o=>{if(typeof o=="string")return o;const s=Math.abs(o),a=i[s];return o>=0?a:typeof a=="number"?-a:`-${a}`}:typeof i=="function"?i:()=>{}}function gv(t){return Th(t,"spacing",8)}function Oh(t,e){return typeof e=="string"||e==null?e:t(e)}function T7(t,e){return n=>t.reduce((r,i)=>(r[i]=Oh(e,n),r),{})}function O7(t,e,n,r){if(!e.includes(n))return null;const i=M7(n),o=T7(i,r),s=t[n];return fs(t,s,o)}function X6(t,e){const n=gv(t.theme);return Object.keys(t).map(r=>O7(t,e,r,n)).reduce(Rf,{})}function un(t){return X6(t,dv)}un.propTypes={};un.filterProps=dv;function fn(t){return X6(t,pv)}fn.propTypes={};fn.filterProps=pv;function K6(t=8,e=gv({spacing:t})){if(t.mui)return t;const n=(...r)=>(r.length===0?[1]:r).map(o=>{const s=e(o);return typeof s=="number"?`${s}px`:s}).join(" ");return n.mui=!0,n}function Bg(...t){const e=t.reduce((r,i)=>(i.filterProps.forEach(o=>{r[o]=i}),r),{}),n=r=>Object.keys(r).reduce((i,o)=>e[o]?Rf(i,e[o](r)):i,{});return n.propTypes={},n.filterProps=t.reduce((r,i)=>r.concat(i.filterProps),[]),n}function vi(t){return typeof t!="number"?t:`${t}px solid`}function Si(t,e){return Sn({prop:t,themeKey:"borders",transform:e})}const R7=Si("border",vi),I7=Si("borderTop",vi),F7=Si("borderRight",vi),D7=Si("borderBottom",vi),j7=Si("borderLeft",vi),B7=Si("borderColor"),z7=Si("borderTopColor"),$7=Si("borderRightColor"),U7=Si("borderBottomColor"),q7=Si("borderLeftColor"),W7=Si("outline",vi),V7=Si("outlineColor"),zg=t=>{if(t.borderRadius!==void 0&&t.borderRadius!==null){const e=Th(t.theme,"shape.borderRadius",4),n=r=>({borderRadius:Oh(e,r)});return fs(t,t.borderRadius,n)}return null};zg.propTypes={};zg.filterProps=["borderRadius"];Bg(R7,I7,F7,D7,j7,B7,z7,$7,U7,q7,zg,W7,V7);const $g=t=>{if(t.gap!==void 0&&t.gap!==null){const e=Th(t.theme,"spacing",8),n=r=>({gap:Oh(e,r)});return fs(t,t.gap,n)}return null};$g.propTypes={};$g.filterProps=["gap"];const Ug=t=>{if(t.columnGap!==void 0&&t.columnGap!==null){const e=Th(t.theme,"spacing",8),n=r=>({columnGap:Oh(e,r)});return fs(t,t.columnGap,n)}return null};Ug.propTypes={};Ug.filterProps=["columnGap"];const qg=t=>{if(t.rowGap!==void 0&&t.rowGap!==null){const e=Th(t.theme,"spacing",8),n=r=>({rowGap:Oh(e,r)});return fs(t,t.rowGap,n)}return null};qg.propTypes={};qg.filterProps=["rowGap"];const H7=Sn({prop:"gridColumn"}),G7=Sn({prop:"gridRow"}),Y7=Sn({prop:"gridAutoFlow"}),X7=Sn({prop:"gridAutoColumns"}),K7=Sn({prop:"gridAutoRows"}),J7=Sn({prop:"gridTemplateColumns"}),Q7=Sn({prop:"gridTemplateRows"}),Z7=Sn({prop:"gridTemplateAreas"}),tM=Sn({prop:"gridArea"});Bg($g,Ug,qg,H7,G7,Y7,X7,K7,J7,Q7,Z7,tM);function Rc(t,e){return e==="grey"?e:t}const eM=Sn({prop:"color",themeKey:"palette",transform:Rc}),nM=Sn({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:Rc}),rM=Sn({prop:"backgroundColor",themeKey:"palette",transform:Rc});Bg(eM,nM,rM);function Xr(t){return t<=1&&t!==0?`${t*100}%`:t}const iM=Sn({prop:"width",transform:Xr}),mv=t=>{if(t.maxWidth!==void 0&&t.maxWidth!==null){const e=n=>{var i,o,s,a,l;const r=((s=(o=(i=t.theme)==null?void 0:i.breakpoints)==null?void 0:o.values)==null?void 0:s[n])||Dg[n];return r?((l=(a=t.theme)==null?void 0:a.breakpoints)==null?void 0:l.unit)!=="px"?{maxWidth:`${r}${t.theme.breakpoints.unit}`}:{maxWidth:r}:{maxWidth:Xr(n)}};return fs(t,t.maxWidth,e)}return null};mv.filterProps=["maxWidth"];const oM=Sn({prop:"minWidth",transform:Xr}),sM=Sn({prop:"height",transform:Xr}),aM=Sn({prop:"maxHeight",transform:Xr}),lM=Sn({prop:"minHeight",transform:Xr});Sn({prop:"size",cssProperty:"width",transform:Xr});Sn({prop:"size",cssProperty:"height",transform:Xr});const cM=Sn({prop:"boxSizing"});Bg(iM,mv,oM,sM,aM,lM,cM);const Rh={border:{themeKey:"borders",transform:vi},borderTop:{themeKey:"borders",transform:vi},borderRight:{themeKey:"borders",transform:vi},borderBottom:{themeKey:"borders",transform:vi},borderLeft:{themeKey:"borders",transform:vi},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:vi},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:zg},color:{themeKey:"palette",transform:Rc},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:Rc},backgroundColor:{themeKey:"palette",transform:Rc},p:{style:fn},pt:{style:fn},pr:{style:fn},pb:{style:fn},pl:{style:fn},px:{style:fn},py:{style:fn},padding:{style:fn},paddingTop:{style:fn},paddingRight:{style:fn},paddingBottom:{style:fn},paddingLeft:{style:fn},paddingX:{style:fn},paddingY:{style:fn},paddingInline:{style:fn},paddingInlineStart:{style:fn},paddingInlineEnd:{style:fn},paddingBlock:{style:fn},paddingBlockStart:{style:fn},paddingBlockEnd:{style:fn},m:{style:un},mt:{style:un},mr:{style:un},mb:{style:un},ml:{style:un},mx:{style:un},my:{style:un},margin:{style:un},marginTop:{style:un},marginRight:{style:un},marginBottom:{style:un},marginLeft:{style:un},marginX:{style:un},marginY:{style:un},marginInline:{style:un},marginInlineStart:{style:un},marginInlineEnd:{style:un},marginBlock:{style:un},marginBlockStart:{style:un},marginBlockEnd:{style:un},displayPrint:{cssProperty:!1,transform:t=>({"@media print":{display:t}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:$g},rowGap:{style:qg},columnGap:{style:Ug},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:Xr},maxWidth:{style:mv},minWidth:{transform:Xr},height:{transform:Xr},maxHeight:{transform:Xr},minHeight:{transform:Xr},boxSizing:{},font:{themeKey:"font"},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}};function uM(...t){const e=t.reduce((r,i)=>r.concat(Object.keys(i)),[]),n=new Set(e);return t.every(r=>n.size===Object.keys(r).length)}function fM(t,e){return typeof t=="function"?t(e):t}function hM(){function t(n,r,i,o){const s={[n]:r,theme:i},a=o[n];if(!a)return{[n]:r};const{cssProperty:l=n,themeKey:c,transform:u,style:h}=a;if(r==null)return null;if(c==="typography"&&r==="inherit")return{[n]:r};const p=jg(i,c)||{};return h?h(s):fs(s,r,y=>{let b=R0(p,u,y);return y===b&&typeof y=="string"&&(b=R0(p,u,`${n}${y==="default"?"":nn(y)}`,y)),l===!1?b:{[l]:b}})}function e(n){const{sx:r,theme:i={}}=n||{};if(!r)return null;const o=i.unstable_sxConfig??Rh;function s(a){let l=a;if(typeof a=="function")l=a(i);else if(typeof a!="object")return a;if(!l)return null;const c=C7(i.breakpoints),u=Object.keys(c);let h=c;return Object.keys(l).forEach(p=>{const d=fM(l[p],i);if(d!=null)if(typeof d=="object")if(o[p])h=Rf(h,t(p,d,i,o));else{const y=fs({theme:i},d,b=>({[p]:b}));uM(y,d)?h[p]=e({sx:d,theme:i}):h=Rf(h,y)}else h=Rf(h,t(p,d,i,o))}),x7(i,L7(u,h))}return Array.isArray(r)?r.map(s):s(r)}return e}const Kc=hM();Kc.filterProps=["sx"];function dM(t,e){var r;const n=this;if(n.vars){if(!((r=n.colorSchemes)!=null&&r[t])||typeof n.getColorSchemeSelector!="function")return{};let i=n.getColorSchemeSelector(t);return i==="&"?e:((i.includes("data-")||i.includes("."))&&(i=`*:where(${i.replace(/\s*&$/,"")}) &`),{[i]:e})}return n.palette.mode===t?e:{}}function Ih(t={},...e){const{breakpoints:n={},palette:r={},spacing:i,shape:o={},...s}=t,a=b7(n),l=K6(i);let c=ti({breakpoints:a,direction:"ltr",components:{},palette:{mode:"light",...r},spacing:l,shape:{...k7,...o}},s);return c=S7(c),c.applyStyles=dM,c=e.reduce((u,h)=>ti(u,h),c),c.unstable_sxConfig={...Rh,...s==null?void 0:s.unstable_sxConfig},c.unstable_sx=function(h){return Kc({sx:h,theme:this})},c}function pM(t){return Object.keys(t).length===0}function gM(t=null){const e=H.useContext(W6);return!e||pM(e)?t:e}const mM=Ih();function yv(t=mM){return gM(t)}const yM=t=>{var r;const e={systemProps:{},otherProps:{}},n=((r=t==null?void 0:t.theme)==null?void 0:r.unstable_sxConfig)??Rh;return Object.keys(t).forEach(i=>{n[i]?e.systemProps[i]=t[i]:e.otherProps[i]=t[i]}),e};function J6(t){const{sx:e,...n}=t,{systemProps:r,otherProps:i}=yM(n);let o;return Array.isArray(e)?o=[r,...e]:typeof e=="function"?o=(...s)=>{const a=e(...s);return wo(a)?{...r,...a}:r}:o={...r,...e},{...i,sx:o}}const yw=t=>t,vM=()=>{let t=yw;return{configure(e){t=e},generate(e){return t(e)},reset(){t=yw}}},bM=vM();function Q6(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t)){var i=t.length;for(e=0;e{r[i]=ma(t,i,n)}),r}function Z6(t){const{variants:e,...n}=t,r={variants:e,style:pw(n),isProcessed:!0};return r.style===n||e&&e.forEach(i=>{typeof i.style!="function"&&(i.style=pw(i.style))}),r}const wM=Ih();function Pm(t){return t!=="ownerState"&&t!=="theme"&&t!=="sx"&&t!=="as"}function _M(t){return t?(e,n)=>n[t]:null}function SM(t,e,n){t.theme=AM(t.theme)?n:t.theme[e]||t.theme}function Up(t,e){const n=typeof e=="function"?e(t):e;if(Array.isArray(n))return n.flatMap(r=>Up(t,r));if(Array.isArray(n==null?void 0:n.variants)){let r;if(n.isProcessed)r=n.style;else{const{variants:i,...o}=n;r=o}return tk(t,n.variants,[r])}return n!=null&&n.isProcessed?n.style:n}function tk(t,e,n=[]){var i;let r;t:for(let o=0;o{y7(a,P=>P.filter(z=>z!==Kc));const{name:c,slot:u,skipVariantsResolver:h,skipSx:p,overridesResolver:d=_M(LM(u)),...y}=l,b=h!==void 0?h:u&&u!=="Root"&&u!=="root"||!1,_=p||!1;let m=Pm;u==="Root"||u==="root"?m=r:u?m=i:CM(a)&&(m=void 0);const w=m7(a,{shouldForwardProp:m,label:kM(),...y}),S=P=>{if(typeof P=="function"&&P.__emotion_real!==P)return function(I){return Up(I,P)};if(wo(P)){const z=Z6(P);return z.variants?function(R){return Up(R,z)}:z.style}return P},A=(...P)=>{const z=[],I=P.map(S),R=[];if(z.push(o),c&&d&&R.push(function(T){var rt,lt;const V=(lt=(rt=T.theme.components)==null?void 0:rt[c])==null?void 0:lt.styleOverrides;if(!V)return null;const ot={};for(const Y in V)ot[Y]=Up(T,V[Y]);return d(T,ot)}),c&&!b&&R.push(function(T){var ot,rt;const W=T.theme,V=(rt=(ot=W==null?void 0:W.components)==null?void 0:ot[c])==null?void 0:rt.variants;return V?tk(T,V):null}),_||R.push(Kc),Array.isArray(I[0])){const L=I.shift(),T=new Array(z.length).fill(""),W=new Array(R.length).fill("");let V;V=[...T,...L,...W],V.raw=[...T,...L.raw,...W],z.unshift(V)}const X=[...z,...I,...R],C=w(...X);return a.muiName&&(C.muiName=a.muiName),C};return w.withConfig&&(A.withConfig=w.withConfig),A}}function kM(t,e){return void 0}function AM(t){for(const e in t)return!1;return!0}function CM(t){return typeof t=="string"&&t.charCodeAt(0)>96}function LM(t){return t&&t.charAt(0).toLowerCase()+t.slice(1)}const nk=ek();function uh(t,e){const n={...e};for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const i=r;if(i==="components"||i==="slots")n[i]={...t[i],...n[i]};else if(i==="componentsProps"||i==="slotProps"){const o=t[i],s=e[i];if(!s)n[i]=o||{};else if(!o)n[i]=s;else{n[i]={...s};for(const a in o)if(Object.prototype.hasOwnProperty.call(o,a)){const l=a;n[i][l]=uh(o[l],s[l])}}}else n[i]===void 0&&(n[i]=t[i])}return n}function NM(t){const{theme:e,name:n,props:r}=t;return!e||!e.components||!e.components[n]||!e.components[n].defaultProps?r:uh(e.components[n].defaultProps,r)}function rk({props:t,name:e,defaultTheme:n,themeId:r}){let i=yv(n);return r&&(i=i[r]||i),NM({theme:i,name:e,props:t})}const PM=typeof window<"u"?H.useLayoutEffect:H.useEffect;function EM(t,e=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(e,Math.min(t,n))}function vv(t,e=0,n=1){return EM(t,e,n)}function MM(t){t=t.slice(1);const e=new RegExp(`.{1,${t.length>=6?2:1}}`,"g");let n=t.match(e);return n&&n[0].length===1&&(n=n.map(r=>r+r)),n?`rgb${n.length===4?"a":""}(${n.map((r,i)=>i<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3).join(", ")})`:""}function la(t){if(t.type)return t;if(t.charAt(0)==="#")return la(MM(t));const e=t.indexOf("("),n=t.substring(0,e);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(fl(9,t));let r=t.substring(e+1,t.length-1),i;if(n==="color"){if(r=r.split(" "),i=r.shift(),r.length===4&&r[3].charAt(0)==="/"&&(r[3]=r[3].slice(1)),!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(i))throw new Error(fl(10,i))}else r=r.split(",");return r=r.map(o=>parseFloat(o)),{type:n,values:r,colorSpace:i}}const TM=t=>{const e=la(t);return e.values.slice(0,3).map((n,r)=>e.type.includes("hsl")&&r!==0?`${n}%`:n).join(" ")},df=(t,e)=>{try{return TM(t)}catch{return t}};function Wg(t){const{type:e,colorSpace:n}=t;let{values:r}=t;return e.includes("rgb")?r=r.map((i,o)=>o<3?parseInt(i,10):i):e.includes("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),e.includes("color")?r=`${n} ${r.join(" ")}`:r=`${r.join(", ")}`,`${e}(${r})`}function ik(t){t=la(t);const{values:e}=t,n=e[0],r=e[1]/100,i=e[2]/100,o=r*Math.min(i,1-i),s=(c,u=(c+n/30)%12)=>i-o*Math.max(Math.min(u-3,9-u,1),-1);let a="rgb";const l=[Math.round(s(0)*255),Math.round(s(8)*255),Math.round(s(4)*255)];return t.type==="hsla"&&(a+="a",l.push(e[3])),Wg({type:a,values:l})}function u5(t){t=la(t);let e=t.type==="hsl"||t.type==="hsla"?la(ik(t)).values:t.values;return e=e.map(n=>(t.type!=="color"&&(n/=255),n<=.03928?n/12.92:((n+.055)/1.055)**2.4)),Number((.2126*e[0]+.7152*e[1]+.0722*e[2]).toFixed(3))}function OM(t,e){const n=u5(t),r=u5(e);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function $s(t,e){return t=la(t),e=vv(e),(t.type==="rgb"||t.type==="hsl")&&(t.type+="a"),t.type==="color"?t.values[3]=`/${e}`:t.values[3]=e,Wg(t)}function tp(t,e,n){try{return $s(t,e)}catch{return t}}function bv(t,e){if(t=la(t),e=vv(e),t.type.includes("hsl"))t.values[2]*=1-e;else if(t.type.includes("rgb")||t.type.includes("color"))for(let n=0;n<3;n+=1)t.values[n]*=1-e;return Wg(t)}function Fe(t,e,n){try{return bv(t,e)}catch{return t}}function xv(t,e){if(t=la(t),e=vv(e),t.type.includes("hsl"))t.values[2]+=(100-t.values[2])*e;else if(t.type.includes("rgb"))for(let n=0;n<3;n+=1)t.values[n]+=(255-t.values[n])*e;else if(t.type.includes("color"))for(let n=0;n<3;n+=1)t.values[n]+=(1-t.values[n])*e;return Wg(t)}function De(t,e,n){try{return xv(t,e)}catch{return t}}function RM(t,e=.15){return u5(t)>.5?bv(t,e):xv(t,e)}function ep(t,e,n){try{return RM(t,e)}catch{return t}}function IM(t,e){var n,r,i;return H.isValidElement(t)&&e.indexOf(t.type.muiName??((i=(r=(n=t.type)==null?void 0:n._payload)==null?void 0:r.value)==null?void 0:i.muiName))!==-1}function FM(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function np(t){const e=H.useRef(t);return PM(()=>{e.current=t}),H.useRef((...n)=>(0,e.current)(...n)).current}function vw(...t){return H.useMemo(()=>t.every(e=>e==null)?null:e=>{t.forEach(n=>{FM(n,e)})},t)}const bw={};function ok(t,e){const n=H.useRef(bw);return n.current===bw&&(n.current=t(e)),n}const DM=[];function jM(t){H.useEffect(t,DM)}class wv{constructor(){Mt(this,"currentId",null);Mt(this,"clear",()=>{this.currentId!==null&&(clearTimeout(this.currentId),this.currentId=null)});Mt(this,"disposeEffect",()=>this.clear)}static create(){return new wv}start(e,n){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,n()},e)}}function BM(){const t=ok(wv.create).current;return jM(t.disposeEffect),t}function xw(t){try{return t.matches(":focus-visible")}catch{}return!1}function vl(t,e,n=void 0){const r={};for(const i in t){const o=t[i];let s="",a=!0;for(let l=0;l`var(--${t?`${t}-`:""}${r}${e(...i)})`}const _w=(t,e,n,r=[])=>{let i=t;e.forEach((o,s)=>{s===e.length-1?Array.isArray(i)?i[Number(o)]=n:i&&typeof i=="object"&&(i[o]=n):i&&typeof i=="object"&&(i[o]||(i[o]=r.includes(o)?[]:{}),i=i[o])})},VM=(t,e,n)=>{function r(i,o=[],s=[]){Object.entries(i).forEach(([a,l])=>{(!n||n&&!n([...o,a]))&&l!=null&&(typeof l=="object"&&Object.keys(l).length>0?r(l,[...o,a],Array.isArray(l)?[...s,a]:s):e([...o,a],l,s))})}r(t)},HM=(t,e)=>typeof e=="number"?["lineHeight","fontWeight","opacity","zIndex"].some(r=>t.includes(r))||t[t.length-1].toLowerCase().includes("opacity")?e:`${e}px`:e;function Em(t,e){const{prefix:n,shouldSkipGeneratingVar:r}=e||{},i={},o={},s={};return VM(t,(a,l,c)=>{if((typeof l=="string"||typeof l=="number")&&(!r||!r(a,l))){const u=`--${n?`${n}-`:""}${a.join("-")}`,h=HM(a,l);Object.assign(i,{[u]:h}),_w(o,a,`var(${u})`,c),_w(s,a,`var(${u}, ${h})`,c)}},a=>a[0]==="vars"),{css:i,vars:o,varsWithDefaults:s}}function GM(t,e={}){const{getSelector:n=_,disableCssColorScheme:r,colorSchemeSelector:i}=e,{colorSchemes:o={},components:s,defaultColorScheme:a="light",...l}=t,{vars:c,css:u,varsWithDefaults:h}=Em(l,e);let p=h;const d={},{[a]:y,...b}=o;if(Object.entries(b||{}).forEach(([S,A])=>{const{vars:P,css:z,varsWithDefaults:I}=Em(A,e);p=ti(p,I),d[S]={css:z,vars:P}}),y){const{css:S,vars:A,varsWithDefaults:P}=Em(y,e);p=ti(p,P),d[a]={css:S,vars:A}}function _(S,A){var z,I;let P=i;if(i==="class"&&(P=".%s"),i==="data"&&(P="[data-%s]"),i!=null&&i.startsWith("data-")&&!i.includes("%s")&&(P=`[${i}="%s"]`),S){if(P==="media")return t.defaultColorScheme===S?":root":{[`@media (prefers-color-scheme: ${((I=(z=o[S])==null?void 0:z.palette)==null?void 0:I.mode)||S})`]:{":root":A}};if(P)return t.defaultColorScheme===S?`:root, ${P.replace("%s",String(S))}`:P.replace("%s",String(S))}return":root"}return{vars:p,generateThemeVars:()=>{let S={...c};return Object.entries(d).forEach(([,{vars:A}])=>{S=ti(S,A)}),S},generateStyleSheets:()=>{var R,X;const S=[],A=t.defaultColorScheme||"light";function P(C,L){Object.keys(L).length&&S.push(typeof C=="string"?{[C]:{...L}}:C)}P(n(void 0,{...u}),u);const{[A]:z,...I}=d;if(z){const{css:C}=z,L=(X=(R=o[A])==null?void 0:R.palette)==null?void 0:X.mode,T=!r&&L?{colorScheme:L,...C}:{...C};P(n(A,{...T}),T)}return Object.entries(I).forEach(([C,{css:L}])=>{var V,ot;const T=(ot=(V=o[C])==null?void 0:V.palette)==null?void 0:ot.mode,W=!r&&T?{colorScheme:T,...L}:{...L};P(n(C,{...W}),W)}),S}}}function YM(t){return function(n){return t==="media"?`@media (prefers-color-scheme: ${n})`:t?t.startsWith("data-")&&!t.includes("%s")?`[${t}="${n}"] &`:t==="class"?`.${n} &`:t==="data"?`[data-${n}] &`:`${t.replace("%s",n)} &`:"&"}}const XM=Ih(),KM=nk("div",{name:"MuiContainer",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[`maxWidth${nn(String(n.maxWidth))}`],n.fixed&&e.fixed,n.disableGutters&&e.disableGutters]}}),JM=t=>rk({props:t,name:"MuiContainer",defaultTheme:XM}),QM=(t,e)=>{const n=l=>ma(e,l),{classes:r,fixed:i,disableGutters:o,maxWidth:s}=t,a={root:["root",s&&`maxWidth${nn(String(s))}`,i&&"fixed",o&&"disableGutters"]};return vl(a,n,r)};function ZM(t={}){const{createStyledComponent:e=KM,useThemeProps:n=JM,componentName:r="MuiContainer"}=t,i=e(({theme:s,ownerState:a})=>({width:"100%",marginLeft:"auto",boxSizing:"border-box",marginRight:"auto",...!a.disableGutters&&{paddingLeft:s.spacing(2),paddingRight:s.spacing(2),[s.breakpoints.up("sm")]:{paddingLeft:s.spacing(3),paddingRight:s.spacing(3)}}}),({theme:s,ownerState:a})=>a.fixed&&Object.keys(s.breakpoints.values).reduce((l,c)=>{const u=c,h=s.breakpoints.values[u];return h!==0&&(l[s.breakpoints.up(u)]={maxWidth:`${h}${s.breakpoints.unit}`}),l},{}),({theme:s,ownerState:a})=>({...a.maxWidth==="xs"&&{[s.breakpoints.up("xs")]:{maxWidth:Math.max(s.breakpoints.values.xs,444)}},...a.maxWidth&&a.maxWidth!=="xs"&&{[s.breakpoints.up(a.maxWidth)]:{maxWidth:`${s.breakpoints.values[a.maxWidth]}${s.breakpoints.unit}`}}}));return H.forwardRef(function(a,l){const c=n(a),{className:u,component:h="div",disableGutters:p=!1,fixed:d=!1,maxWidth:y="lg",classes:b,..._}=c,m={...c,component:h,disableGutters:p,fixed:d,maxWidth:y},w=QM(m,r);return B.jsx(i,{as:h,ownerState:m,className:Kn(w.root,u),ref:l,..._})})}const tT=(t,e)=>t.filter(n=>e.includes(n)),au=(t,e,n)=>{const r=t.keys[0];Array.isArray(e)?e.forEach((i,o)=>{n((s,a)=>{o<=t.keys.length-1&&(o===0?Object.assign(s,a):s[t.up(t.keys[o])]=a)},i)}):e&&typeof e=="object"?(Object.keys(e).length>t.keys.length?t.keys:tT(t.keys,Object.keys(e))).forEach(o=>{if(t.keys.includes(o)){const s=e[o];s!==void 0&&n((a,l)=>{r===o?Object.assign(a,l):a[t.up(o)]=l},s)}}):(typeof e=="number"||typeof e=="string")&&n((i,o)=>{Object.assign(i,o)},e)};function I0(t){return`--Grid-${t}Spacing`}function Vg(t){return`--Grid-parent-${t}Spacing`}const Sw="--Grid-columns",Ic="--Grid-parent-columns",eT=({theme:t,ownerState:e})=>{const n={};return au(t.breakpoints,e.size,(r,i)=>{let o={};i==="grow"&&(o={flexBasis:0,flexGrow:1,maxWidth:"100%"}),i==="auto"&&(o={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"}),typeof i=="number"&&(o={flexGrow:0,flexBasis:"auto",width:`calc(100% * ${i} / var(${Ic}) - (var(${Ic}) - ${i}) * (var(${Vg("column")}) / var(${Ic})))`}),r(n,o)}),n},nT=({theme:t,ownerState:e})=>{const n={};return au(t.breakpoints,e.offset,(r,i)=>{let o={};i==="auto"&&(o={marginLeft:"auto"}),typeof i=="number"&&(o={marginLeft:i===0?"0px":`calc(100% * ${i} / var(${Ic}) + var(${Vg("column")}) * ${i} / var(${Ic}))`}),r(n,o)}),n},rT=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={[Sw]:12};return au(t.breakpoints,e.columns,(r,i)=>{const o=i??12;r(n,{[Sw]:o,"> *":{[Ic]:o}})}),n},iT=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={};return au(t.breakpoints,e.rowSpacing,(r,i)=>{var s;const o=typeof i=="string"?i:(s=t.spacing)==null?void 0:s.call(t,i);r(n,{[I0("row")]:o,"> *":{[Vg("row")]:o}})}),n},oT=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={};return au(t.breakpoints,e.columnSpacing,(r,i)=>{var s;const o=typeof i=="string"?i:(s=t.spacing)==null?void 0:s.call(t,i);r(n,{[I0("column")]:o,"> *":{[Vg("column")]:o}})}),n},sT=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={};return au(t.breakpoints,e.direction,(r,i)=>{r(n,{flexDirection:i})}),n},aT=({ownerState:t})=>({minWidth:0,boxSizing:"border-box",...t.container&&{display:"flex",flexWrap:"wrap",...t.wrap&&t.wrap!=="wrap"&&{flexWrap:t.wrap},gap:`var(${I0("row")}) var(${I0("column")})`}}),lT=t=>{const e=[];return Object.entries(t).forEach(([n,r])=>{r!==!1&&r!==void 0&&e.push(`grid-${n}-${String(r)}`)}),e},cT=(t,e="xs")=>{function n(r){return r===void 0?!1:typeof r=="string"&&!Number.isNaN(Number(r))||typeof r=="number"&&r>0}if(n(t))return[`spacing-${e}-${String(t)}`];if(typeof t=="object"&&!Array.isArray(t)){const r=[];return Object.entries(t).forEach(([i,o])=>{n(o)&&r.push(`spacing-${i}-${String(o)}`)}),r}return[]},uT=t=>t===void 0?[]:typeof t=="object"?Object.entries(t).map(([e,n])=>`direction-${e}-${n}`):[`direction-xs-${String(t)}`],fT=Ih(),hT=nk("div",{name:"MuiGrid",slot:"Root",overridesResolver:(t,e)=>e.root});function dT(t){return rk({props:t,name:"MuiGrid",defaultTheme:fT})}function pT(t={}){const{createStyledComponent:e=hT,useThemeProps:n=dT,componentName:r="MuiGrid"}=t,i=(l,c)=>{const{container:u,direction:h,spacing:p,wrap:d,size:y}=l,b={root:["root",u&&"container",d!=="wrap"&&`wrap-xs-${String(d)}`,...uT(h),...lT(y),...u?cT(p,c.breakpoints.keys[0]):[]]};return vl(b,_=>ma(r,_),{})};function o(l,c,u=()=>!0){const h={};return l===null||(Array.isArray(l)?l.forEach((p,d)=>{p!==null&&u(p)&&c.keys[d]&&(h[c.keys[d]]=p)}):typeof l=="object"?Object.keys(l).forEach(p=>{const d=l[p];d!=null&&u(d)&&(h[p]=d)}):h[c.keys[0]]=l),h}const s=e(rT,oT,iT,eT,sT,aT,nT),a=H.forwardRef(function(c,u){const h=yv(),p=n(c),d=J6(p),{className:y,children:b,columns:_=12,container:m=!1,component:w="div",direction:S="row",wrap:A="wrap",size:P={},offset:z={},spacing:I=0,rowSpacing:R=I,columnSpacing:X=I,unstable_level:C=0,...L}=d,T=o(P,h.breakpoints,at=>at!==!1),W=o(z,h.breakpoints),V=c.columns??(C?void 0:_),ot=c.spacing??(C?void 0:I),rt=c.rowSpacing??c.spacing??(C?void 0:R),lt=c.columnSpacing??c.spacing??(C?void 0:X),Y={...d,level:C,columns:V,container:m,direction:S,wrap:A,spacing:ot,rowSpacing:rt,columnSpacing:lt,size:T,offset:W},et=i(Y,h);return B.jsx(s,{ref:u,as:w,ownerState:Y,className:Kn(et.root,y),...L,children:H.Children.map(b,at=>{var xt;return H.isValidElement(at)&&IM(at,["Grid"])&&m&&at.props.container?H.cloneElement(at,{unstable_level:((xt=at.props)==null?void 0:xt.unstable_level)??C+1}):at})})});return a.muiName="Grid",a}function sk(){return{text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:sh.white,default:sh.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}}}const gT=sk();function ak(){return{text:{primary:sh.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:sh.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}}}const kw=ak();function Aw(t,e,n,r){const i=r.light||r,o=r.dark||r*1.5;t[e]||(t.hasOwnProperty(n)?t[e]=t[n]:e==="light"?t.light=xv(t.main,i):e==="dark"&&(t.dark=bv(t.main,o)))}function mT(t="light"){return t==="dark"?{main:Zl[200],light:Zl[50],dark:Zl[400]}:{main:Zl[700],light:Zl[400],dark:Zl[800]}}function yT(t="light"){return t==="dark"?{main:Ql[200],light:Ql[50],dark:Ql[400]}:{main:Ql[500],light:Ql[300],dark:Ql[700]}}function vT(t="light"){return t==="dark"?{main:Jl[500],light:Jl[300],dark:Jl[700]}:{main:Jl[700],light:Jl[400],dark:Jl[800]}}function bT(t="light"){return t==="dark"?{main:tc[400],light:tc[300],dark:tc[700]}:{main:tc[700],light:tc[500],dark:tc[900]}}function xT(t="light"){return t==="dark"?{main:ec[400],light:ec[300],dark:ec[700]}:{main:ec[800],light:ec[500],dark:ec[900]}}function wT(t="light"){return t==="dark"?{main:Xu[400],light:Xu[300],dark:Xu[700]}:{main:"#ed6c02",light:Xu[500],dark:Xu[900]}}function _v(t){const{mode:e="light",contrastThreshold:n=3,tonalOffset:r=.2,...i}=t,o=t.primary||mT(e),s=t.secondary||yT(e),a=t.error||vT(e),l=t.info||bT(e),c=t.success||xT(e),u=t.warning||wT(e);function h(b){return OM(b,kw.text.primary)>=n?kw.text.primary:gT.text.primary}const p=({color:b,name:_,mainShade:m=500,lightShade:w=300,darkShade:S=700})=>{if(b={...b},!b.main&&b[m]&&(b.main=b[m]),!b.hasOwnProperty("main"))throw new Error(fl(11,_?` (${_})`:"",m));if(typeof b.main!="string")throw new Error(fl(12,_?` (${_})`:"",JSON.stringify(b.main)));return Aw(b,"light",w,r),Aw(b,"dark",S,r),b.contrastText||(b.contrastText=h(b.main)),b};let d;return e==="light"?d=sk():e==="dark"&&(d=ak()),ti({common:{...sh},mode:e,primary:p({color:o,name:"primary"}),secondary:p({color:s,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:p({color:a,name:"error"}),warning:p({color:u,name:"warning"}),info:p({color:l,name:"info"}),success:p({color:c,name:"success"}),grey:rE,contrastThreshold:n,getContrastText:h,augmentColor:p,tonalOffset:r,...d},i)}function _T(t){const e={};return Object.entries(t).forEach(r=>{const[i,o]=r;typeof o=="object"&&(e[i]=`${o.fontStyle?`${o.fontStyle} `:""}${o.fontVariant?`${o.fontVariant} `:""}${o.fontWeight?`${o.fontWeight} `:""}${o.fontStretch?`${o.fontStretch} `:""}${o.fontSize||""}${o.lineHeight?`/${o.lineHeight} `:""}${o.fontFamily||""}`)}),e}function ST(t,e){return{toolbar:{minHeight:56,[t.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[t.up("sm")]:{minHeight:64}},...e}}function kT(t){return Math.round(t*1e5)/1e5}const Cw={textTransform:"uppercase"},Lw='"Roboto", "Helvetica", "Arial", sans-serif';function AT(t,e){const{fontFamily:n=Lw,fontSize:r=14,fontWeightLight:i=300,fontWeightRegular:o=400,fontWeightMedium:s=500,fontWeightBold:a=700,htmlFontSize:l=16,allVariants:c,pxToRem:u,...h}=typeof e=="function"?e(t):e,p=r/14,d=u||(_=>`${_/l*p}rem`),y=(_,m,w,S,A)=>({fontFamily:n,fontWeight:_,fontSize:d(m),lineHeight:w,...n===Lw?{letterSpacing:`${kT(S/m)}em`}:{},...A,...c}),b={h1:y(i,96,1.167,-1.5),h2:y(i,60,1.2,-.5),h3:y(o,48,1.167,0),h4:y(o,34,1.235,.25),h5:y(o,24,1.334,0),h6:y(s,20,1.6,.15),subtitle1:y(o,16,1.75,.15),subtitle2:y(s,14,1.57,.1),body1:y(o,16,1.5,.15),body2:y(o,14,1.43,.15),button:y(s,14,1.75,.4,Cw),caption:y(o,12,1.66,.4),overline:y(o,12,2.66,1,Cw),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return ti({htmlFontSize:l,pxToRem:d,fontFamily:n,fontSize:r,fontWeightLight:i,fontWeightRegular:o,fontWeightMedium:s,fontWeightBold:a,...b},h,{clone:!1})}const CT=.2,LT=.14,NT=.12;function Ke(...t){return[`${t[0]}px ${t[1]}px ${t[2]}px ${t[3]}px rgba(0,0,0,${CT})`,`${t[4]}px ${t[5]}px ${t[6]}px ${t[7]}px rgba(0,0,0,${LT})`,`${t[8]}px ${t[9]}px ${t[10]}px ${t[11]}px rgba(0,0,0,${NT})`].join(",")}const PT=["none",Ke(0,2,1,-1,0,1,1,0,0,1,3,0),Ke(0,3,1,-2,0,2,2,0,0,1,5,0),Ke(0,3,3,-2,0,3,4,0,0,1,8,0),Ke(0,2,4,-1,0,4,5,0,0,1,10,0),Ke(0,3,5,-1,0,5,8,0,0,1,14,0),Ke(0,3,5,-1,0,6,10,0,0,1,18,0),Ke(0,4,5,-2,0,7,10,1,0,2,16,1),Ke(0,5,5,-3,0,8,10,1,0,3,14,2),Ke(0,5,6,-3,0,9,12,1,0,3,16,2),Ke(0,6,6,-3,0,10,14,1,0,4,18,3),Ke(0,6,7,-4,0,11,15,1,0,4,20,3),Ke(0,7,8,-4,0,12,17,2,0,5,22,4),Ke(0,7,8,-4,0,13,19,2,0,5,24,4),Ke(0,7,9,-4,0,14,21,2,0,5,26,4),Ke(0,8,9,-5,0,15,22,2,0,6,28,5),Ke(0,8,10,-5,0,16,24,2,0,6,30,5),Ke(0,8,11,-5,0,17,26,2,0,6,32,5),Ke(0,9,11,-5,0,18,28,2,0,7,34,6),Ke(0,9,12,-6,0,19,29,2,0,7,36,6),Ke(0,10,13,-6,0,20,31,3,0,8,38,7),Ke(0,10,13,-6,0,21,33,3,0,8,40,7),Ke(0,10,14,-6,0,22,35,3,0,8,42,7),Ke(0,11,14,-7,0,23,36,3,0,9,44,8),Ke(0,11,15,-7,0,24,38,3,0,9,46,8)],ET={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},MT={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function Nw(t){return`${Math.round(t)}ms`}function TT(t){if(!t)return 0;const e=t/36;return Math.min(Math.round((4+15*e**.25+e/5)*10),3e3)}function OT(t){const e={...ET,...t.easing},n={...MT,...t.duration};return{getAutoHeightDuration:TT,create:(i=["all"],o={})=>{const{duration:s=n.standard,easing:a=e.easeInOut,delay:l=0,...c}=o;return(Array.isArray(i)?i:[i]).map(u=>`${u} ${typeof s=="string"?s:Nw(s)} ${a} ${typeof l=="string"?l:Nw(l)}`).join(",")},...t,easing:e,duration:n}}const RT={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function IT(t){return wo(t)||typeof t>"u"||typeof t=="string"||typeof t=="boolean"||typeof t=="number"||Array.isArray(t)}function lk(t={}){const e={...t};function n(r){const i=Object.entries(r);for(let o=0;oti(d,y),p),p.unstable_sxConfig={...Rh,...c==null?void 0:c.unstable_sxConfig},p.unstable_sx=function(y){return Kc({sx:y,theme:this})},p.toRuntimeSource=lk,p}function h5(t){let e;return t<1?e=5.11916*t**2:e=4.5*Math.log(t+1)+2,Math.round(e*10)/1e3}const FT=[...Array(25)].map((t,e)=>{if(e===0)return"none";const n=h5(e);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function ck(t){return{inputPlaceholder:t==="dark"?.5:.42,inputUnderline:t==="dark"?.7:.42,switchTrackDisabled:t==="dark"?.2:.12,switchTrack:t==="dark"?.3:.38}}function uk(t){return t==="dark"?FT:[]}function DT(t){const{palette:e={mode:"light"},opacity:n,overlays:r,...i}=t,o=_v(e);return{palette:o,opacity:{...ck(o.mode),...n},overlays:r||uk(o.mode),...i}}function jT(t){var e;return!!t[0].match(/(cssVarPrefix|colorSchemeSelector|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!t[0].match(/sxConfig$/)||t[0]==="palette"&&!!((e=t[1])!=null&&e.match(/(mode|contrastThreshold|tonalOffset)/))}const BT=t=>[...[...Array(25)].map((e,n)=>`--${t?`${t}-`:""}overlays-${n}`),`--${t?`${t}-`:""}palette-AppBar-darkBg`,`--${t?`${t}-`:""}palette-AppBar-darkColor`],zT=t=>(e,n)=>{const r=t.rootSelector||":root",i=t.colorSchemeSelector;let o=i;if(i==="class"&&(o=".%s"),i==="data"&&(o="[data-%s]"),i!=null&&i.startsWith("data-")&&!i.includes("%s")&&(o=`[${i}="%s"]`),t.defaultColorScheme===e){if(e==="dark"){const s={};return BT(t.cssVarPrefix).forEach(a=>{s[a]=n[a],delete n[a]}),o==="media"?{[r]:n,"@media (prefers-color-scheme: dark)":{[r]:s}}:o?{[o.replace("%s",e)]:s,[`${r}, ${o.replace("%s",e)}`]:n}:{[r]:{...n,...s}}}if(o&&o!=="media")return`${r}, ${o.replace("%s",String(e))}`}else if(e){if(o==="media")return{[`@media (prefers-color-scheme: ${String(e)})`]:{[r]:n}};if(o)return o.replace("%s",String(e))}return r};function $T(t,e){e.forEach(n=>{t[n]||(t[n]={})})}function bt(t,e,n){!t[e]&&n&&(t[e]=n)}function pf(t){return!t||!t.startsWith("hsl")?t:ik(t)}function Wo(t,e){`${e}Channel`in t||(t[`${e}Channel`]=df(pf(t[e]),`MUI: Can't create \`palette.${e}Channel\` because \`palette.${e}\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color(). +To suppress this warning, you need to explicitly provide the \`palette.${e}Channel\` as a string (in rgb format, for example "12 12 12") or undefined if you want to remove the channel token.`))}function UT(t){return typeof t=="number"?`${t}px`:typeof t=="string"||typeof t=="function"||Array.isArray(t)?t:"8px"}const ho=t=>{try{return t()}catch{}},qT=(t="mui")=>WM(t);function Mm(t,e,n,r){if(!e)return;e=e===!0?{}:e;const i=r==="dark"?"dark":"light";if(!n){t[r]=DT({...e,palette:{mode:i,...e==null?void 0:e.palette}});return}const{palette:o,...s}=f5({...n,palette:{mode:i,...e==null?void 0:e.palette}});return t[r]={...e,palette:o,opacity:{...ck(i),...e==null?void 0:e.opacity},overlays:(e==null?void 0:e.overlays)||uk(i)},s}function WT(t={},...e){const{colorSchemes:n={light:!0},defaultColorScheme:r,disableCssColorScheme:i=!1,cssVarPrefix:o="mui",shouldSkipGeneratingVar:s=jT,colorSchemeSelector:a=n.light&&n.dark?"media":void 0,rootSelector:l=":root",...c}=t,u=Object.keys(n)[0],h=r||(n.light&&u!=="light"?"light":u),p=qT(o),{[h]:d,light:y,dark:b,..._}=n,m={..._};let w=d;if((h==="dark"&&!("dark"in n)||h==="light"&&!("light"in n))&&(w=!0),!w)throw new Error(fl(21,h));const S=Mm(m,w,c,h);y&&!m.light&&Mm(m,y,void 0,"light"),b&&!m.dark&&Mm(m,b,void 0,"dark");let A={defaultColorScheme:h,...S,cssVarPrefix:o,colorSchemeSelector:a,rootSelector:l,getCssVar:p,colorSchemes:m,font:{..._T(S.typography),...S.font},spacing:UT(c.spacing)};Object.keys(A.colorSchemes).forEach(X=>{const C=A.colorSchemes[X].palette,L=T=>{const W=T.split("-"),V=W[1],ot=W[2];return p(T,C[V][ot])};if(C.mode==="light"&&(bt(C.common,"background","#fff"),bt(C.common,"onBackground","#000")),C.mode==="dark"&&(bt(C.common,"background","#000"),bt(C.common,"onBackground","#fff")),$T(C,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),C.mode==="light"){bt(C.Alert,"errorColor",Fe(C.error.light,.6)),bt(C.Alert,"infoColor",Fe(C.info.light,.6)),bt(C.Alert,"successColor",Fe(C.success.light,.6)),bt(C.Alert,"warningColor",Fe(C.warning.light,.6)),bt(C.Alert,"errorFilledBg",L("palette-error-main")),bt(C.Alert,"infoFilledBg",L("palette-info-main")),bt(C.Alert,"successFilledBg",L("palette-success-main")),bt(C.Alert,"warningFilledBg",L("palette-warning-main")),bt(C.Alert,"errorFilledColor",ho(()=>C.getContrastText(C.error.main))),bt(C.Alert,"infoFilledColor",ho(()=>C.getContrastText(C.info.main))),bt(C.Alert,"successFilledColor",ho(()=>C.getContrastText(C.success.main))),bt(C.Alert,"warningFilledColor",ho(()=>C.getContrastText(C.warning.main))),bt(C.Alert,"errorStandardBg",De(C.error.light,.9)),bt(C.Alert,"infoStandardBg",De(C.info.light,.9)),bt(C.Alert,"successStandardBg",De(C.success.light,.9)),bt(C.Alert,"warningStandardBg",De(C.warning.light,.9)),bt(C.Alert,"errorIconColor",L("palette-error-main")),bt(C.Alert,"infoIconColor",L("palette-info-main")),bt(C.Alert,"successIconColor",L("palette-success-main")),bt(C.Alert,"warningIconColor",L("palette-warning-main")),bt(C.AppBar,"defaultBg",L("palette-grey-100")),bt(C.Avatar,"defaultBg",L("palette-grey-400")),bt(C.Button,"inheritContainedBg",L("palette-grey-300")),bt(C.Button,"inheritContainedHoverBg",L("palette-grey-A100")),bt(C.Chip,"defaultBorder",L("palette-grey-400")),bt(C.Chip,"defaultAvatarColor",L("palette-grey-700")),bt(C.Chip,"defaultIconColor",L("palette-grey-700")),bt(C.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),bt(C.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),bt(C.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),bt(C.LinearProgress,"primaryBg",De(C.primary.main,.62)),bt(C.LinearProgress,"secondaryBg",De(C.secondary.main,.62)),bt(C.LinearProgress,"errorBg",De(C.error.main,.62)),bt(C.LinearProgress,"infoBg",De(C.info.main,.62)),bt(C.LinearProgress,"successBg",De(C.success.main,.62)),bt(C.LinearProgress,"warningBg",De(C.warning.main,.62)),bt(C.Skeleton,"bg",`rgba(${L("palette-text-primaryChannel")} / 0.11)`),bt(C.Slider,"primaryTrack",De(C.primary.main,.62)),bt(C.Slider,"secondaryTrack",De(C.secondary.main,.62)),bt(C.Slider,"errorTrack",De(C.error.main,.62)),bt(C.Slider,"infoTrack",De(C.info.main,.62)),bt(C.Slider,"successTrack",De(C.success.main,.62)),bt(C.Slider,"warningTrack",De(C.warning.main,.62));const T=ep(C.background.default,.8);bt(C.SnackbarContent,"bg",T),bt(C.SnackbarContent,"color",ho(()=>C.getContrastText(T))),bt(C.SpeedDialAction,"fabHoverBg",ep(C.background.paper,.15)),bt(C.StepConnector,"border",L("palette-grey-400")),bt(C.StepContent,"border",L("palette-grey-400")),bt(C.Switch,"defaultColor",L("palette-common-white")),bt(C.Switch,"defaultDisabledColor",L("palette-grey-100")),bt(C.Switch,"primaryDisabledColor",De(C.primary.main,.62)),bt(C.Switch,"secondaryDisabledColor",De(C.secondary.main,.62)),bt(C.Switch,"errorDisabledColor",De(C.error.main,.62)),bt(C.Switch,"infoDisabledColor",De(C.info.main,.62)),bt(C.Switch,"successDisabledColor",De(C.success.main,.62)),bt(C.Switch,"warningDisabledColor",De(C.warning.main,.62)),bt(C.TableCell,"border",De(tp(C.divider,1),.88)),bt(C.Tooltip,"bg",tp(C.grey[700],.92))}if(C.mode==="dark"){bt(C.Alert,"errorColor",De(C.error.light,.6)),bt(C.Alert,"infoColor",De(C.info.light,.6)),bt(C.Alert,"successColor",De(C.success.light,.6)),bt(C.Alert,"warningColor",De(C.warning.light,.6)),bt(C.Alert,"errorFilledBg",L("palette-error-dark")),bt(C.Alert,"infoFilledBg",L("palette-info-dark")),bt(C.Alert,"successFilledBg",L("palette-success-dark")),bt(C.Alert,"warningFilledBg",L("palette-warning-dark")),bt(C.Alert,"errorFilledColor",ho(()=>C.getContrastText(C.error.dark))),bt(C.Alert,"infoFilledColor",ho(()=>C.getContrastText(C.info.dark))),bt(C.Alert,"successFilledColor",ho(()=>C.getContrastText(C.success.dark))),bt(C.Alert,"warningFilledColor",ho(()=>C.getContrastText(C.warning.dark))),bt(C.Alert,"errorStandardBg",Fe(C.error.light,.9)),bt(C.Alert,"infoStandardBg",Fe(C.info.light,.9)),bt(C.Alert,"successStandardBg",Fe(C.success.light,.9)),bt(C.Alert,"warningStandardBg",Fe(C.warning.light,.9)),bt(C.Alert,"errorIconColor",L("palette-error-main")),bt(C.Alert,"infoIconColor",L("palette-info-main")),bt(C.Alert,"successIconColor",L("palette-success-main")),bt(C.Alert,"warningIconColor",L("palette-warning-main")),bt(C.AppBar,"defaultBg",L("palette-grey-900")),bt(C.AppBar,"darkBg",L("palette-background-paper")),bt(C.AppBar,"darkColor",L("palette-text-primary")),bt(C.Avatar,"defaultBg",L("palette-grey-600")),bt(C.Button,"inheritContainedBg",L("palette-grey-800")),bt(C.Button,"inheritContainedHoverBg",L("palette-grey-700")),bt(C.Chip,"defaultBorder",L("palette-grey-700")),bt(C.Chip,"defaultAvatarColor",L("palette-grey-300")),bt(C.Chip,"defaultIconColor",L("palette-grey-300")),bt(C.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),bt(C.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),bt(C.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),bt(C.LinearProgress,"primaryBg",Fe(C.primary.main,.5)),bt(C.LinearProgress,"secondaryBg",Fe(C.secondary.main,.5)),bt(C.LinearProgress,"errorBg",Fe(C.error.main,.5)),bt(C.LinearProgress,"infoBg",Fe(C.info.main,.5)),bt(C.LinearProgress,"successBg",Fe(C.success.main,.5)),bt(C.LinearProgress,"warningBg",Fe(C.warning.main,.5)),bt(C.Skeleton,"bg",`rgba(${L("palette-text-primaryChannel")} / 0.13)`),bt(C.Slider,"primaryTrack",Fe(C.primary.main,.5)),bt(C.Slider,"secondaryTrack",Fe(C.secondary.main,.5)),bt(C.Slider,"errorTrack",Fe(C.error.main,.5)),bt(C.Slider,"infoTrack",Fe(C.info.main,.5)),bt(C.Slider,"successTrack",Fe(C.success.main,.5)),bt(C.Slider,"warningTrack",Fe(C.warning.main,.5));const T=ep(C.background.default,.98);bt(C.SnackbarContent,"bg",T),bt(C.SnackbarContent,"color",ho(()=>C.getContrastText(T))),bt(C.SpeedDialAction,"fabHoverBg",ep(C.background.paper,.15)),bt(C.StepConnector,"border",L("palette-grey-600")),bt(C.StepContent,"border",L("palette-grey-600")),bt(C.Switch,"defaultColor",L("palette-grey-300")),bt(C.Switch,"defaultDisabledColor",L("palette-grey-600")),bt(C.Switch,"primaryDisabledColor",Fe(C.primary.main,.55)),bt(C.Switch,"secondaryDisabledColor",Fe(C.secondary.main,.55)),bt(C.Switch,"errorDisabledColor",Fe(C.error.main,.55)),bt(C.Switch,"infoDisabledColor",Fe(C.info.main,.55)),bt(C.Switch,"successDisabledColor",Fe(C.success.main,.55)),bt(C.Switch,"warningDisabledColor",Fe(C.warning.main,.55)),bt(C.TableCell,"border",Fe(tp(C.divider,1),.68)),bt(C.Tooltip,"bg",tp(C.grey[700],.92))}Wo(C.background,"default"),Wo(C.background,"paper"),Wo(C.common,"background"),Wo(C.common,"onBackground"),Wo(C,"divider"),Object.keys(C).forEach(T=>{const W=C[T];W&&typeof W=="object"&&(W.main&&bt(C[T],"mainChannel",df(pf(W.main))),W.light&&bt(C[T],"lightChannel",df(pf(W.light))),W.dark&&bt(C[T],"darkChannel",df(pf(W.dark))),W.contrastText&&bt(C[T],"contrastTextChannel",df(pf(W.contrastText))),T==="text"&&(Wo(C[T],"primary"),Wo(C[T],"secondary")),T==="action"&&(W.active&&Wo(C[T],"active"),W.selected&&Wo(C[T],"selected")))})}),A=e.reduce((X,C)=>ti(X,C),A);const P={prefix:o,disableCssColorScheme:i,shouldSkipGeneratingVar:s,getSelector:zT(A)},{vars:z,generateThemeVars:I,generateStyleSheets:R}=GM(A,P);return A.vars=z,Object.entries(A.colorSchemes[A.defaultColorScheme]).forEach(([X,C])=>{A[X]=C}),A.generateThemeVars=I,A.generateStyleSheets=R,A.generateSpacing=function(){return K6(c.spacing,gv(this))},A.getColorSchemeSelector=YM(a),A.spacing=A.generateSpacing(),A.shouldSkipGeneratingVar=s,A.unstable_sxConfig={...Rh,...c==null?void 0:c.unstable_sxConfig},A.unstable_sx=function(C){return Kc({sx:C,theme:this})},A.toRuntimeSource=lk,A}function Pw(t,e,n){t.colorSchemes&&n&&(t.colorSchemes[e]={...n!==!0&&n,palette:_v({...n===!0?{}:n.palette,mode:e})})}function VT(t={},...e){const{palette:n,cssVariables:r=!1,colorSchemes:i=n?void 0:{light:!0},defaultColorScheme:o=n==null?void 0:n.mode,...s}=t,a=o||"light",l=i==null?void 0:i[a],c={...i,...n?{[a]:{...typeof l!="boolean"&&l,palette:n}}:void 0};if(r===!1){if(!("colorSchemes"in t))return f5(t,...e);let u=n;"palette"in t||c[a]&&(c[a]!==!0?u=c[a].palette:a==="dark"&&(u={mode:"dark"}));const h=f5({...t,palette:u},...e);return h.defaultColorScheme=a,h.colorSchemes=c,h.palette.mode==="light"&&(h.colorSchemes.light={...c.light!==!0&&c.light,palette:h.palette},Pw(h,"dark",c.dark)),h.palette.mode==="dark"&&(h.colorSchemes.dark={...c.dark!==!0&&c.dark,palette:h.palette},Pw(h,"light",c.light)),h}return!n&&!("light"in c)&&a==="light"&&(c.light=!0),WT({...s,colorSchemes:c,defaultColorScheme:a,...typeof r!="boolean"&&r},...e)}const fk=VT();function HT(){const t=yv(fk);return t[N6]||t}function GT(t){return t!=="ownerState"&&t!=="theme"&&t!=="sx"&&t!=="as"}const hk=t=>GT(t)&&t!=="classes",Ki=ek({themeId:N6,defaultTheme:fk,rootShouldForwardProp:hk});function YT(){return J6}const Hg=qM;function ya(t){return UM(t)}function XT(t){return ma("MuiSvgIcon",t)}su("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const KT=t=>{const{color:e,fontSize:n,classes:r}=t,i={root:["root",e!=="inherit"&&`color${nn(e)}`,`fontSize${nn(n)}`]};return vl(i,XT,r)},JT=Ki("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.color!=="inherit"&&e[`color${nn(n.color)}`],e[`fontSize${nn(n.fontSize)}`]]}})(Hg(({theme:t})=>{var e,n,r,i,o,s,a,l,c,u,h,p,d,y;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:(i=(e=t.transitions)==null?void 0:e.create)==null?void 0:i.call(e,"fill",{duration:(r=(n=(t.vars??t).transitions)==null?void 0:n.duration)==null?void 0:r.shorter}),variants:[{props:b=>!b.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:((s=(o=t.typography)==null?void 0:o.pxToRem)==null?void 0:s.call(o,20))||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:((l=(a=t.typography)==null?void 0:a.pxToRem)==null?void 0:l.call(a,24))||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:((u=(c=t.typography)==null?void 0:c.pxToRem)==null?void 0:u.call(c,35))||"2.1875rem"}},...Object.entries((t.vars??t).palette).filter(([,b])=>b&&b.main).map(([b])=>{var _,m;return{props:{color:b},style:{color:(m=(_=(t.vars??t).palette)==null?void 0:_[b])==null?void 0:m.main}}}),{props:{color:"action"},style:{color:(p=(h=(t.vars??t).palette)==null?void 0:h.action)==null?void 0:p.active}},{props:{color:"disabled"},style:{color:(y=(d=(t.vars??t).palette)==null?void 0:d.action)==null?void 0:y.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}})),F0=H.forwardRef(function(e,n){const r=ya({props:e,name:"MuiSvgIcon"}),{children:i,className:o,color:s="inherit",component:a="svg",fontSize:l="medium",htmlColor:c,inheritViewBox:u=!1,titleAccess:h,viewBox:p="0 0 24 24",...d}=r,y=H.isValidElement(i)&&i.type==="svg",b={...r,color:s,component:a,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:u,viewBox:p,hasSvgAsChild:y},_={};u||(_.viewBox=p);const m=KT(b);return B.jsxs(JT,{as:a,className:Kn(m.root,o),focusable:"false",color:c,"aria-hidden":h?void 0:!0,role:h?"img":void 0,ref:n,..._,...d,...y&&i.props,ownerState:b,children:[y?i.props.children:i,h?B.jsx("title",{children:h}):null]})});F0&&(F0.muiName="SvgIcon");function Sv(t,e){function n(r,i){return B.jsx(F0,{"data-testid":`${e}Icon`,ref:i,...r,children:t})}return n.muiName=F0.muiName,H.memo(H.forwardRef(n))}function dk(t,e){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.includes(r))continue;n[r]=t[r]}return n}function d5(t,e){return d5=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,r){return n.__proto__=r,n},d5(t,e)}function pk(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,d5(t,e)}function QT(t,e){return t.classList?t.classList.contains(e):(" "+(t.className.baseVal||t.className)+" ").indexOf(" "+e+" ")!==-1}function ZT(t,e){t.classList?t.classList.add(e):QT(t,e)||(typeof t.className=="string"?t.className=t.className+" "+e:t.setAttribute("class",(t.className&&t.className.baseVal||"")+" "+e))}function Ew(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function tO(t,e){t.classList?t.classList.remove(e):typeof t.className=="string"?t.className=Ew(t.className,e):t.setAttribute("class",Ew(t.className&&t.className.baseVal||"",e))}const Mw={disabled:!1},D0=Mr.createContext(null);var eO=function(e){return e.scrollTop},gf="unmounted",ja="exited",Ds="entering",Ua="entered",p5="exiting",gs=function(t){pk(e,t);function e(r,i){var o;o=t.call(this,r,i)||this;var s=i,a=s&&!s.isMounting?r.enter:r.appear,l;return o.appearStatus=null,r.in?a?(l=ja,o.appearStatus=Ds):l=Ua:r.unmountOnExit||r.mountOnEnter?l=gf:l=ja,o.state={status:l},o.nextCallback=null,o}e.getDerivedStateFromProps=function(i,o){var s=i.in;return s&&o.status===gf?{status:ja}:null};var n=e.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var o=null;if(i!==this.props){var s=this.state.status;this.props.in?s!==Ds&&s!==Ua&&(o=Ds):(s===Ds||s===Ua)&&(o=p5)}this.updateStatus(!1,o)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,o,s,a;return o=s=a=i,i!=null&&typeof i!="number"&&(o=i.exit,s=i.enter,a=i.appear!==void 0?i.appear:s),{exit:o,enter:s,appear:a}},n.updateStatus=function(i,o){if(i===void 0&&(i=!1),o!==null)if(this.cancelNextCallback(),o===Ds){if(this.props.unmountOnExit||this.props.mountOnEnter){var s=this.props.nodeRef?this.props.nodeRef.current:kc.findDOMNode(this);s&&eO(s)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===ja&&this.setState({status:gf})},n.performEnter=function(i){var o=this,s=this.props.enter,a=this.context?this.context.isMounting:i,l=this.props.nodeRef?[a]:[kc.findDOMNode(this),a],c=l[0],u=l[1],h=this.getTimeouts(),p=a?h.appear:h.enter;if(!i&&!s||Mw.disabled){this.safeSetState({status:Ua},function(){o.props.onEntered(c)});return}this.props.onEnter(c,u),this.safeSetState({status:Ds},function(){o.props.onEntering(c,u),o.onTransitionEnd(p,function(){o.safeSetState({status:Ua},function(){o.props.onEntered(c,u)})})})},n.performExit=function(){var i=this,o=this.props.exit,s=this.getTimeouts(),a=this.props.nodeRef?void 0:kc.findDOMNode(this);if(!o||Mw.disabled){this.safeSetState({status:ja},function(){i.props.onExited(a)});return}this.props.onExit(a),this.safeSetState({status:p5},function(){i.props.onExiting(a),i.onTransitionEnd(s.exit,function(){i.safeSetState({status:ja},function(){i.props.onExited(a)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,o){o=this.setNextCallback(o),this.setState(i,o)},n.setNextCallback=function(i){var o=this,s=!0;return this.nextCallback=function(a){s&&(s=!1,o.nextCallback=null,i(a))},this.nextCallback.cancel=function(){s=!1},this.nextCallback},n.onTransitionEnd=function(i,o){this.setNextCallback(o);var s=this.props.nodeRef?this.props.nodeRef.current:kc.findDOMNode(this),a=i==null&&!this.props.addEndListener;if(!s||a){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var l=this.props.nodeRef?[this.nextCallback]:[s,this.nextCallback],c=l[0],u=l[1];this.props.addEndListener(c,u)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===gf)return null;var o=this.props,s=o.children;o.in,o.mountOnEnter,o.unmountOnExit,o.appear,o.enter,o.exit,o.timeout,o.addEndListener,o.onEnter,o.onEntering,o.onEntered,o.onExit,o.onExiting,o.onExited,o.nodeRef;var a=dk(o,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return Mr.createElement(D0.Provider,{value:null},typeof s=="function"?s(i,a):Mr.cloneElement(Mr.Children.only(s),a))},e}(Mr.Component);gs.contextType=D0;gs.propTypes={};function nc(){}gs.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:nc,onEntering:nc,onEntered:nc,onExit:nc,onExiting:nc,onExited:nc};gs.UNMOUNTED=gf;gs.EXITED=ja;gs.ENTERING=Ds;gs.ENTERED=Ua;gs.EXITING=p5;function nO(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function kv(t,e){var n=function(o){return e&&H.isValidElement(o)?e(o):o},r=Object.create(null);return t&&H.Children.map(t,function(i){return i}).forEach(function(i){r[i.key]=n(i)}),r}function rO(t,e){t=t||{},e=e||{};function n(u){return u in e?e[u]:t[u]}var r=Object.create(null),i=[];for(var o in t)o in e?i.length&&(r[o]=i,i=[]):i.push(o);var s,a={};for(var l in e){if(r[l])for(s=0;s{const{square:e,elevation:n,variant:r,classes:i}=t,o={root:["root",r,!e&&"rounded",r==="elevation"&&`elevation${n}`]};return vl(o,lO,i)},uO=Ki("div",{name:"MuiPaper",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],!n.square&&e.rounded,n.variant==="elevation"&&e[`elevation${n.elevation}`]]}})(Hg(({theme:t})=>({backgroundColor:(t.vars||t).palette.background.paper,color:(t.vars||t).palette.text.primary,transition:t.transitions.create("box-shadow"),variants:[{props:({ownerState:e})=>!e.square,style:{borderRadius:t.shape.borderRadius}},{props:{variant:"outlined"},style:{border:`1px solid ${(t.vars||t).palette.divider}`}},{props:{variant:"elevation"},style:{boxShadow:"var(--Paper-shadow)",backgroundImage:"var(--Paper-overlay)"}}]}))),Ju=H.forwardRef(function(e,n){var d;const r=ya({props:e,name:"MuiPaper"}),i=HT(),{className:o,component:s="div",elevation:a=1,square:l=!1,variant:c="elevation",...u}=r,h={...r,component:s,elevation:a,square:l,variant:c},p=cO(h);return B.jsx(uO,{as:s,ownerState:h,className:Kn(p.root,o),ref:n,...u,style:{...c==="elevation"&&{"--Paper-shadow":(i.vars||i).shadows[a],...i.vars&&{"--Paper-overlay":(d=i.vars.overlays)==null?void 0:d[a]},...!i.vars&&i.palette.mode==="dark"&&{"--Paper-overlay":`linear-gradient(${$s("#fff",h5(a))}, ${$s("#fff",h5(a))})`}},...u.style}})});class j0{constructor(){Mt(this,"mountEffect",()=>{this.shouldMount&&!this.didMount&&this.ref.current!==null&&(this.didMount=!0,this.mounted.resolve())});this.ref={current:null},this.mounted=null,this.didMount=!1,this.shouldMount=!1,this.setShouldMount=null}static create(){return new j0}static use(){const e=ok(j0.create).current,[n,r]=H.useState(!1);return e.shouldMount=n,e.setShouldMount=r,H.useEffect(e.mountEffect,[n]),e}mount(){return this.mounted||(this.mounted=hO(),this.shouldMount=!0,this.setShouldMount(this.shouldMount)),this.mounted}start(...e){this.mount().then(()=>{var n;return(n=this.ref.current)==null?void 0:n.start(...e)})}stop(...e){this.mount().then(()=>{var n;return(n=this.ref.current)==null?void 0:n.stop(...e)})}pulsate(...e){this.mount().then(()=>{var n;return(n=this.ref.current)==null?void 0:n.pulsate(...e)})}}function fO(){return j0.use()}function hO(){let t,e;const n=new Promise((r,i)=>{t=r,e=i});return n.resolve=t,n.reject=e,n}function dO(t){const{className:e,classes:n,pulsate:r=!1,rippleX:i,rippleY:o,rippleSize:s,in:a,onExited:l,timeout:c}=t,[u,h]=H.useState(!1),p=Kn(e,n.ripple,n.rippleVisible,r&&n.ripplePulsate),d={width:s,height:s,top:-(s/2)+o,left:-(s/2)+i},y=Kn(n.child,u&&n.childLeaving,r&&n.childPulsate);return!a&&!u&&h(!0),H.useEffect(()=>{if(!a&&l!=null){const b=setTimeout(l,c);return()=>{clearTimeout(b)}}},[l,a,c]),B.jsx("span",{className:p,style:d,children:B.jsx("span",{className:y})})}const gi=su("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),g5=550,pO=80,gO=hv` + 0% { + transform: scale(0); + opacity: 0.1; + } + + 100% { + transform: scale(1); + opacity: 0.3; + } +`,mO=hv` + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +`,yO=hv` + 0% { + transform: scale(1); + } + + 50% { + transform: scale(0.92); + } + + 100% { + transform: scale(1); + } +`,vO=Ki("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),bO=Ki(dO,{name:"MuiTouchRipple",slot:"Ripple"})` + opacity: 0; + position: absolute; + + &.${gi.rippleVisible} { + opacity: 0.3; + transform: scale(1); + animation-name: ${gO}; + animation-duration: ${g5}ms; + animation-timing-function: ${({theme:t})=>t.transitions.easing.easeInOut}; + } + + &.${gi.ripplePulsate} { + animation-duration: ${({theme:t})=>t.transitions.duration.shorter}ms; + } + + & .${gi.child} { + opacity: 1; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + background-color: currentColor; + } + + & .${gi.childLeaving} { + opacity: 0; + animation-name: ${mO}; + animation-duration: ${g5}ms; + animation-timing-function: ${({theme:t})=>t.transitions.easing.easeInOut}; + } + + & .${gi.childPulsate} { + position: absolute; + /* @noflip */ + left: 0px; + top: 0; + animation-name: ${yO}; + animation-duration: 2500ms; + animation-timing-function: ${({theme:t})=>t.transitions.easing.easeInOut}; + animation-iteration-count: infinite; + animation-delay: 200ms; + } +`,xO=H.forwardRef(function(e,n){const r=ya({props:e,name:"MuiTouchRipple"}),{center:i=!1,classes:o={},className:s,...a}=r,[l,c]=H.useState([]),u=H.useRef(0),h=H.useRef(null);H.useEffect(()=>{h.current&&(h.current(),h.current=null)},[l]);const p=H.useRef(!1),d=BM(),y=H.useRef(null),b=H.useRef(null),_=H.useCallback(A=>{const{pulsate:P,rippleX:z,rippleY:I,rippleSize:R,cb:X}=A;c(C=>[...C,B.jsx(bO,{classes:{ripple:Kn(o.ripple,gi.ripple),rippleVisible:Kn(o.rippleVisible,gi.rippleVisible),ripplePulsate:Kn(o.ripplePulsate,gi.ripplePulsate),child:Kn(o.child,gi.child),childLeaving:Kn(o.childLeaving,gi.childLeaving),childPulsate:Kn(o.childPulsate,gi.childPulsate)},timeout:g5,pulsate:P,rippleX:z,rippleY:I,rippleSize:R},u.current)]),u.current+=1,h.current=X},[o]),m=H.useCallback((A={},P={},z=()=>{})=>{const{pulsate:I=!1,center:R=i||P.pulsate,fakeElement:X=!1}=P;if((A==null?void 0:A.type)==="mousedown"&&p.current){p.current=!1;return}(A==null?void 0:A.type)==="touchstart"&&(p.current=!0);const C=X?null:b.current,L=C?C.getBoundingClientRect():{width:0,height:0,left:0,top:0};let T,W,V;if(R||A===void 0||A.clientX===0&&A.clientY===0||!A.clientX&&!A.touches)T=Math.round(L.width/2),W=Math.round(L.height/2);else{const{clientX:ot,clientY:rt}=A.touches&&A.touches.length>0?A.touches[0]:A;T=Math.round(ot-L.left),W=Math.round(rt-L.top)}if(R)V=Math.sqrt((2*L.width**2+L.height**2)/3),V%2===0&&(V+=1);else{const ot=Math.max(Math.abs((C?C.clientWidth:0)-T),T)*2+2,rt=Math.max(Math.abs((C?C.clientHeight:0)-W),W)*2+2;V=Math.sqrt(ot**2+rt**2)}A!=null&&A.touches?y.current===null&&(y.current=()=>{_({pulsate:I,rippleX:T,rippleY:W,rippleSize:V,cb:z})},d.start(pO,()=>{y.current&&(y.current(),y.current=null)})):_({pulsate:I,rippleX:T,rippleY:W,rippleSize:V,cb:z})},[i,_,d]),w=H.useCallback(()=>{m({},{pulsate:!0})},[m]),S=H.useCallback((A,P)=>{if(d.clear(),(A==null?void 0:A.type)==="touchend"&&y.current){y.current(),y.current=null,d.start(0,()=>{S(A,P)});return}y.current=null,c(z=>z.length>0?z.slice(1):z),h.current=P},[d]);return H.useImperativeHandle(n,()=>({pulsate:w,start:m,stop:S}),[w,m,S]),B.jsx(vO,{className:Kn(gi.root,o.root,s),ref:b,...a,children:B.jsx(Av,{component:null,exit:!0,children:l})})});function wO(t){return ma("MuiButtonBase",t)}const _O=su("MuiButtonBase",["root","disabled","focusVisible"]),SO=t=>{const{disabled:e,focusVisible:n,focusVisibleClassName:r,classes:i}=t,s=vl({root:["root",e&&"disabled",n&&"focusVisible"]},wO,i);return n&&r&&(s.root+=` ${r}`),s},kO=Ki("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(t,e)=>e.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${_O.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),AO=H.forwardRef(function(e,n){const r=ya({props:e,name:"MuiButtonBase"}),{action:i,centerRipple:o=!1,children:s,className:a,component:l="button",disabled:c=!1,disableRipple:u=!1,disableTouchRipple:h=!1,focusRipple:p=!1,focusVisibleClassName:d,LinkComponent:y="a",onBlur:b,onClick:_,onContextMenu:m,onDragLeave:w,onFocus:S,onFocusVisible:A,onKeyDown:P,onKeyUp:z,onMouseDown:I,onMouseLeave:R,onMouseUp:X,onTouchEnd:C,onTouchMove:L,onTouchStart:T,tabIndex:W=0,TouchRippleProps:V,touchRippleRef:ot,type:rt,...lt}=r,Y=H.useRef(null),et=fO(),at=vw(et.ref,ot),[xt,M]=H.useState(!1);c&&xt&&M(!1),H.useImperativeHandle(i,()=>({focusVisible:()=>{M(!0),Y.current.focus()}}),[]);const $=et.shouldMount&&!u&&!c;H.useEffect(()=>{xt&&p&&!u&&et.pulsate()},[u,p,xt,et]);function q(Nt,Kt,ee=h){return np(Bt=>(Kt&&Kt(Bt),ee||et[Nt](Bt),!0))}const J=q("start",I),Z=q("stop",m),ut=q("stop",w),gt=q("stop",X),pt=q("stop",Nt=>{xt&&Nt.preventDefault(),R&&R(Nt)}),Pt=q("start",T),Lt=q("stop",C),Ot=q("stop",L),Tt=q("stop",Nt=>{xw(Nt.target)||M(!1),b&&b(Nt)},!1),Ht=np(Nt=>{Y.current||(Y.current=Nt.currentTarget),xw(Nt.target)&&(M(!0),A&&A(Nt)),S&&S(Nt)}),dt=()=>{const Nt=Y.current;return l&&l!=="button"&&!(Nt.tagName==="A"&&Nt.href)},K=np(Nt=>{p&&!Nt.repeat&&xt&&Nt.key===" "&&et.stop(Nt,()=>{et.start(Nt)}),Nt.target===Nt.currentTarget&&dt()&&Nt.key===" "&&Nt.preventDefault(),P&&P(Nt),Nt.target===Nt.currentTarget&&dt()&&Nt.key==="Enter"&&!c&&(Nt.preventDefault(),_&&_(Nt))}),Xt=np(Nt=>{p&&Nt.key===" "&&xt&&!Nt.defaultPrevented&&et.stop(Nt,()=>{et.pulsate(Nt)}),z&&z(Nt),_&&Nt.target===Nt.currentTarget&&dt()&&Nt.key===" "&&!Nt.defaultPrevented&&_(Nt)});let qt=l;qt==="button"&&(lt.href||lt.to)&&(qt=y);const At={};qt==="button"?(At.type=rt===void 0?"button":rt,At.disabled=c):(!lt.href&&!lt.to&&(At.role="button"),c&&(At["aria-disabled"]=c));const Rt=vw(n,Y),Dt={...r,centerRipple:o,component:l,disabled:c,disableRipple:u,disableTouchRipple:h,focusRipple:p,tabIndex:W,focusVisible:xt},It=SO(Dt);return B.jsxs(kO,{as:qt,className:Kn(It.root,a),ownerState:Dt,onBlur:Tt,onClick:_,onContextMenu:Z,onFocus:Ht,onKeyDown:K,onKeyUp:Xt,onMouseDown:J,onMouseLeave:pt,onMouseUp:gt,onDragLeave:ut,onTouchEnd:Lt,onTouchMove:Ot,onTouchStart:Pt,ref:Rt,tabIndex:c?-1:W,type:rt,...At,...lt,children:[s,$?B.jsx(xO,{ref:at,center:o,...V}):null]})});function CO(t){return typeof t.main=="string"}function LO(t,e=[]){if(!CO(t))return!1;for(const n of e)if(!t.hasOwnProperty(n)||typeof t[n]!="string")return!1;return!0}function gk(t=[]){return([,e])=>e&&LO(e,t)}function NO(t){return ma("MuiTypography",t)}su("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const PO={primary:!0,secondary:!0,error:!0,info:!0,success:!0,warning:!0,textPrimary:!0,textSecondary:!0,textDisabled:!0},EO=YT(),MO=t=>{const{align:e,gutterBottom:n,noWrap:r,paragraph:i,variant:o,classes:s}=t,a={root:["root",o,t.align!=="inherit"&&`align${nn(e)}`,n&&"gutterBottom",r&&"noWrap",i&&"paragraph"]};return vl(a,NO,s)},TO=Ki("span",{name:"MuiTypography",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.variant&&e[n.variant],n.align!=="inherit"&&e[`align${nn(n.align)}`],n.noWrap&&e.noWrap,n.gutterBottom&&e.gutterBottom,n.paragraph&&e.paragraph]}})(Hg(({theme:t})=>{var e;return{margin:0,variants:[{props:{variant:"inherit"},style:{font:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}},...Object.entries(t.typography).filter(([n,r])=>n!=="inherit"&&r&&typeof r=="object").map(([n,r])=>({props:{variant:n},style:r})),...Object.entries(t.palette).filter(gk()).map(([n])=>({props:{color:n},style:{color:(t.vars||t).palette[n].main}})),...Object.entries(((e=t.palette)==null?void 0:e.text)||{}).filter(([,n])=>typeof n=="string").map(([n])=>({props:{color:`text${nn(n)}`},style:{color:(t.vars||t).palette.text[n]}})),{props:({ownerState:n})=>n.align!=="inherit",style:{textAlign:"var(--Typography-textAlign)"}},{props:({ownerState:n})=>n.noWrap,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},{props:({ownerState:n})=>n.gutterBottom,style:{marginBottom:"0.35em"}},{props:({ownerState:n})=>n.paragraph,style:{marginBottom:16}}]}})),Tw={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},Us=H.forwardRef(function(e,n){const{color:r,...i}=ya({props:e,name:"MuiTypography"}),o=!PO[r],s=EO({...i,...o&&{color:r}}),{align:a="inherit",className:l,component:c,gutterBottom:u=!1,noWrap:h=!1,paragraph:p=!1,variant:d="body1",variantMapping:y=Tw,...b}=s,_={...s,align:a,color:r,className:l,component:c,gutterBottom:u,noWrap:h,paragraph:p,variant:d,variantMapping:y},m=c||(p?"p":y[d]||Tw[d])||"span",w=MO(_);return B.jsx(TO,{as:m,ref:n,className:Kn(w.root,l),...b,ownerState:_,style:{...a!=="inherit"&&{"--Typography-textAlign":a},...b.style}})});function OO(t){return ma("MuiButton",t)}const rc=su("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),RO=H.createContext({}),IO=H.createContext(void 0),FO=t=>{const{color:e,disableElevation:n,fullWidth:r,size:i,variant:o,classes:s}=t,a={root:["root",o,`${o}${nn(e)}`,`size${nn(i)}`,`${o}Size${nn(i)}`,`color${nn(e)}`,n&&"disableElevation",r&&"fullWidth"],label:["label"],startIcon:["icon","startIcon",`iconSize${nn(i)}`],endIcon:["icon","endIcon",`iconSize${nn(i)}`]},l=vl(a,OO,s);return{...s,...l}},mk=[{props:{size:"small"},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:"medium"},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:"large"},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],DO=Ki(AO,{shouldForwardProp:t=>hk(t)||t==="classes",name:"MuiButton",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],e[`${n.variant}${nn(n.color)}`],e[`size${nn(n.size)}`],e[`${n.variant}Size${nn(n.size)}`],n.color==="inherit"&&e.colorInherit,n.disableElevation&&e.disableElevation,n.fullWidth&&e.fullWidth]}})(Hg(({theme:t})=>{const e=t.palette.mode==="light"?t.palette.grey[300]:t.palette.grey[800],n=t.palette.mode==="light"?t.palette.grey.A100:t.palette.grey[700];return{...t.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create(["background-color","box-shadow","border-color","color"],{duration:t.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${rc.disabled}`]:{color:(t.vars||t).palette.action.disabled},variants:[{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(t.vars||t).shadows[2],"&:hover":{boxShadow:(t.vars||t).shadows[4],"@media (hover: none)":{boxShadow:(t.vars||t).shadows[2]}},"&:active":{boxShadow:(t.vars||t).shadows[8]},[`&.${rc.focusVisible}`]:{boxShadow:(t.vars||t).shadows[6]},[`&.${rc.disabled}`]:{color:(t.vars||t).palette.action.disabled,boxShadow:(t.vars||t).shadows[0],backgroundColor:(t.vars||t).palette.action.disabledBackground}}},{props:{variant:"outlined"},style:{padding:"5px 15px",border:"1px solid currentColor",borderColor:"var(--variant-outlinedBorder, currentColor)",backgroundColor:"var(--variant-outlinedBg)",color:"var(--variant-outlinedColor)",[`&.${rc.disabled}`]:{border:`1px solid ${(t.vars||t).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(t.palette).filter(gk()).map(([r])=>({props:{color:r},style:{"--variant-textColor":(t.vars||t).palette[r].main,"--variant-outlinedColor":(t.vars||t).palette[r].main,"--variant-outlinedBorder":t.vars?`rgba(${t.vars.palette[r].mainChannel} / 0.5)`:$s(t.palette[r].main,.5),"--variant-containedColor":(t.vars||t).palette[r].contrastText,"--variant-containedBg":(t.vars||t).palette[r].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(t.vars||t).palette[r].dark,"--variant-textBg":t.vars?`rgba(${t.vars.palette[r].mainChannel} / ${t.vars.palette.action.hoverOpacity})`:$s(t.palette[r].main,t.palette.action.hoverOpacity),"--variant-outlinedBorder":(t.vars||t).palette[r].main,"--variant-outlinedBg":t.vars?`rgba(${t.vars.palette[r].mainChannel} / ${t.vars.palette.action.hoverOpacity})`:$s(t.palette[r].main,t.palette.action.hoverOpacity)}}}})),{props:{color:"inherit"},style:{color:"inherit",borderColor:"currentColor","--variant-containedBg":t.vars?t.vars.palette.Button.inheritContainedBg:e,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":t.vars?t.vars.palette.Button.inheritContainedHoverBg:n,"--variant-textBg":t.vars?`rgba(${t.vars.palette.text.primaryChannel} / ${t.vars.palette.action.hoverOpacity})`:$s(t.palette.text.primary,t.palette.action.hoverOpacity),"--variant-outlinedBg":t.vars?`rgba(${t.vars.palette.text.primaryChannel} / ${t.vars.palette.action.hoverOpacity})`:$s(t.palette.text.primary,t.palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:t.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:t.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:t.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:t.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:t.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:t.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${rc.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${rc.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}}]}})),jO=Ki("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.startIcon,e[`iconSize${nn(n.size)}`]]}})({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},...mk]}),BO=Ki("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.endIcon,e[`iconSize${nn(n.size)}`]]}})({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},...mk]}),qs=H.forwardRef(function(e,n){const r=H.useContext(RO),i=H.useContext(IO),o=uh(r,e),s=ya({props:o,name:"MuiButton"}),{children:a,color:l="primary",component:c="button",className:u,disabled:h=!1,disableElevation:p=!1,disableFocusRipple:d=!1,endIcon:y,focusVisibleClassName:b,fullWidth:_=!1,size:m="medium",startIcon:w,type:S,variant:A="text",...P}=s,z={...s,color:l,component:c,disabled:h,disableElevation:p,disableFocusRipple:d,fullWidth:_,size:m,type:S,variant:A},I=FO(z),R=w&&B.jsx(jO,{className:I.startIcon,ownerState:z,children:w}),X=y&&B.jsx(BO,{className:I.endIcon,ownerState:z,children:y}),C=i||"";return B.jsxs(DO,{ownerState:z,className:Kn(r.className,I.root,u,C),component:c,disabled:h,focusRipple:!d,focusVisibleClassName:Kn(I.focusVisible,b),ref:n,type:S,...P,classes:I,children:[R,a,X]})}),yk=ZM({createStyledComponent:Ki("div",{name:"MuiContainer",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[`maxWidth${nn(String(n.maxWidth))}`],n.fixed&&e.fixed,n.disableGutters&&e.disableGutters]}}),useThemeProps:t=>ya({props:t,name:"MuiContainer"})}),Qo=pT({createStyledComponent:Ki("div",{name:"MuiGrid2",slot:"Root",overridesResolver:(t,e)=>e.root}),componentName:"MuiGrid2",useThemeProps:t=>ya({props:t,name:"MuiGrid2"})}),zO=Sv(B.jsx("path",{d:"M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2m13 2h-2.5A3.5 3.5 0 0 0 12 8.5V11h-2v3h2v7h3v-7h3v-3h-3V9a1 1 0 0 1 1-1h2V5z"}),"Facebook"),$O=Sv(B.jsx("path",{d:"M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4H7.6m9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8 1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3z"}),"Instagram"),UO=Sv(B.jsx("path",{d:"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"}),"X");var qO={value:()=>{}};function vk(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}qp.prototype=vk.prototype={constructor:qp,on:function(t,e){var n=this._,r=WO(t+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o0)for(var n=new Array(i),r=0,i,o;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),Rw.hasOwnProperty(e)?{space:Rw[e],local:t}:t}function HO(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===m5&&e.documentElement.namespaceURI===m5?e.createElement(t):e.createElementNS(n,t)}}function GO(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function bk(t){var e=Gg(t);return(e.local?GO:HO)(e)}function YO(){}function Cv(t){return t==null?YO:function(){return this.querySelector(t)}}function XO(t){typeof t!="function"&&(t=Cv(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i=S&&(S=w+1);!(P=_[S])&&++S=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function xR(t){t||(t=wR);function e(h,p){return h&&p?t(h.__data__,p.__data__):!h-!p}for(var n=this._groups,r=n.length,i=new Array(r),o=0;oe?1:t>=e?0:NaN}function _R(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function SR(){return Array.from(this)}function kR(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?IR:typeof e=="function"?DR:FR)(t,e,n??"")):Jc(this.node(),t)}function Jc(t,e){return t.style.getPropertyValue(e)||kk(t).getComputedStyle(t,null).getPropertyValue(e)}function BR(t){return function(){delete this[t]}}function zR(t,e){return function(){this[t]=e}}function $R(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function UR(t,e){return arguments.length>1?this.each((e==null?BR:typeof e=="function"?$R:zR)(t,e)):this.node()[t]}function Ak(t){return t.trim().split(/^|\s+/)}function Lv(t){return t.classList||new Ck(t)}function Ck(t){this._node=t,this._names=Ak(t.getAttribute("class")||"")}Ck.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Lk(t,e){for(var n=Lv(t),r=-1,i=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function mI(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?rp(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?rp(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=CI.exec(t))?new Or(e[1],e[2],e[3],1):(e=LI.exec(t))?new Or(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=NI.exec(t))?rp(e[1],e[2],e[3],e[4]):(e=PI.exec(t))?rp(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=EI.exec(t))?$w(e[1],e[2]/100,e[3]/100,1):(e=MI.exec(t))?$w(e[1],e[2]/100,e[3]/100,e[4]):Iw.hasOwnProperty(t)?jw(Iw[t]):t==="transparent"?new Or(NaN,NaN,NaN,0):null}function jw(t){return new Or(t>>16&255,t>>8&255,t&255,1)}function rp(t,e,n,r){return r<=0&&(t=e=n=NaN),new Or(t,e,n,r)}function RI(t){return t instanceof Dh||(t=dh(t)),t?(t=t.rgb(),new Or(t.r,t.g,t.b,t.opacity)):new Or}function y5(t,e,n,r){return arguments.length===1?RI(t):new Or(t,e,n,r??1)}function Or(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Nv(Or,y5,Ek(Dh,{brighter(t){return t=t==null?z0:Math.pow(z0,t),new Or(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?fh:Math.pow(fh,t),new Or(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Or(tl(this.r),tl(this.g),tl(this.b),$0(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Bw,formatHex:Bw,formatHex8:II,formatRgb:zw,toString:zw}));function Bw(){return`#${Xa(this.r)}${Xa(this.g)}${Xa(this.b)}`}function II(){return`#${Xa(this.r)}${Xa(this.g)}${Xa(this.b)}${Xa((isNaN(this.opacity)?1:this.opacity)*255)}`}function zw(){const t=$0(this.opacity);return`${t===1?"rgb(":"rgba("}${tl(this.r)}, ${tl(this.g)}, ${tl(this.b)}${t===1?")":`, ${t})`}`}function $0(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function tl(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Xa(t){return t=tl(t),(t<16?"0":"")+t.toString(16)}function $w(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ui(t,e,n,r)}function Mk(t){if(t instanceof Ui)return new Ui(t.h,t.s,t.l,t.opacity);if(t instanceof Dh||(t=dh(t)),!t)return new Ui;if(t instanceof Ui)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=NaN,a=o-i,l=(o+i)/2;return a?(e===o?s=(n-r)/a+(n0&&l<1?0:s,new Ui(s,a,l,t.opacity)}function FI(t,e,n,r){return arguments.length===1?Mk(t):new Ui(t,e,n,r??1)}function Ui(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Nv(Ui,FI,Ek(Dh,{brighter(t){return t=t==null?z0:Math.pow(z0,t),new Ui(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?fh:Math.pow(fh,t),new Ui(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Or(Tm(t>=240?t-240:t+120,i,r),Tm(t,i,r),Tm(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Ui(Uw(this.h),ip(this.s),ip(this.l),$0(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=$0(this.opacity);return`${t===1?"hsl(":"hsla("}${Uw(this.h)}, ${ip(this.s)*100}%, ${ip(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Uw(t){return t=(t||0)%360,t<0?t+360:t}function ip(t){return Math.max(0,Math.min(1,t||0))}function Tm(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Tk=t=>()=>t;function DI(t,e){return function(n){return t+n*e}}function jI(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function BI(t){return(t=+t)==1?Ok:function(e,n){return n-e?jI(e,n,t):Tk(isNaN(e)?n:e)}}function Ok(t,e){var n=e-t;return n?DI(t,n):Tk(isNaN(t)?e:t)}const qw=function t(e){var n=BI(e);function r(i,o){var s=n((i=y5(i)).r,(o=y5(o)).r),a=n(i.g,o.g),l=n(i.b,o.b),c=Ok(i.opacity,o.opacity);return function(u){return i.r=s(u),i.g=a(u),i.b=l(u),i.opacity=c(u),i+""}}return r.gamma=t,r}(1);function js(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var v5=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Om=new RegExp(v5.source,"g");function zI(t){return function(){return t}}function $I(t){return function(e){return t(e)+""}}function UI(t,e){var n=v5.lastIndex=Om.lastIndex=0,r,i,o,s=-1,a=[],l=[];for(t=t+"",e=e+"";(r=v5.exec(t))&&(i=Om.exec(e));)(o=i.index)>n&&(o=e.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,l.push({i:s,x:js(r,i)})),n=Om.lastIndex;return n180?u+=360:u-c>180&&(c+=360),p.push({i:h.push(i(h)+"rotate(",null,r)-2,x:js(c,u)})):u&&h.push(i(h)+"rotate("+u+r)}function a(c,u,h,p){c!==u?p.push({i:h.push(i(h)+"skewX(",null,r)-2,x:js(c,u)}):u&&h.push(i(h)+"skewX("+u+r)}function l(c,u,h,p,d,y){if(c!==h||u!==p){var b=d.push(i(d)+"scale(",null,",",null,")");y.push({i:b-4,x:js(c,h)},{i:b-2,x:js(u,p)})}else(h!==1||p!==1)&&d.push(i(d)+"scale("+h+","+p+")")}return function(c,u){var h=[],p=[];return c=t(c),u=t(u),o(c.translateX,c.translateY,u.translateX,u.translateY,h,p),s(c.rotate,u.rotate,h,p),a(c.skewX,u.skewX,h,p),l(c.scaleX,c.scaleY,u.scaleX,u.scaleY,h,p),c=u=null,function(d){for(var y=-1,b=p.length,_;++y=0&&t._call.call(void 0,e),t=t._next;--Qc}function Vw(){hl=(q0=ph.now())+Yg,Qc=mf=0;try{YI()}finally{Qc=0,KI(),hl=0}}function XI(){var t=ph.now(),e=t-q0;e>Fk&&(Yg-=e,q0=t)}function KI(){for(var t,e=U0,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:U0=n);yf=t,x5(r)}function x5(t){if(!Qc){mf&&(mf=clearTimeout(mf));var e=t-hl;e>24?(t<1/0&&(mf=setTimeout(Vw,t-ph.now()-Yg)),Qu&&(Qu=clearInterval(Qu))):(Qu||(q0=ph.now(),Qu=setInterval(XI,Fk)),Qc=1,Dk(Vw))}}function Hw(t,e,n){var r=new W0;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var JI=vk("start","end","cancel","interrupt"),QI=[],Bk=0,Gw=1,w5=2,Wp=3,Yw=4,_5=5,Vp=6;function Xg(t,e,n,r,i,o){var s=t.__transition;if(!s)t.__transition={};else if(n in s)return;ZI(t,n,{name:e,index:r,group:i,on:JI,tween:QI,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Bk})}function Ev(t,e){var n=Ji(t,e);if(n.state>Bk)throw new Error("too late; already scheduled");return n}function Mo(t,e){var n=Ji(t,e);if(n.state>Wp)throw new Error("too late; already running");return n}function Ji(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ZI(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=jk(o,0,n.time);function o(c){n.state=Gw,n.timer.restart(s,n.delay,n.time),n.delay<=c&&s(c-n.delay)}function s(c){var u,h,p,d;if(n.state!==Gw)return l();for(u in r)if(d=r[u],d.name===n.name){if(d.state===Wp)return Hw(s);d.state===Yw?(d.state=Vp,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[u]):+uw5&&r.state<_5,r.state=Vp,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete n[s]}o&&delete t.__transition}}function eF(t){return this.each(function(){tF(this,t)})}function nF(t,e){var n,r;return function(){var i=Mo(this,t),o=i.tween;if(o!==n){r=n=o;for(var s=0,a=r.length;s=0&&(e=e.slice(0,n)),!e||e==="start"})}function EF(t,e,n){var r,i,o=PF(e)?Ev:Mo;return function(){var s=o(this,t),a=s.on;a!==r&&(i=(r=a).copy()).on(e,n),s.on=i}}function MF(t,e){var n=this._id;return arguments.length<2?Ji(this.node(),n).on.on(t):this.each(EF(n,t,e))}function TF(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function OF(){return this.on("end.remove",TF(this._id))}function RF(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Cv(t));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s{var n;const e=(n=t==null?void 0:t.user)==null?void 0:n.user_id;return H.useEffect(()=>{},[e]),B.jsx(B.Fragment,{children:B.jsx(yk,{className:"container",width:"100%",children:B.jsxs(Qo,{container:!0,spacing:3,justifyContent:"center",className:"container",display:"flex",flexWrap:"wrap",children:[B.jsx(Qo,{item:!0,xs:12,sm:6,maxWidth:"60%",width:"40%",minHeight:"70px",children:B.jsxs(Ju,{style:{padding:"1rem",height:"70%"},children:[B.jsx(qs,{color:"light",variant:"contained",style:{border:"1px solid #f2c069"},onClick:()=>window.location.href=`/expenses/${e}`,children:"Track Expenses"}),B.jsx(Us,{children:"Easily track your daily expenses and categorize them to see where your money is going."})]})}),B.jsx(Qo,{item:!0,xs:12,sm:6,maxWidth:"60%",width:"40%",minHeight:"70px",children:B.jsxs(Ju,{style:{padding:"1rem",height:"70%"},children:[B.jsx(qs,{color:"light",variant:"contained",style:{border:"1px solid #f2c069"},onClick:()=>window.location.href=`/income/${e}`,children:"Track Income"}),B.jsx(Us,{children:"Monitor your income sources and keep track of your earnings."})]})}),B.jsx(Qo,{item:!0,xs:12,sm:6,maxWidth:"60%",width:"40%",minHeight:"70px",children:B.jsxs(Ju,{style:{padding:"1rem",height:"70%"},children:[B.jsx(qs,{color:"light",variant:"contained",style:{border:"1px solid #f2c069"},onClick:()=>window.location.href=`/savings/${e}`,children:"Set Saving Goals"}),B.jsx(Us,{children:"Set saving goals and track your progress to achieve financial freedom."})]})}),B.jsx(Qo,{item:!0,xs:12,sm:6,maxWidth:"60%",width:"40%",minHeight:"70px",children:B.jsxs(Ju,{style:{padding:"1rem",height:"70%"},children:[B.jsx(qs,{color:"light",variant:"contained",style:{border:"1px solid #f2c069"},children:"Set Budgets"}),B.jsx(Us,{children:"Set monthly budgets to manage your spending and save more money."})]})}),B.jsx(Qo,{item:!0,xs:12,sm:6,maxWidth:"60%",width:"40%",minHeight:"70px",children:B.jsxs(Ju,{style:{padding:"1rem",height:"70%"},children:[B.jsx(qs,{color:"light",variant:"contained",style:{border:"1px solid #f2c069"},onClick:()=>window.location.href=`/reports/${e}`,children:"View Reports"}),B.jsx(Us,{children:"Generate reports to analyze your spending habits and make informed financial decisions."})]})})]})})})},sD=t=>{const e=`${t.api_url}/auth/github`;return B.jsx("div",{className:"Login",children:B.jsx("center",{children:B.jsx("a",{href:e,children:B.jsx("button",{className:"headerBtn",children:" 🔒 Login via Github "})})})})};var qk={exports:{}};/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/(function(t){(function(){var e={}.hasOwnProperty;function n(){for(var o="",s=0;s{o.target===t&&(i(),e(o))},n+r)}function kD(t){t.offsetHeight}const Kw=t=>!t||typeof t=="function"?t:e=>{t.current=e};function AD(t,e){const n=Kw(t),r=Kw(e);return i=>{n&&n(i),r&&r(i)}}function jh(t,e){return H.useMemo(()=>AD(t,e),[t,e])}function CD(t){return t&&"setState"in t?kc.findDOMNode(t):t??null}const LD=Mr.forwardRef(({onEnter:t,onEntering:e,onEntered:n,onExit:r,onExiting:i,onExited:o,addEndListener:s,children:a,childRef:l,...c},u)=>{const h=H.useRef(null),p=jh(h,l),d=z=>{p(CD(z))},y=z=>I=>{z&&h.current&&z(h.current,I)},b=H.useCallback(y(t),[t]),_=H.useCallback(y(e),[e]),m=H.useCallback(y(n),[n]),w=H.useCallback(y(r),[r]),S=H.useCallback(y(i),[i]),A=H.useCallback(y(o),[o]),P=H.useCallback(y(s),[s]);return B.jsx(gs,{ref:u,...c,onEnter:b,onEntered:m,onEntering:_,onExit:w,onExited:A,onExiting:S,addEndListener:P,nodeRef:h,children:typeof a=="function"?(z,I)=>a(z,{...I,ref:d}):Mr.cloneElement(a,{ref:d})})});function ND(t){const e=H.useRef(t);return H.useEffect(()=>{e.current=t},[t]),e}function _o(t){const e=ND(t);return H.useCallback(function(...n){return e.current&&e.current(...n)},[e])}const PD=t=>H.forwardRef((e,n)=>B.jsx("div",{...e,ref:n,className:qe(e.className,t)}));function ED(){return H.useState(null)}function MD(){const t=H.useRef(!0),e=H.useRef(()=>t.current);return H.useEffect(()=>(t.current=!0,()=>{t.current=!1}),[]),e.current}function TD(t){const e=H.useRef(null);return H.useEffect(()=>{e.current=t}),e.current}const OD=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",RD=typeof document<"u",Jw=RD||OD?H.useLayoutEffect:H.useEffect,ID=["as","disabled"];function FD(t,e){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.indexOf(r)>=0)continue;n[r]=t[r]}return n}function DD(t){return!t||t.trim()==="#"}function Hk({tagName:t,disabled:e,href:n,target:r,rel:i,role:o,onClick:s,tabIndex:a=0,type:l}){t||(n!=null||r!=null||i!=null?t="a":t="button");const c={tagName:t};if(t==="button")return[{type:l||"button",disabled:e},c];const u=p=>{if((e||t==="a"&&DD(n))&&p.preventDefault(),e){p.stopPropagation();return}s==null||s(p)},h=p=>{p.key===" "&&(p.preventDefault(),u(p))};return t==="a"&&(n||(n="#"),e&&(n=void 0)),[{role:o??"button",disabled:void 0,tabIndex:e?void 0:a,href:n,target:t==="a"?r:void 0,"aria-disabled":e||void 0,rel:t==="a"?i:void 0,onClick:u,onKeyDown:h},c]}const jD=H.forwardRef((t,e)=>{let{as:n,disabled:r}=t,i=FD(t,ID);const[o,{tagName:s}]=Hk(Object.assign({tagName:n,disabled:r},i));return B.jsx(s,Object.assign({},i,o,{ref:e}))});jD.displayName="Button";function BD(t){return t.code==="Escape"||t.keyCode===27}function Gk(){const t=H.version.split(".");return{major:+t[0],minor:+t[1],patch:+t[2]}}function zD(t){if(!t||typeof t=="function")return null;const{major:e}=Gk();return e>=19?t.props.ref:t.ref}const $D={[Ds]:"show",[Ua]:"show"},Tv=H.forwardRef(({className:t,children:e,transitionClasses:n={},onEnter:r,...i},o)=>{const s={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...i},a=H.useCallback((u,h)=>{kD(u),r==null||r(u,h)},[r]),{major:l}=Gk(),c=l>=19?e.props.ref:e.ref;return B.jsx(LD,{ref:o,addEndListener:SD,...s,onEnter:a,childRef:c,children:(u,h)=>H.cloneElement(e,{...h,className:qe("fade",t,e.props.className,$D[u],n[u])})})});Tv.displayName="Fade";const UD={"aria-label":ss.string,onClick:ss.func,variant:ss.oneOf(["white"])},Ov=H.forwardRef(({className:t,variant:e,"aria-label":n="Close",...r},i)=>B.jsx("button",{ref:i,type:"button",className:qe("btn-close",e&&`btn-close-${e}`,t),"aria-label":n,...r}));Ov.displayName="CloseButton";Ov.propTypes=UD;const C5=H.forwardRef(({as:t,bsPrefix:e,variant:n="primary",size:r,active:i=!1,disabled:o=!1,className:s,...a},l)=>{const c=Fn(e,"btn"),[u,{tagName:h}]=Hk({tagName:t,disabled:o,...a}),p=h;return B.jsx(p,{...u,...a,ref:l,disabled:o,className:qe(s,c,i&&"active",n&&`${c}-${n}`,r&&`${c}-${r}`,a.href&&o&&"disabled")})});C5.displayName="Button";function qD(t){const e=H.useRef(t);return e.current=t,e}function Yk(t){const e=qD(t);H.useEffect(()=>()=>e.current(),[])}function WD(t,e){return H.Children.toArray(t).some(n=>H.isValidElement(n)&&n.type===e)}function VD({as:t,bsPrefix:e,className:n,...r}){e=Fn(e,"col");const i=uD(),o=fD(),s=[],a=[];return i.forEach(l=>{const c=r[l];delete r[l];let u,h,p;typeof c=="object"&&c!=null?{span:u,offset:h,order:p}=c:u=c;const d=l!==o?`-${l}`:"";u&&s.push(u===!0?`${e}${d}`:`${e}${d}-${u}`),p!=null&&a.push(`order${d}-${p}`),h!=null&&a.push(`offset${d}-${h}`)}),[{...r,className:qe(n,...s,...a)},{as:t,bsPrefix:e,spans:s}]}const Xk=H.forwardRef((t,e)=>{const[{className:n,...r},{as:i="div",bsPrefix:o,spans:s}]=VD(t);return B.jsx(i,{...r,ref:e,className:qe(n,!s.length&&o)})});Xk.displayName="Col";var HD=Function.prototype.bind.call(Function.prototype.call,[].slice);function ic(t,e){return HD(t.querySelectorAll(e))}function Qw(t,e){if(t.contains)return t.contains(e);if(t.compareDocumentPosition)return t===e||!!(t.compareDocumentPosition(e)&16)}const GD="data-rr-ui-";function YD(t){return`${GD}${t}`}const Kk=H.createContext(lu?window:void 0);Kk.Provider;function Rv(){return H.useContext(Kk)}const XD={type:ss.string,tooltip:ss.bool,as:ss.elementType},Qg=H.forwardRef(({as:t="div",className:e,type:n="valid",tooltip:r=!1,...i},o)=>B.jsx(t,{...i,ref:o,className:qe(e,`${n}-${r?"tooltip":"feedback"}`)}));Qg.displayName="Feedback";Qg.propTypes=XD;const ds=H.createContext({}),Iv=H.forwardRef(({id:t,bsPrefix:e,className:n,type:r="checkbox",isValid:i=!1,isInvalid:o=!1,as:s="input",...a},l)=>{const{controlId:c}=H.useContext(ds);return e=Fn(e,"form-check-input"),B.jsx(s,{...a,ref:l,type:r,id:t||c,className:qe(n,e,i&&"is-valid",o&&"is-invalid")})});Iv.displayName="FormCheckInput";const H0=H.forwardRef(({bsPrefix:t,className:e,htmlFor:n,...r},i)=>{const{controlId:o}=H.useContext(ds);return t=Fn(t,"form-check-label"),B.jsx("label",{...r,ref:i,htmlFor:n||o,className:qe(e,t)})});H0.displayName="FormCheckLabel";const Jk=H.forwardRef(({id:t,bsPrefix:e,bsSwitchPrefix:n,inline:r=!1,reverse:i=!1,disabled:o=!1,isValid:s=!1,isInvalid:a=!1,feedbackTooltip:l=!1,feedback:c,feedbackType:u,className:h,style:p,title:d="",type:y="checkbox",label:b,children:_,as:m="input",...w},S)=>{e=Fn(e,"form-check"),n=Fn(n,"form-switch");const{controlId:A}=H.useContext(ds),P=H.useMemo(()=>({controlId:t||A}),[A,t]),z=!_&&b!=null&&b!==!1||WD(_,H0),I=B.jsx(Iv,{...w,type:y==="switch"?"checkbox":y,ref:S,isValid:s,isInvalid:a,disabled:o,as:m});return B.jsx(ds.Provider,{value:P,children:B.jsx("div",{style:p,className:qe(h,z&&e,r&&`${e}-inline`,i&&`${e}-reverse`,y==="switch"&&n),children:_||B.jsxs(B.Fragment,{children:[I,z&&B.jsx(H0,{title:d,children:b}),c&&B.jsx(Qg,{type:u,tooltip:l,children:c})]})})})});Jk.displayName="FormCheck";const G0=Object.assign(Jk,{Input:Iv,Label:H0}),Qk=H.forwardRef(({bsPrefix:t,type:e,size:n,htmlSize:r,id:i,className:o,isValid:s=!1,isInvalid:a=!1,plaintext:l,readOnly:c,as:u="input",...h},p)=>{const{controlId:d}=H.useContext(ds);return t=Fn(t,"form-control"),B.jsx(u,{...h,type:e,size:r,ref:p,readOnly:c,id:i||d,className:qe(o,l?`${t}-plaintext`:t,n&&`${t}-${n}`,e==="color"&&`${t}-color`,s&&"is-valid",a&&"is-invalid")})});Qk.displayName="FormControl";const KD=Object.assign(Qk,{Feedback:Qg}),Zk=H.forwardRef(({className:t,bsPrefix:e,as:n="div",...r},i)=>(e=Fn(e,"form-floating"),B.jsx(n,{ref:i,className:qe(t,e),...r})));Zk.displayName="FormFloating";const Fv=H.forwardRef(({controlId:t,as:e="div",...n},r)=>{const i=H.useMemo(()=>({controlId:t}),[t]);return B.jsx(ds.Provider,{value:i,children:B.jsx(e,{...n,ref:r})})});Fv.displayName="FormGroup";const tA=H.forwardRef(({as:t="label",bsPrefix:e,column:n=!1,visuallyHidden:r=!1,className:i,htmlFor:o,...s},a)=>{const{controlId:l}=H.useContext(ds);e=Fn(e,"form-label");let c="col-form-label";typeof n=="string"&&(c=`${c} ${c}-${n}`);const u=qe(i,e,r&&"visually-hidden",n&&c);return o=o||l,n?B.jsx(Xk,{ref:a,as:"label",className:u,htmlFor:o,...s}):B.jsx(t,{ref:a,className:u,htmlFor:o,...s})});tA.displayName="FormLabel";const eA=H.forwardRef(({bsPrefix:t,className:e,id:n,...r},i)=>{const{controlId:o}=H.useContext(ds);return t=Fn(t,"form-range"),B.jsx("input",{...r,type:"range",ref:i,className:qe(e,t),id:n||o})});eA.displayName="FormRange";const nA=H.forwardRef(({bsPrefix:t,size:e,htmlSize:n,className:r,isValid:i=!1,isInvalid:o=!1,id:s,...a},l)=>{const{controlId:c}=H.useContext(ds);return t=Fn(t,"form-select"),B.jsx("select",{...a,size:n,ref:l,className:qe(r,t,e&&`${t}-${e}`,i&&"is-valid",o&&"is-invalid"),id:s||c})});nA.displayName="FormSelect";const rA=H.forwardRef(({bsPrefix:t,className:e,as:n="small",muted:r,...i},o)=>(t=Fn(t,"form-text"),B.jsx(n,{...i,ref:o,className:qe(e,t,r&&"text-muted")})));rA.displayName="FormText";const iA=H.forwardRef((t,e)=>B.jsx(G0,{...t,ref:e,type:"switch"}));iA.displayName="Switch";const JD=Object.assign(iA,{Input:G0.Input,Label:G0.Label}),oA=H.forwardRef(({bsPrefix:t,className:e,children:n,controlId:r,label:i,...o},s)=>(t=Fn(t,"form-floating"),B.jsxs(Fv,{ref:s,className:qe(e,t),controlId:r,...o,children:[n,B.jsx("label",{htmlFor:r,children:i})]})));oA.displayName="FloatingLabel";const QD={_ref:ss.any,validated:ss.bool,as:ss.elementType},Dv=H.forwardRef(({className:t,validated:e,as:n="form",...r},i)=>B.jsx(n,{...r,ref:i,className:qe(t,e&&"was-validated")}));Dv.displayName="Form";Dv.propTypes=QD;const Tn=Object.assign(Dv,{Group:Fv,Control:KD,Floating:Zk,Check:G0,Switch:JD,Label:tA,Text:rA,Range:eA,Select:nA,FloatingLabel:oA});var ap;function Zw(t){if((!ap&&ap!==0||t)&&lu){var e=document.createElement("div");e.style.position="absolute",e.style.top="-9999px",e.style.width="50px",e.style.height="50px",e.style.overflow="scroll",document.body.appendChild(e),ap=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return ap}function Im(t){t===void 0&&(t=Jg());try{var e=t.activeElement;return!e||!e.nodeName?null:e}catch{return t.body}}function ZD(t=document){const e=t.defaultView;return Math.abs(e.innerWidth-t.documentElement.clientWidth)}const t3=YD("modal-open");class jv{constructor({ownerDocument:e,handleContainerOverflow:n=!0,isRTL:r=!1}={}){this.handleContainerOverflow=n,this.isRTL=r,this.modals=[],this.ownerDocument=e}getScrollbarWidth(){return ZD(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(e){}removeModalAttributes(e){}setContainerStyle(e){const n={overflow:"hidden"},r=this.isRTL?"paddingLeft":"paddingRight",i=this.getElement();e.style={overflow:i.style.overflow,[r]:i.style[r]},e.scrollBarWidth&&(n[r]=`${parseInt(el(i,r)||"0",10)+e.scrollBarWidth}px`),i.setAttribute(t3,""),el(i,n)}reset(){[...this.modals].forEach(e=>this.remove(e))}removeContainerStyle(e){const n=this.getElement();n.removeAttribute(t3),Object.assign(n.style,e.style)}add(e){let n=this.modals.indexOf(e);return n!==-1||(n=this.modals.length,this.modals.push(e),this.setModalAttributes(e),n!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),n}remove(e){const n=this.modals.indexOf(e);n!==-1&&(this.modals.splice(n,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(e))}isTopModal(e){return!!this.modals.length&&this.modals[this.modals.length-1]===e}}const Fm=(t,e)=>lu?t==null?(e||Jg()).body:(typeof t=="function"&&(t=t()),t&&"current"in t&&(t=t.current),t&&("nodeType"in t||t.getBoundingClientRect)?t:null):null;function tj(t,e){const n=Rv(),[r,i]=H.useState(()=>Fm(t,n==null?void 0:n.document));if(!r){const o=Fm(t);o&&i(o)}return H.useEffect(()=>{},[e,r]),H.useEffect(()=>{const o=Fm(t);o!==r&&i(o)},[t,r]),r}function ej({children:t,in:e,onExited:n,mountOnEnter:r,unmountOnExit:i}){const o=H.useRef(null),s=H.useRef(e),a=_o(n);H.useEffect(()=>{e?s.current=!0:a(o.current)},[e,a]);const l=jh(o,t.ref),c=H.cloneElement(t,{ref:l});return e?c:i||!s.current&&r?null:c}const nj=["onEnter","onEntering","onEntered","onExit","onExiting","onExited","addEndListener","children"];function rj(t,e){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.indexOf(r)>=0)continue;n[r]=t[r]}return n}function ij(t){let{onEnter:e,onEntering:n,onEntered:r,onExit:i,onExiting:o,onExited:s,addEndListener:a,children:l}=t,c=rj(t,nj);const u=H.useRef(null),h=jh(u,zD(l)),p=A=>P=>{A&&u.current&&A(u.current,P)},d=H.useCallback(p(e),[e]),y=H.useCallback(p(n),[n]),b=H.useCallback(p(r),[r]),_=H.useCallback(p(i),[i]),m=H.useCallback(p(o),[o]),w=H.useCallback(p(s),[s]),S=H.useCallback(p(a),[a]);return Object.assign({},c,{nodeRef:u},e&&{onEnter:d},n&&{onEntering:y},r&&{onEntered:b},i&&{onExit:_},o&&{onExiting:m},s&&{onExited:w},a&&{addEndListener:S},{children:typeof l=="function"?(A,P)=>l(A,Object.assign({},P,{ref:h})):H.cloneElement(l,{ref:h})})}const oj=["component"];function sj(t,e){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.indexOf(r)>=0)continue;n[r]=t[r]}return n}const aj=H.forwardRef((t,e)=>{let{component:n}=t,r=sj(t,oj);const i=ij(r);return B.jsx(n,Object.assign({ref:e},i))});function lj({in:t,onTransition:e}){const n=H.useRef(null),r=H.useRef(!0),i=_o(e);return Jw(()=>{if(!n.current)return;let o=!1;return i({in:t,element:n.current,initial:r.current,isStale:()=>o}),()=>{o=!0}},[t,i]),Jw(()=>(r.current=!1,()=>{r.current=!0}),[]),n}function cj({children:t,in:e,onExited:n,onEntered:r,transition:i}){const[o,s]=H.useState(!e);e&&o&&s(!1);const a=lj({in:!!e,onTransition:c=>{const u=()=>{c.isStale()||(c.in?r==null||r(c.element,c.initial):(s(!0),n==null||n(c.element)))};Promise.resolve(i(c)).then(u,h=>{throw c.in||s(!0),h})}}),l=jh(a,t.ref);return o&&!e?null:H.cloneElement(t,{ref:l})}function e3(t,e,n){return t?B.jsx(aj,Object.assign({},n,{component:t})):e?B.jsx(cj,Object.assign({},n,{transition:e})):B.jsx(ej,Object.assign({},n))}const uj=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function fj(t,e){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.indexOf(r)>=0)continue;n[r]=t[r]}return n}let Dm;function hj(t){return Dm||(Dm=new jv({ownerDocument:t==null?void 0:t.document})),Dm}function dj(t){const e=Rv(),n=t||hj(e),r=H.useRef({dialog:null,backdrop:null});return Object.assign(r.current,{add:()=>n.add(r.current),remove:()=>n.remove(r.current),isTopModal:()=>n.isTopModal(r.current),setDialogRef:H.useCallback(i=>{r.current.dialog=i},[]),setBackdropRef:H.useCallback(i=>{r.current.backdrop=i},[])})}const sA=H.forwardRef((t,e)=>{let{show:n=!1,role:r="dialog",className:i,style:o,children:s,backdrop:a=!0,keyboard:l=!0,onBackdropClick:c,onEscapeKeyDown:u,transition:h,runTransition:p,backdropTransition:d,runBackdropTransition:y,autoFocus:b=!0,enforceFocus:_=!0,restoreFocus:m=!0,restoreFocusOptions:w,renderDialog:S,renderBackdrop:A=dt=>B.jsx("div",Object.assign({},dt)),manager:P,container:z,onShow:I,onHide:R=()=>{},onExit:X,onExited:C,onExiting:L,onEnter:T,onEntering:W,onEntered:V}=t,ot=fj(t,uj);const rt=Rv(),lt=tj(z),Y=dj(P),et=MD(),at=TD(n),[xt,M]=H.useState(!n),$=H.useRef(null);H.useImperativeHandle(e,()=>Y,[Y]),lu&&!at&&n&&($.current=Im(rt==null?void 0:rt.document)),n&&xt&&M(!1);const q=_o(()=>{if(Y.add(),Pt.current=V0(document,"keydown",gt),pt.current=V0(document,"focus",()=>setTimeout(Z),!0),I&&I(),b){var dt,K;const Xt=Im((dt=(K=Y.dialog)==null?void 0:K.ownerDocument)!=null?dt:rt==null?void 0:rt.document);Y.dialog&&Xt&&!Qw(Y.dialog,Xt)&&($.current=Xt,Y.dialog.focus())}}),J=_o(()=>{if(Y.remove(),Pt.current==null||Pt.current(),pt.current==null||pt.current(),m){var dt;(dt=$.current)==null||dt.focus==null||dt.focus(w),$.current=null}});H.useEffect(()=>{!n||!lt||q()},[n,lt,q]),H.useEffect(()=>{xt&&J()},[xt,J]),Yk(()=>{J()});const Z=_o(()=>{if(!_||!et()||!Y.isTopModal())return;const dt=Im(rt==null?void 0:rt.document);Y.dialog&&dt&&!Qw(Y.dialog,dt)&&Y.dialog.focus()}),ut=_o(dt=>{dt.target===dt.currentTarget&&(c==null||c(dt),a===!0&&R())}),gt=_o(dt=>{l&&BD(dt)&&Y.isTopModal()&&(u==null||u(dt),dt.defaultPrevented||R())}),pt=H.useRef(),Pt=H.useRef(),Lt=(...dt)=>{M(!0),C==null||C(...dt)};if(!lt)return null;const Ot=Object.assign({role:r,ref:Y.setDialogRef,"aria-modal":r==="dialog"?!0:void 0},ot,{style:o,className:i,tabIndex:-1});let Tt=S?S(Ot):B.jsx("div",Object.assign({},Ot,{children:H.cloneElement(s,{role:"document"})}));Tt=e3(h,p,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!n,onExit:X,onExiting:L,onExited:Lt,onEnter:T,onEntering:W,onEntered:V,children:Tt});let Ht=null;return a&&(Ht=A({ref:Y.setBackdropRef,onClick:ut}),Ht=e3(d,y,{in:!!n,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:Ht})),B.jsx(B.Fragment,{children:kc.createPortal(B.jsxs(B.Fragment,{children:[Ht,Tt]}),lt)})});sA.displayName="Modal";const pj=Object.assign(sA,{Manager:jv}),oc={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class gj extends jv{adjustAndStore(e,n,r){const i=n.style[e];n.dataset[e]=i,el(n,{[e]:`${parseFloat(el(n,e))+r}px`})}restore(e,n){const r=n.dataset[e];r!==void 0&&(delete n.dataset[e],el(n,{[e]:r}))}setContainerStyle(e){super.setContainerStyle(e);const n=this.getElement();if(ZT(n,"modal-open"),!e.scrollBarWidth)return;const r=this.isRTL?"paddingLeft":"paddingRight",i=this.isRTL?"marginLeft":"marginRight";ic(n,oc.FIXED_CONTENT).forEach(o=>this.adjustAndStore(r,o,e.scrollBarWidth)),ic(n,oc.STICKY_CONTENT).forEach(o=>this.adjustAndStore(i,o,-e.scrollBarWidth)),ic(n,oc.NAVBAR_TOGGLER).forEach(o=>this.adjustAndStore(i,o,e.scrollBarWidth))}removeContainerStyle(e){super.removeContainerStyle(e);const n=this.getElement();tO(n,"modal-open");const r=this.isRTL?"paddingLeft":"paddingRight",i=this.isRTL?"marginLeft":"marginRight";ic(n,oc.FIXED_CONTENT).forEach(o=>this.restore(r,o)),ic(n,oc.STICKY_CONTENT).forEach(o=>this.restore(i,o)),ic(n,oc.NAVBAR_TOGGLER).forEach(o=>this.restore(i,o))}}let jm;function mj(t){return jm||(jm=new gj(t)),jm}const aA=H.forwardRef(({className:t,bsPrefix:e,as:n="div",...r},i)=>(e=Fn(e,"modal-body"),B.jsx(n,{ref:i,className:qe(t,e),...r})));aA.displayName="ModalBody";const lA=H.createContext({onHide(){}}),Bv=H.forwardRef(({bsPrefix:t,className:e,contentClassName:n,centered:r,size:i,fullscreen:o,children:s,scrollable:a,...l},c)=>{t=Fn(t,"modal");const u=`${t}-dialog`,h=typeof o=="string"?`${t}-fullscreen-${o}`:`${t}-fullscreen`;return B.jsx("div",{...l,ref:c,className:qe(u,e,i&&`${t}-${i}`,r&&`${u}-centered`,a&&`${u}-scrollable`,o&&h),children:B.jsx("div",{className:qe(`${t}-content`,n),children:s})})});Bv.displayName="ModalDialog";const cA=H.forwardRef(({className:t,bsPrefix:e,as:n="div",...r},i)=>(e=Fn(e,"modal-footer"),B.jsx(n,{ref:i,className:qe(t,e),...r})));cA.displayName="ModalFooter";const yj=H.forwardRef(({closeLabel:t="Close",closeVariant:e,closeButton:n=!1,onHide:r,children:i,...o},s)=>{const a=H.useContext(lA),l=_o(()=>{a==null||a.onHide(),r==null||r()});return B.jsxs("div",{ref:s,...o,children:[i,n&&B.jsx(Ov,{"aria-label":t,variant:e,onClick:l})]})}),uA=H.forwardRef(({bsPrefix:t,className:e,closeLabel:n="Close",closeButton:r=!1,...i},o)=>(t=Fn(t,"modal-header"),B.jsx(yj,{ref:o,...i,className:qe(e,t),closeLabel:n,closeButton:r})));uA.displayName="ModalHeader";const vj=PD("h4"),fA=H.forwardRef(({className:t,bsPrefix:e,as:n=vj,...r},i)=>(e=Fn(e,"modal-title"),B.jsx(n,{ref:i,className:qe(t,e),...r})));fA.displayName="ModalTitle";function bj(t){return B.jsx(Tv,{...t,timeout:null})}function xj(t){return B.jsx(Tv,{...t,timeout:null})}const hA=H.forwardRef(({bsPrefix:t,className:e,style:n,dialogClassName:r,contentClassName:i,children:o,dialogAs:s=Bv,"data-bs-theme":a,"aria-labelledby":l,"aria-describedby":c,"aria-label":u,show:h=!1,animation:p=!0,backdrop:d=!0,keyboard:y=!0,onEscapeKeyDown:b,onShow:_,onHide:m,container:w,autoFocus:S=!0,enforceFocus:A=!0,restoreFocus:P=!0,restoreFocusOptions:z,onEntered:I,onExit:R,onExiting:X,onEnter:C,onEntering:L,onExited:T,backdropClassName:W,manager:V,...ot},rt)=>{const[lt,Y]=H.useState({}),[et,at]=H.useState(!1),xt=H.useRef(!1),M=H.useRef(!1),$=H.useRef(null),[q,J]=ED(),Z=jh(rt,J),ut=_o(m),gt=hD();t=Fn(t,"modal");const pt=H.useMemo(()=>({onHide:ut}),[ut]);function Pt(){return V||mj({isRTL:gt})}function Lt(Bt){if(!lu)return;const ue=Pt().getScrollbarWidth()>0,we=Bt.scrollHeight>Jg(Bt).documentElement.clientHeight;Y({paddingRight:ue&&!we?Zw():void 0,paddingLeft:!ue&&we?Zw():void 0})}const Ot=_o(()=>{q&&Lt(q.dialog)});Yk(()=>{A5(window,"resize",Ot),$.current==null||$.current()});const Tt=()=>{xt.current=!0},Ht=Bt=>{xt.current&&q&&Bt.target===q.dialog&&(M.current=!0),xt.current=!1},dt=()=>{at(!0),$.current=Vk(q.dialog,()=>{at(!1)})},K=Bt=>{Bt.target===Bt.currentTarget&&dt()},Xt=Bt=>{if(d==="static"){K(Bt);return}if(M.current||Bt.target!==Bt.currentTarget){M.current=!1;return}m==null||m()},qt=Bt=>{y?b==null||b(Bt):(Bt.preventDefault(),d==="static"&&dt())},At=(Bt,ue)=>{Bt&&Lt(Bt),C==null||C(Bt,ue)},Rt=Bt=>{$.current==null||$.current(),R==null||R(Bt)},Dt=(Bt,ue)=>{L==null||L(Bt,ue),Wk(window,"resize",Ot)},It=Bt=>{Bt&&(Bt.style.display=""),T==null||T(Bt),A5(window,"resize",Ot)},Nt=H.useCallback(Bt=>B.jsx("div",{...Bt,className:qe(`${t}-backdrop`,W,!p&&"show")}),[p,W,t]),Kt={...n,...lt};Kt.display="block";const ee=Bt=>B.jsx("div",{role:"dialog",...Bt,style:Kt,className:qe(e,t,et&&`${t}-static`,!p&&"show"),onClick:d?Xt:void 0,onMouseUp:Ht,"data-bs-theme":a,"aria-label":u,"aria-labelledby":l,"aria-describedby":c,children:B.jsx(s,{...ot,onMouseDown:Tt,className:r,contentClassName:i,children:o})});return B.jsx(lA.Provider,{value:pt,children:B.jsx(pj,{show:h,ref:Z,backdrop:d,container:w,keyboard:!0,autoFocus:S,enforceFocus:A,restoreFocus:P,restoreFocusOptions:z,onEscapeKeyDown:qt,onShow:_,onHide:m,onEnter:At,onEntering:Dt,onEntered:I,onExit:Rt,onExiting:X,onExited:It,manager:Pt(),transition:p?bj:void 0,backdropTransition:p?xj:void 0,renderBackdrop:Nt,renderDialog:ee})})});hA.displayName="Modal";const Zu=Object.assign(hA,{Body:aA,Header:uA,Title:fA,Footer:cA,Dialog:Bv,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150});function dA(t,e){return function(){return t.apply(e,arguments)}}const{toString:wj}=Object.prototype,{getPrototypeOf:zv}=Object,Zg=(t=>e=>{const n=wj.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Qi=t=>(t=t.toLowerCase(),e=>Zg(e)===t),t1=t=>e=>typeof e===t,{isArray:cu}=Array,gh=t1("undefined");function _j(t){return t!==null&&!gh(t)&&t.constructor!==null&&!gh(t.constructor)&&ei(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const pA=Qi("ArrayBuffer");function Sj(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&pA(t.buffer),e}const kj=t1("string"),ei=t1("function"),gA=t1("number"),e1=t=>t!==null&&typeof t=="object",Aj=t=>t===!0||t===!1,Hp=t=>{if(Zg(t)!=="object")return!1;const e=zv(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},Cj=Qi("Date"),Lj=Qi("File"),Nj=Qi("Blob"),Pj=Qi("FileList"),Ej=t=>e1(t)&&ei(t.pipe),Mj=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||ei(t.append)&&((e=Zg(t))==="formdata"||e==="object"&&ei(t.toString)&&t.toString()==="[object FormData]"))},Tj=Qi("URLSearchParams"),[Oj,Rj,Ij,Fj]=["ReadableStream","Request","Response","Headers"].map(Qi),Dj=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Bh(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,i;if(typeof t!="object"&&(t=[t]),cu(t))for(r=0,i=t.length;r0;)if(i=n[r],e===i.toLowerCase())return i;return null}const Ka=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,yA=t=>!gh(t)&&t!==Ka;function L5(){const{caseless:t}=yA(this)&&this||{},e={},n=(r,i)=>{const o=t&&mA(e,i)||i;Hp(e[o])&&Hp(r)?e[o]=L5(e[o],r):Hp(r)?e[o]=L5({},r):cu(r)?e[o]=r.slice():e[o]=r};for(let r=0,i=arguments.length;r(Bh(e,(i,o)=>{n&&ei(i)?t[o]=dA(i,n):t[o]=i},{allOwnKeys:r}),t),Bj=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),zj=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},$j=(t,e,n,r)=>{let i,o,s;const a={};if(e=e||{},t==null)return e;do{for(i=Object.getOwnPropertyNames(t),o=i.length;o-- >0;)s=i[o],(!r||r(s,t,e))&&!a[s]&&(e[s]=t[s],a[s]=!0);t=n!==!1&&zv(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},Uj=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},qj=t=>{if(!t)return null;if(cu(t))return t;let e=t.length;if(!gA(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Wj=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&zv(Uint8Array)),Vj=(t,e)=>{const r=(t&&t[Symbol.iterator]).call(t);let i;for(;(i=r.next())&&!i.done;){const o=i.value;e.call(t,o[0],o[1])}},Hj=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},Gj=Qi("HTMLFormElement"),Yj=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,i){return r.toUpperCase()+i}),n3=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Xj=Qi("RegExp"),vA=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};Bh(n,(i,o)=>{let s;(s=e(i,o,t))!==!1&&(r[o]=s||i)}),Object.defineProperties(t,r)},Kj=t=>{vA(t,(e,n)=>{if(ei(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(ei(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Jj=(t,e)=>{const n={},r=i=>{i.forEach(o=>{n[o]=!0})};return cu(t)?r(t):r(String(t).split(e)),n},Qj=()=>{},Zj=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e,Bm="abcdefghijklmnopqrstuvwxyz",r3="0123456789",bA={DIGIT:r3,ALPHA:Bm,ALPHA_DIGIT:Bm+Bm.toUpperCase()+r3},t9=(t=16,e=bA.ALPHA_DIGIT)=>{let n="";const{length:r}=e;for(;t--;)n+=e[Math.random()*r|0];return n};function e9(t){return!!(t&&ei(t.append)&&t[Symbol.toStringTag]==="FormData"&&t[Symbol.iterator])}const n9=t=>{const e=new Array(10),n=(r,i)=>{if(e1(r)){if(e.indexOf(r)>=0)return;if(!("toJSON"in r)){e[i]=r;const o=cu(r)?[]:{};return Bh(r,(s,a)=>{const l=n(s,i+1);!gh(l)&&(o[a]=l)}),e[i]=void 0,o}}return r};return n(t,0)},r9=Qi("AsyncFunction"),i9=t=>t&&(e1(t)||ei(t))&&ei(t.then)&&ei(t.catch),xA=((t,e)=>t?setImmediate:e?((n,r)=>(Ka.addEventListener("message",({source:i,data:o})=>{i===Ka&&o===n&&r.length&&r.shift()()},!1),i=>{r.push(i),Ka.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",ei(Ka.postMessage)),o9=typeof queueMicrotask<"u"?queueMicrotask.bind(Ka):typeof process<"u"&&process.nextTick||xA,yt={isArray:cu,isArrayBuffer:pA,isBuffer:_j,isFormData:Mj,isArrayBufferView:Sj,isString:kj,isNumber:gA,isBoolean:Aj,isObject:e1,isPlainObject:Hp,isReadableStream:Oj,isRequest:Rj,isResponse:Ij,isHeaders:Fj,isUndefined:gh,isDate:Cj,isFile:Lj,isBlob:Nj,isRegExp:Xj,isFunction:ei,isStream:Ej,isURLSearchParams:Tj,isTypedArray:Wj,isFileList:Pj,forEach:Bh,merge:L5,extend:jj,trim:Dj,stripBOM:Bj,inherits:zj,toFlatObject:$j,kindOf:Zg,kindOfTest:Qi,endsWith:Uj,toArray:qj,forEachEntry:Vj,matchAll:Hj,isHTMLForm:Gj,hasOwnProperty:n3,hasOwnProp:n3,reduceDescriptors:vA,freezeMethods:Kj,toObjectSet:Jj,toCamelCase:Yj,noop:Qj,toFiniteNumber:Zj,findKey:mA,global:Ka,isContextDefined:yA,ALPHABET:bA,generateString:t9,isSpecCompliantForm:e9,toJSONObject:n9,isAsyncFn:r9,isThenable:i9,setImmediate:xA,asap:o9};function le(t,e,n,r,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i,this.status=i.status?i.status:null)}yt.inherits(le,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:yt.toJSONObject(this.config),code:this.code,status:this.status}}});const wA=le.prototype,_A={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{_A[t]={value:t}});Object.defineProperties(le,_A);Object.defineProperty(wA,"isAxiosError",{value:!0});le.from=(t,e,n,r,i,o)=>{const s=Object.create(wA);return yt.toFlatObject(t,s,function(l){return l!==Error.prototype},a=>a!=="isAxiosError"),le.call(s,t.message,e,n,r,i),s.cause=t,s.name=t.name,o&&Object.assign(s,o),s};const s9=null;function N5(t){return yt.isPlainObject(t)||yt.isArray(t)}function SA(t){return yt.endsWith(t,"[]")?t.slice(0,-2):t}function i3(t,e,n){return t?t.concat(e).map(function(i,o){return i=SA(i),!n&&o?"["+i+"]":i}).join(n?".":""):e}function a9(t){return yt.isArray(t)&&!t.some(N5)}const l9=yt.toFlatObject(yt,{},null,function(e){return/^is[A-Z]/.test(e)});function n1(t,e,n){if(!yt.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=yt.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(b,_){return!yt.isUndefined(_[b])});const r=n.metaTokens,i=n.visitor||u,o=n.dots,s=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&yt.isSpecCompliantForm(e);if(!yt.isFunction(i))throw new TypeError("visitor must be a function");function c(y){if(y===null)return"";if(yt.isDate(y))return y.toISOString();if(!l&&yt.isBlob(y))throw new le("Blob is not supported. Use a Buffer instead.");return yt.isArrayBuffer(y)||yt.isTypedArray(y)?l&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function u(y,b,_){let m=y;if(y&&!_&&typeof y=="object"){if(yt.endsWith(b,"{}"))b=r?b:b.slice(0,-2),y=JSON.stringify(y);else if(yt.isArray(y)&&a9(y)||(yt.isFileList(y)||yt.endsWith(b,"[]"))&&(m=yt.toArray(y)))return b=SA(b),m.forEach(function(S,A){!(yt.isUndefined(S)||S===null)&&e.append(s===!0?i3([b],A,o):s===null?b:b+"[]",c(S))}),!1}return N5(y)?!0:(e.append(i3(_,b,o),c(y)),!1)}const h=[],p=Object.assign(l9,{defaultVisitor:u,convertValue:c,isVisitable:N5});function d(y,b){if(!yt.isUndefined(y)){if(h.indexOf(y)!==-1)throw Error("Circular reference detected in "+b.join("."));h.push(y),yt.forEach(y,function(m,w){(!(yt.isUndefined(m)||m===null)&&i.call(e,m,yt.isString(w)?w.trim():w,b,p))===!0&&d(m,b?b.concat(w):[w])}),h.pop()}}if(!yt.isObject(t))throw new TypeError("data must be an object");return d(t),e}function o3(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function $v(t,e){this._pairs=[],t&&n1(t,this,e)}const kA=$v.prototype;kA.append=function(e,n){this._pairs.push([e,n])};kA.toString=function(e){const n=e?function(r){return e.call(this,r,o3)}:o3;return this._pairs.map(function(i){return n(i[0])+"="+n(i[1])},"").join("&")};function c9(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function AA(t,e,n){if(!e)return t;const r=n&&n.encode||c9,i=n&&n.serialize;let o;if(i?o=i(e,n):o=yt.isURLSearchParams(e)?e.toString():new $v(e,n).toString(r),o){const s=t.indexOf("#");s!==-1&&(t=t.slice(0,s)),t+=(t.indexOf("?")===-1?"?":"&")+o}return t}class s3{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){yt.forEach(this.handlers,function(r){r!==null&&e(r)})}}const CA={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},u9=typeof URLSearchParams<"u"?URLSearchParams:$v,f9=typeof FormData<"u"?FormData:null,h9=typeof Blob<"u"?Blob:null,d9={isBrowser:!0,classes:{URLSearchParams:u9,FormData:f9,Blob:h9},protocols:["http","https","file","blob","url","data"]},Uv=typeof window<"u"&&typeof document<"u",P5=typeof navigator=="object"&&navigator||void 0,p9=Uv&&(!P5||["ReactNative","NativeScript","NS"].indexOf(P5.product)<0),g9=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",m9=Uv&&window.location.href||"http://localhost",y9=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Uv,hasStandardBrowserEnv:p9,hasStandardBrowserWebWorkerEnv:g9,navigator:P5,origin:m9},Symbol.toStringTag,{value:"Module"})),Dr={...y9,...d9};function v9(t,e){return n1(t,new Dr.classes.URLSearchParams,Object.assign({visitor:function(n,r,i,o){return Dr.isNode&&yt.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},e))}function b9(t){return yt.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function x9(t){const e={},n=Object.keys(t);let r;const i=n.length;let o;for(r=0;r=n.length;return s=!s&&yt.isArray(i)?i.length:s,l?(yt.hasOwnProp(i,s)?i[s]=[i[s],r]:i[s]=r,!a):((!i[s]||!yt.isObject(i[s]))&&(i[s]=[]),e(n,r,i[s],o)&&yt.isArray(i[s])&&(i[s]=x9(i[s])),!a)}if(yt.isFormData(t)&&yt.isFunction(t.entries)){const n={};return yt.forEachEntry(t,(r,i)=>{e(b9(r),i,n,0)}),n}return null}function w9(t,e,n){if(yt.isString(t))try{return(e||JSON.parse)(t),yt.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(0,JSON.stringify)(t)}const zh={transitional:CA,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",i=r.indexOf("application/json")>-1,o=yt.isObject(e);if(o&&yt.isHTMLForm(e)&&(e=new FormData(e)),yt.isFormData(e))return i?JSON.stringify(LA(e)):e;if(yt.isArrayBuffer(e)||yt.isBuffer(e)||yt.isStream(e)||yt.isFile(e)||yt.isBlob(e)||yt.isReadableStream(e))return e;if(yt.isArrayBufferView(e))return e.buffer;if(yt.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return v9(e,this.formSerializer).toString();if((a=yt.isFileList(e))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return n1(a?{"files[]":e}:e,l&&new l,this.formSerializer)}}return o||i?(n.setContentType("application/json",!1),w9(e)):e}],transformResponse:[function(e){const n=this.transitional||zh.transitional,r=n&&n.forcedJSONParsing,i=this.responseType==="json";if(yt.isResponse(e)||yt.isReadableStream(e))return e;if(e&&yt.isString(e)&&(r&&!this.responseType||i)){const s=!(n&&n.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(a){if(s)throw a.name==="SyntaxError"?le.from(a,le.ERR_BAD_RESPONSE,this,null,this.response):a}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Dr.classes.FormData,Blob:Dr.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};yt.forEach(["delete","get","head","post","put","patch"],t=>{zh.headers[t]={}});const _9=yt.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),S9=t=>{const e={};let n,r,i;return t&&t.split(` +`).forEach(function(s){i=s.indexOf(":"),n=s.substring(0,i).trim().toLowerCase(),r=s.substring(i+1).trim(),!(!n||e[n]&&_9[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},a3=Symbol("internals");function tf(t){return t&&String(t).trim().toLowerCase()}function Gp(t){return t===!1||t==null?t:yt.isArray(t)?t.map(Gp):String(t)}function k9(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const A9=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function zm(t,e,n,r,i){if(yt.isFunction(r))return r.call(this,e,n);if(i&&(e=n),!!yt.isString(e)){if(yt.isString(r))return e.indexOf(r)!==-1;if(yt.isRegExp(r))return r.test(e)}}function C9(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function L9(t,e){const n=yt.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(i,o,s){return this[r].call(this,e,i,o,s)},configurable:!0})})}class jr{constructor(e){e&&this.set(e)}set(e,n,r){const i=this;function o(a,l,c){const u=tf(l);if(!u)throw new Error("header name must be a non-empty string");const h=yt.findKey(i,u);(!h||i[h]===void 0||c===!0||c===void 0&&i[h]!==!1)&&(i[h||l]=Gp(a))}const s=(a,l)=>yt.forEach(a,(c,u)=>o(c,u,l));if(yt.isPlainObject(e)||e instanceof this.constructor)s(e,n);else if(yt.isString(e)&&(e=e.trim())&&!A9(e))s(S9(e),n);else if(yt.isHeaders(e))for(const[a,l]of e.entries())o(l,a,r);else e!=null&&o(n,e,r);return this}get(e,n){if(e=tf(e),e){const r=yt.findKey(this,e);if(r){const i=this[r];if(!n)return i;if(n===!0)return k9(i);if(yt.isFunction(n))return n.call(this,i,r);if(yt.isRegExp(n))return n.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=tf(e),e){const r=yt.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||zm(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let i=!1;function o(s){if(s=tf(s),s){const a=yt.findKey(r,s);a&&(!n||zm(r,r[a],a,n))&&(delete r[a],i=!0)}}return yt.isArray(e)?e.forEach(o):o(e),i}clear(e){const n=Object.keys(this);let r=n.length,i=!1;for(;r--;){const o=n[r];(!e||zm(this,this[o],o,e,!0))&&(delete this[o],i=!0)}return i}normalize(e){const n=this,r={};return yt.forEach(this,(i,o)=>{const s=yt.findKey(r,o);if(s){n[s]=Gp(i),delete n[o];return}const a=e?C9(o):String(o).trim();a!==o&&delete n[o],n[a]=Gp(i),r[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return yt.forEach(this,(r,i)=>{r!=null&&r!==!1&&(n[i]=e&&yt.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(i=>r.set(i)),r}static accessor(e){const r=(this[a3]=this[a3]={accessors:{}}).accessors,i=this.prototype;function o(s){const a=tf(s);r[a]||(L9(i,s),r[a]=!0)}return yt.isArray(e)?e.forEach(o):o(e),this}}jr.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);yt.reduceDescriptors(jr.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});yt.freezeMethods(jr);function $m(t,e){const n=this||zh,r=e||n,i=jr.from(r.headers);let o=r.data;return yt.forEach(t,function(a){o=a.call(n,o,i.normalize(),e?e.status:void 0)}),i.normalize(),o}function NA(t){return!!(t&&t.__CANCEL__)}function uu(t,e,n){le.call(this,t??"canceled",le.ERR_CANCELED,e,n),this.name="CanceledError"}yt.inherits(uu,le,{__CANCEL__:!0});function PA(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new le("Request failed with status code "+n.status,[le.ERR_BAD_REQUEST,le.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function N9(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function P9(t,e){t=t||10;const n=new Array(t),r=new Array(t);let i=0,o=0,s;return e=e!==void 0?e:1e3,function(l){const c=Date.now(),u=r[o];s||(s=c),n[i]=l,r[i]=c;let h=o,p=0;for(;h!==i;)p+=n[h++],h=h%t;if(i=(i+1)%t,i===o&&(o=(o+1)%t),c-s{n=u,i=null,o&&(clearTimeout(o),o=null),t.apply(null,c)};return[(...c)=>{const u=Date.now(),h=u-n;h>=r?s(c,u):(i=c,o||(o=setTimeout(()=>{o=null,s(i)},r-h)))},()=>i&&s(i)]}const Y0=(t,e,n=3)=>{let r=0;const i=P9(50,250);return E9(o=>{const s=o.loaded,a=o.lengthComputable?o.total:void 0,l=s-r,c=i(l),u=s<=a;r=s;const h={loaded:s,total:a,progress:a?s/a:void 0,bytes:l,rate:c||void 0,estimated:c&&a&&u?(a-s)/c:void 0,event:o,lengthComputable:a!=null,[e?"download":"upload"]:!0};t(h)},n)},l3=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},c3=t=>(...e)=>yt.asap(()=>t(...e)),M9=Dr.hasStandardBrowserEnv?function(){const e=Dr.navigator&&/(msie|trident)/i.test(Dr.navigator.userAgent),n=document.createElement("a");let r;function i(o){let s=o;return e&&(n.setAttribute("href",s),s=n.href),n.setAttribute("href",s),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=i(window.location.href),function(s){const a=yt.isString(s)?i(s):s;return a.protocol===r.protocol&&a.host===r.host}}():function(){return function(){return!0}}(),T9=Dr.hasStandardBrowserEnv?{write(t,e,n,r,i,o){const s=[t+"="+encodeURIComponent(e)];yt.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),yt.isString(r)&&s.push("path="+r),yt.isString(i)&&s.push("domain="+i),o===!0&&s.push("secure"),document.cookie=s.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function O9(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function R9(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function EA(t,e){return t&&!O9(e)?R9(t,e):e}const u3=t=>t instanceof jr?{...t}:t;function dl(t,e){e=e||{};const n={};function r(c,u,h){return yt.isPlainObject(c)&&yt.isPlainObject(u)?yt.merge.call({caseless:h},c,u):yt.isPlainObject(u)?yt.merge({},u):yt.isArray(u)?u.slice():u}function i(c,u,h){if(yt.isUndefined(u)){if(!yt.isUndefined(c))return r(void 0,c,h)}else return r(c,u,h)}function o(c,u){if(!yt.isUndefined(u))return r(void 0,u)}function s(c,u){if(yt.isUndefined(u)){if(!yt.isUndefined(c))return r(void 0,c)}else return r(void 0,u)}function a(c,u,h){if(h in e)return r(c,u);if(h in t)return r(void 0,c)}const l={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a,headers:(c,u)=>i(u3(c),u3(u),!0)};return yt.forEach(Object.keys(Object.assign({},t,e)),function(u){const h=l[u]||i,p=h(t[u],e[u],u);yt.isUndefined(p)&&h!==a||(n[u]=p)}),n}const MA=t=>{const e=dl({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:a}=e;e.headers=s=jr.from(s),e.url=AA(EA(e.baseURL,e.url),t.params,t.paramsSerializer),a&&s.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let l;if(yt.isFormData(n)){if(Dr.hasStandardBrowserEnv||Dr.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if((l=s.getContentType())!==!1){const[c,...u]=l?l.split(";").map(h=>h.trim()).filter(Boolean):[];s.setContentType([c||"multipart/form-data",...u].join("; "))}}if(Dr.hasStandardBrowserEnv&&(r&&yt.isFunction(r)&&(r=r(e)),r||r!==!1&&M9(e.url))){const c=i&&o&&T9.read(o);c&&s.set(i,c)}return e},I9=typeof XMLHttpRequest<"u",F9=I9&&function(t){return new Promise(function(n,r){const i=MA(t);let o=i.data;const s=jr.from(i.headers).normalize();let{responseType:a,onUploadProgress:l,onDownloadProgress:c}=i,u,h,p,d,y;function b(){d&&d(),y&&y(),i.cancelToken&&i.cancelToken.unsubscribe(u),i.signal&&i.signal.removeEventListener("abort",u)}let _=new XMLHttpRequest;_.open(i.method.toUpperCase(),i.url,!0),_.timeout=i.timeout;function m(){if(!_)return;const S=jr.from("getAllResponseHeaders"in _&&_.getAllResponseHeaders()),P={data:!a||a==="text"||a==="json"?_.responseText:_.response,status:_.status,statusText:_.statusText,headers:S,config:t,request:_};PA(function(I){n(I),b()},function(I){r(I),b()},P),_=null}"onloadend"in _?_.onloadend=m:_.onreadystatechange=function(){!_||_.readyState!==4||_.status===0&&!(_.responseURL&&_.responseURL.indexOf("file:")===0)||setTimeout(m)},_.onabort=function(){_&&(r(new le("Request aborted",le.ECONNABORTED,t,_)),_=null)},_.onerror=function(){r(new le("Network Error",le.ERR_NETWORK,t,_)),_=null},_.ontimeout=function(){let A=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const P=i.transitional||CA;i.timeoutErrorMessage&&(A=i.timeoutErrorMessage),r(new le(A,P.clarifyTimeoutError?le.ETIMEDOUT:le.ECONNABORTED,t,_)),_=null},o===void 0&&s.setContentType(null),"setRequestHeader"in _&&yt.forEach(s.toJSON(),function(A,P){_.setRequestHeader(P,A)}),yt.isUndefined(i.withCredentials)||(_.withCredentials=!!i.withCredentials),a&&a!=="json"&&(_.responseType=i.responseType),c&&([p,y]=Y0(c,!0),_.addEventListener("progress",p)),l&&_.upload&&([h,d]=Y0(l),_.upload.addEventListener("progress",h),_.upload.addEventListener("loadend",d)),(i.cancelToken||i.signal)&&(u=S=>{_&&(r(!S||S.type?new uu(null,t,_):S),_.abort(),_=null)},i.cancelToken&&i.cancelToken.subscribe(u),i.signal&&(i.signal.aborted?u():i.signal.addEventListener("abort",u)));const w=N9(i.url);if(w&&Dr.protocols.indexOf(w)===-1){r(new le("Unsupported protocol "+w+":",le.ERR_BAD_REQUEST,t));return}_.send(o||null)})},D9=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,i;const o=function(c){if(!i){i=!0,a();const u=c instanceof Error?c:this.reason;r.abort(u instanceof le?u:new uu(u instanceof Error?u.message:u))}};let s=e&&setTimeout(()=>{s=null,o(new le(`timeout ${e} of ms exceeded`,le.ETIMEDOUT))},e);const a=()=>{t&&(s&&clearTimeout(s),s=null,t.forEach(c=>{c.unsubscribe?c.unsubscribe(o):c.removeEventListener("abort",o)}),t=null)};t.forEach(c=>c.addEventListener("abort",o));const{signal:l}=r;return l.unsubscribe=()=>yt.asap(a),l}},j9=function*(t,e){let n=t.byteLength;if(n{const i=B9(t,e);let o=0,s,a=l=>{s||(s=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:c,value:u}=await i.next();if(c){a(),l.close();return}let h=u.byteLength;if(n){let p=o+=h;n(p)}l.enqueue(new Uint8Array(u))}catch(c){throw a(c),c}},cancel(l){return a(l),i.return()}},{highWaterMark:2})},r1=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",TA=r1&&typeof ReadableStream=="function",$9=r1&&(typeof TextEncoder=="function"?(t=>e=>t.encode(e))(new TextEncoder):async t=>new Uint8Array(await new Response(t).arrayBuffer())),OA=(t,...e)=>{try{return!!t(...e)}catch{return!1}},U9=TA&&OA(()=>{let t=!1;const e=new Request(Dr.origin,{body:new ReadableStream,method:"POST",get duplex(){return t=!0,"half"}}).headers.has("Content-Type");return t&&!e}),h3=64*1024,E5=TA&&OA(()=>yt.isReadableStream(new Response("").body)),X0={stream:E5&&(t=>t.body)};r1&&(t=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!X0[e]&&(X0[e]=yt.isFunction(t[e])?n=>n[e]():(n,r)=>{throw new le(`Response type '${e}' is not supported`,le.ERR_NOT_SUPPORT,r)})})})(new Response);const q9=async t=>{if(t==null)return 0;if(yt.isBlob(t))return t.size;if(yt.isSpecCompliantForm(t))return(await new Request(Dr.origin,{method:"POST",body:t}).arrayBuffer()).byteLength;if(yt.isArrayBufferView(t)||yt.isArrayBuffer(t))return t.byteLength;if(yt.isURLSearchParams(t)&&(t=t+""),yt.isString(t))return(await $9(t)).byteLength},W9=async(t,e)=>{const n=yt.toFiniteNumber(t.getContentLength());return n??q9(e)},V9=r1&&(async t=>{let{url:e,method:n,data:r,signal:i,cancelToken:o,timeout:s,onDownloadProgress:a,onUploadProgress:l,responseType:c,headers:u,withCredentials:h="same-origin",fetchOptions:p}=MA(t);c=c?(c+"").toLowerCase():"text";let d=D9([i,o&&o.toAbortSignal()],s),y;const b=d&&d.unsubscribe&&(()=>{d.unsubscribe()});let _;try{if(l&&U9&&n!=="get"&&n!=="head"&&(_=await W9(u,r))!==0){let P=new Request(e,{method:"POST",body:r,duplex:"half"}),z;if(yt.isFormData(r)&&(z=P.headers.get("content-type"))&&u.setContentType(z),P.body){const[I,R]=l3(_,Y0(c3(l)));r=f3(P.body,h3,I,R)}}yt.isString(h)||(h=h?"include":"omit");const m="credentials"in Request.prototype;y=new Request(e,{...p,signal:d,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",credentials:m?h:void 0});let w=await fetch(y);const S=E5&&(c==="stream"||c==="response");if(E5&&(a||S&&b)){const P={};["status","statusText","headers"].forEach(X=>{P[X]=w[X]});const z=yt.toFiniteNumber(w.headers.get("content-length")),[I,R]=a&&l3(z,Y0(c3(a),!0))||[];w=new Response(f3(w.body,h3,I,()=>{R&&R(),b&&b()}),P)}c=c||"text";let A=await X0[yt.findKey(X0,c)||"text"](w,t);return!S&&b&&b(),await new Promise((P,z)=>{PA(P,z,{data:A,headers:jr.from(w.headers),status:w.status,statusText:w.statusText,config:t,request:y})})}catch(m){throw b&&b(),m&&m.name==="TypeError"&&/fetch/i.test(m.message)?Object.assign(new le("Network Error",le.ERR_NETWORK,t,y),{cause:m.cause||m}):le.from(m,m&&m.code,t,y)}}),M5={http:s9,xhr:F9,fetch:V9};yt.forEach(M5,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const d3=t=>`- ${t}`,H9=t=>yt.isFunction(t)||t===null||t===!1,RA={getAdapter:t=>{t=yt.isArray(t)?t:[t];const{length:e}=t;let n,r;const i={};for(let o=0;o`adapter ${a} `+(l===!1?"is not supported by the environment":"is not available in the build"));let s=e?o.length>1?`since : +`+o.map(d3).join(` +`):" "+d3(o[0]):"as no adapter specified";throw new le("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return r},adapters:M5};function Um(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new uu(null,t)}function p3(t){return Um(t),t.headers=jr.from(t.headers),t.data=$m.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),RA.getAdapter(t.adapter||zh.adapter)(t).then(function(r){return Um(t),r.data=$m.call(t,t.transformResponse,r),r.headers=jr.from(r.headers),r},function(r){return NA(r)||(Um(t),r&&r.response&&(r.response.data=$m.call(t,t.transformResponse,r.response),r.response.headers=jr.from(r.response.headers))),Promise.reject(r)})}const IA="1.7.7",qv={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{qv[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const g3={};qv.transitional=function(e,n,r){function i(o,s){return"[Axios v"+IA+"] Transitional option '"+o+"'"+s+(r?". "+r:"")}return(o,s,a)=>{if(e===!1)throw new le(i(s," has been removed"+(n?" in "+n:"")),le.ERR_DEPRECATED);return n&&!g3[s]&&(g3[s]=!0,console.warn(i(s," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(o,s,a):!0}};function G9(t,e,n){if(typeof t!="object")throw new le("options must be an object",le.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let i=r.length;for(;i-- >0;){const o=r[i],s=e[o];if(s){const a=t[o],l=a===void 0||s(a,o,t);if(l!==!0)throw new le("option "+o+" must be "+l,le.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new le("Unknown option "+o,le.ERR_BAD_OPTION)}}const T5={assertOptions:G9,validators:qv},Ms=T5.validators;class nl{constructor(e){this.defaults=e,this.interceptors={request:new s3,response:new s3}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let i;Error.captureStackTrace?Error.captureStackTrace(i={}):i=new Error;const o=i.stack?i.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` +`+o):r.stack=o}catch{}}throw r}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=dl(this.defaults,n);const{transitional:r,paramsSerializer:i,headers:o}=n;r!==void 0&&T5.assertOptions(r,{silentJSONParsing:Ms.transitional(Ms.boolean),forcedJSONParsing:Ms.transitional(Ms.boolean),clarifyTimeoutError:Ms.transitional(Ms.boolean)},!1),i!=null&&(yt.isFunction(i)?n.paramsSerializer={serialize:i}:T5.assertOptions(i,{encode:Ms.function,serialize:Ms.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let s=o&&yt.merge(o.common,o[n.method]);o&&yt.forEach(["delete","get","head","post","put","patch","common"],y=>{delete o[y]}),n.headers=jr.concat(s,o);const a=[];let l=!0;this.interceptors.request.forEach(function(b){typeof b.runWhen=="function"&&b.runWhen(n)===!1||(l=l&&b.synchronous,a.unshift(b.fulfilled,b.rejected))});const c=[];this.interceptors.response.forEach(function(b){c.push(b.fulfilled,b.rejected)});let u,h=0,p;if(!l){const y=[p3.bind(this),void 0];for(y.unshift.apply(y,a),y.push.apply(y,c),p=y.length,u=Promise.resolve(n);h{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](i);r._listeners=null}),this.promise.then=i=>{let o;const s=new Promise(a=>{r.subscribe(a),o=a}).then(i);return s.cancel=function(){r.unsubscribe(o)},s},e(function(o,s,a){r.reason||(r.reason=new uu(o,s,a),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new Wv(function(i){e=i}),cancel:e}}}function Y9(t){return function(n){return t.apply(null,n)}}function X9(t){return yt.isObject(t)&&t.isAxiosError===!0}const O5={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(O5).forEach(([t,e])=>{O5[e]=t});function FA(t){const e=new nl(t),n=dA(nl.prototype.request,e);return yt.extend(n,nl.prototype,e,{allOwnKeys:!0}),yt.extend(n,e,null,{allOwnKeys:!0}),n.create=function(i){return FA(dl(t,i))},n}const me=FA(zh);me.Axios=nl;me.CanceledError=uu;me.CancelToken=Wv;me.isCancel=NA;me.VERSION=IA;me.toFormData=n1;me.AxiosError=le;me.Cancel=me.CanceledError;me.all=function(e){return Promise.all(e)};me.spread=Y9;me.isAxiosError=X9;me.mergeConfig=dl;me.AxiosHeaders=jr;me.formToJSON=t=>LA(yt.isHTMLForm(t)?new FormData(t):t);me.getAdapter=RA.getAdapter;me.HttpStatusCode=O5;me.default=me;const $h="http://localhost:3000/api/expense",K9=async t=>(await me.get(`${$h}/${t}`)).data,J9=async t=>(await me.get(`${$h}/${t}`)).data,Q9=async t=>{const e=await fetch(`${$h}/add`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await e.json();if(e.status>=400)throw new Error(n.errors);return n},Z9=async(t,e)=>(await me.put(`${$h}/update/${t}`,e)).data,tB=async t=>(await me.delete(`${$h}/delete/${t}`)).data,Yp={getExpenses:K9,getExpensesById:J9,addExpenses:Q9,updateExpenses:Z9,deleteExpenses:tB},Uh="http://localhost:3000/api/income",eB=async t=>{try{return(await me.get(`${Uh}/${t}`)).data}catch(e){throw console.error("Error fetching income:",e),e}},nB=async t=>{try{return(await me.get(`${Uh}/${t}`)).data}catch(e){throw console.error(`Error fetching income with id ${t}:`,e),e}},rB=async t=>{try{return(await me.post(`${Uh}/add`,t)).data}catch(e){throw console.error("Error adding income:",e),e}},iB=async(t,e)=>{try{return(await me.put(`${Uh}/update/${t}`,e)).data}catch(n){throw console.error(`Error updating income with id ${t}:`,n),n}},oB=async t=>{try{return(await me.delete(`${Uh}/delete/${t}`)).data}catch(e){throw console.error(`Error deleting income with id ${t}:`,e),e}},Xp={getIncome:eB,getIncomeById:nB,addIncome:rB,updateIncome:iB,deleteIncome:oB},DA=t=>{const{show:e,setShow:n,entry:r,type:i}=t,[o,s]=H.useState({...r}),a=u=>{u.preventDefault(),s({...o,[u.target.name]:u.target.value})},l=async u=>{u.preventDefault();try{o.date=new Date(o.date).toISOString(),i==="expense"?await Yp.updateExpenses(r.id,o):i==="income"&&await Xp.updateIncome(r.id,o),s({...o,isSubmitting:!0}),s(i==="expense"?{user_id:r.user_id,amount:"",description:"",date:"",category_id:""}:{user_id:r.user_id,amount:"",source:"",date:""}),n(!1),t.onUpdate()}catch(h){console.error("Error updating data:",h)}},c=()=>{n(!1)};return B.jsxs(Zu,{show:e,onHide:c,children:[B.jsx(Zu.Header,{closeButton:!0,children:B.jsx(Zu.Title,{children:"Update Entry"})}),B.jsx(Zu.Body,{children:B.jsxs(Tn,{children:[i==="expense"?B.jsxs(B.Fragment,{children:[B.jsxs(Tn.Group,{controlId:"formCategory",children:[B.jsx(Tn.Label,{children:"Category"}),B.jsx(Tn.Control,{as:"select",name:"category_id",value:o.category_id,onChange:u=>a(u),children:t.categories.map(u=>B.jsx("option",{value:u.id,children:u.name},u.id))})]}),B.jsxs(Tn.Group,{controlId:"formAmount",children:[B.jsx(Tn.Label,{children:"Amount"}),B.jsx(Tn.Control,{type:"number",name:"amount",value:o.amount,onChange:u=>a(u)})]}),B.jsxs(Tn.Group,{controlId:"formDescription",children:[B.jsx(Tn.Label,{children:"Description"}),B.jsx(Tn.Control,{type:"text",name:"description",value:o.description,onChange:u=>a(u)})]})]}):B.jsxs(B.Fragment,{children:[B.jsxs(Tn.Group,{controlId:"formSource",children:[B.jsx(Tn.Label,{children:"Source"}),B.jsx(Tn.Control,{type:"text",name:"source",value:o.source,onChange:u=>a(u)})]}),B.jsxs(Tn.Group,{controlId:"formAmount",children:[B.jsx(Tn.Label,{children:"Amount"}),B.jsx(Tn.Control,{type:"number",name:"amount",value:o.amount,onChange:u=>a(u)})]})]}),B.jsxs(Tn.Group,{controlId:"formDate",children:[B.jsx(Tn.Label,{children:"Date"}),B.jsx(Tn.Control,{type:"date",name:"date",value:new Date(o.date).toISOString().split("T")[0],onChange:u=>a(u)})]})]})}),B.jsxs(Zu.Footer,{children:[B.jsx(C5,{variant:"secondary",onClick:c,children:"Close"}),B.jsx(C5,{variant:"primary",onClick:l,children:"Save Changes"})]})]})},sB=()=>{const t=Number(Sg().user_id),[e,n]=H.useState([]),[r,i]=H.useState([]),[o,s]=H.useState({user_id:t,type:"income",amount:"",source:"",date:"",isSubmitting:!1}),[a,l]=H.useState({}),[c,u]=H.useState(!1);H.useEffect(()=>{(async()=>{try{const m=await Xp.getIncome(t);n(m.data)}catch(m){console.error("Error fetching data:",m)}})()},[e,t]);const h=_=>{u(!0),l(_)},p=async _=>{try{await Xp.deleteIncome(_),n(e.filter(m=>m.id!==_))}catch(m){console.error("Error deleting data:",m)}},d=async _=>{try{_.user_id=t,_.date=new Date(_.date).toISOString();const m=await Xp.addIncome(_);n([...e,m.data])}catch(m){console.error("Error adding data:",m)}},y=async _=>{_.preventDefault(),s({...o,isSubmitting:!0}),await d(o),s({type:"income",amount:"",source:"",date:""})},b=_=>{let{name:m,value:w}=_.target;s({...o,[m]:w})};return B.jsx(B.Fragment,{children:isNaN(t)?B.jsx("div",{children:B.jsx("h1",{children:"Please Login to access this page"})}):B.jsxs("div",{children:[B.jsx("h1",{children:"Track Your Incomes"}),B.jsxs("form",{onSubmit:y,children:[B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:"Source: "}),B.jsx("input",{type:"text",name:"source",value:o.source,onChange:b,required:!0,disabled:o.isSubmitting})]})}),B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:"Amount: "}),B.jsx("input",{type:"number",name:"amount",value:o.amount,onChange:b,required:!0,disabled:o.isSubmitting})]})}),B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:"Date: "}),B.jsx("input",{type:"date",name:"date",value:o.date,onChange:b,required:!0,disabled:o.isSubmitting})]})}),B.jsx("button",{type:"submit",className:"add-entry",disabled:o.isSubmitting,children:o.isSubmitting?"Submitting...":"Add Entry"})]}),B.jsx("h2",{children:"Tracked Entries"}),B.jsxs("table",{align:"center",style:{borderSpacing:"15px"},children:[B.jsx("thead",{children:B.jsxs("tr",{children:[B.jsx("th",{children:"User"}),B.jsx("th",{children:"Source"}),B.jsx("th",{children:"Amount"}),B.jsx("th",{children:"Date"}),B.jsx("th",{children:"Actions"})]})}),B.jsx("tbody",{children:r.length!==0?r.map((_,m)=>B.jsxs("tr",{children:[B.jsx("td",{children:_.user_id}),B.jsx("td",{children:_.source}),B.jsx("td",{children:_.amount}),B.jsx("td",{children:new Date(_.date).toLocaleDateString()}),B.jsx("td",{children:B.jsx("button",{onClick:()=>h(_),children:"Edit"})})]},m)):e.map((_,m)=>B.jsxs("tr",{children:[B.jsx("td",{children:_.user_id}),B.jsx("td",{children:_.source}),B.jsx("td",{children:_.amount}),B.jsx("td",{children:new Date(_.date).toLocaleDateString()}),B.jsxs("td",{children:[B.jsx("button",{onClick:()=>h(_),children:"Edit"}),B.jsx("button",{className:"delete-button",onClick:()=>p(_.id),children:"Delete"})]})]},m))})]}),c&&B.jsx(DA,{show:c,setShow:u,entry:a,type:"income"})]})})},aB=t=>{const e=Sg().user_id,n=t.categories,[r,i]=H.useState(!0),[o,s]=H.useState([]),[a,l]=H.useState([]),[c,u]=H.useState({user_id:Number(e),category_id:"",type:"expense",amount:"",description:"",date:"",isSubmitting:!1}),[h,p]=H.useState({}),[d,y]=H.useState(!1);H.useEffect(()=>{(async()=>{try{const P=await Yp.getExpenses(e);s(P.data)}catch(P){console.error("Error fetching data:",P)}finally{i(!1)}})()},[o,e]);const b=A=>{y(!0),p(A)},_=async A=>{try{await Yp.deleteExpenses(A),s(o.filter(P=>P.id!==A))}catch(P){console.error("Error deleting data:",P)}},m=async A=>{try{A.user_id=Number(e),A.date=new Date(A.date).toISOString();const P=await Yp.addExpenses(A);s([...o,P.data])}catch(P){console.error("Error adding data:",P)}},w=async A=>{A.preventDefault(),u({...c,isSubmitting:!0}),await m(c),u({type:"expense",amount:"",description:"",date:"",category_id:""})},S=A=>{let{name:P,value:z}=A.target;u({...c,[P]:z})};return B.jsx(B.Fragment,{children:e==="undefined"?B.jsx("div",{children:B.jsx("h1",{children:"Please Login to access this page"})}):B.jsxs("div",{children:[r&&B.jsx("div",{className:"spinner-border text-light",role:"status",children:B.jsx("span",{className:"visually-hidden",children:"Loading..."})}),B.jsx("h1",{children:"Track Your Expenses"}),B.jsxs("form",{onSubmit:w,children:[B.jsx("div",{children:B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:"Search by Category: "}),B.jsxs("select",{name:"searchCategory",onChange:A=>{const P=A.target.value;if(P==="")l([]),s(o);else{const I=[...o].filter(R=>R.category_id===parseInt(P));I.length===0&&alert("No entries found for the selected category"),I.length>0&&l(I)}},disabled:c.isSubmitting,children:[B.jsx("option",{value:"",children:"All"}),n.map(A=>B.jsx("option",{value:A.id,children:A.name},A.id))]})]})})}),B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:" Category "}),B.jsx("select",{name:"category_id",value:c.category_id,onChange:A=>S(A),disabled:c.isSubmitting,children:n.map(A=>B.jsx("option",{value:A.id,children:A.name},A.id))})]})}),B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:"Amount: "}),B.jsx("input",{type:"number",name:"amount",value:c.amount,onChange:S,required:!0,disabled:c.isSubmitting})]})}),B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:"Description:"}),B.jsx("input",{type:"text",name:"description",value:c.description,onChange:S,required:!0,disabled:c.isSubmitting})]})}),B.jsx("div",{children:B.jsxs("label",{children:[B.jsx("b",{children:"Date: "}),B.jsx("input",{type:"date",name:"date",value:c.date,onChange:S,required:!0,disabled:c.isSubmitting})]})}),B.jsx("button",{type:"submit",className:"add-entry",disabled:c.isSubmitting,children:c.isSubmitting?"Submitting...":"Add Entry"})]}),B.jsx("h2",{children:"Tracked Entries"}),B.jsxs("table",{align:"center",style:{borderSpacing:"15px"},children:[B.jsx("thead",{children:B.jsxs("tr",{children:[B.jsx("th",{children:"User"}),B.jsx("th",{children:"Category"}),B.jsx("th",{children:"Amount"}),B.jsx("th",{children:"Description"}),B.jsx("th",{children:"Date"}),B.jsx("th",{children:"Actions"})]})}),B.jsx("tbody",{children:a.length!==0?a.map((A,P)=>{var z;return B.jsxs("tr",{children:[B.jsx("td",{children:A.user_id}),B.jsx("td",{children:(z=n.find(I=>I.id===A.category_id))==null?void 0:z.name}),B.jsx("td",{children:A.amount}),B.jsx("td",{children:A.description}),B.jsx("td",{children:new Date(A.date).toLocaleDateString("en-US",{timeZone:"UTC"})})]},P)}):o.map((A,P)=>{var z;return B.jsxs("tr",{children:[B.jsx("td",{children:A.user_id}),B.jsx("td",{children:(z=n.find(I=>I.id===A.category_id))==null?void 0:z.name}),B.jsx("td",{children:A.amount}),B.jsx("td",{children:A.description}),B.jsx("td",{children:new Date(A.date).toLocaleDateString()}),B.jsxs("td",{children:[B.jsx("button",{onClick:()=>b(A),children:"Edit"}),B.jsx("button",{className:"delete-button",onClick:()=>_(A.id),children:"Delete"})]})]},P)})})]}),d&&B.jsx(DA,{show:d,setShow:y,entry:h,categories:n,type:"expense"})]})})},i1="http://localhost:3000/api/goal",lB=async t=>{try{return(await me.get(`${i1}/${t}`)).data}catch(e){throw console.error("Error fetching goals:",e),e}},cB=async t=>{try{return(await me.post(`${i1}`,t)).data}catch(e){throw console.error("Error adding goal:",e),e}},uB=async(t,e)=>{try{return(await me.put(`${i1}/${t}`,e)).data}catch(n){throw console.error(`Error updating goal with id ${t}:`,n),n}},fB=async t=>{try{return(await me.delete(`${i1}/${t}`)).data}catch(e){throw console.error(`Error deleting goal with id ${t}:`,e),e}},lp={getGoals:lB,addGoal:cB,updateGoal:uB,deleteGoal:fB},hB=()=>{const t=Number(Sg().user_id),[e,n]=H.useState([]),[r,i]=H.useState({user_id:t,goal_name:"",target_amount:"",current_amount:"",deadline:""}),[o,s]=H.useState(0);H.useEffect(()=>{(async()=>{try{const w=await lp.getGoals(t);n(w.data)}catch(w){console.error("Error fetching goals:",w)}})()},[r,t]);const a=m=>{const{name:w,value:S}=m.target;i({...r,[w]:S})},l=async()=>{try{r.user_id=t,r.deadline=new Date(r.deadline).toISOString();const m=await lp.addGoal(r);n([...e,m]),i({user_id:t,goal_name:"",target_amount:"",current_amount:"",deadline:""})}catch(m){console.error("Error adding goal:",m)}},c=()=>{const m=e.reduce((S,A)=>S+parseFloat(A.target_amount),0),w=e.reduce((S,A)=>S+parseFloat(A.current_amount||0),0);s(w/m*100)};H.useEffect(()=>{c()},[e]);const[u,h]=H.useState(!1),[p,d]=H.useState(null),y=m=>{const w=e.find(S=>S.id===m);i({...w,deadline:new Date(w.deadline).toISOString().split("T")[0]}),h(!0),d(m)},b=async()=>{try{const m={...r,deadline:new Date(r.deadline).toISOString()};await lp.updateGoal(p,m),n(e.map(w=>w.id===p?m:w)),i({user_id:t,goal_name:"",target_amount:"",current_amount:"",deadline:""}),h(!1),d(null)}catch(m){console.error("Error updating goal:",m)}},_=async m=>{try{await lp.deleteGoal(m),n(e.filter(w=>w.id!==m))}catch(w){console.error("Error deleting goal:",w)}};return B.jsx(B.Fragment,{children:isNaN(t)?B.jsx("div",{children:B.jsx("h1",{children:"Please Login to access this page"})}):B.jsxs("div",{children:[B.jsx("h1",{children:"Savings Goals"}),B.jsxs("div",{className:"form-container",children:[B.jsx("input",{type:"text",name:"goal_name",placeholder:"Goal Name",value:r.goal_name,onChange:a}),B.jsx("input",{type:"number",name:"target_amount",placeholder:"Target Amount",value:r.target_amount,onChange:a}),B.jsx("input",{type:"number",name:"current_amount",placeholder:"Current Amount",value:r.current_amount,onChange:a}),B.jsx("input",{type:"date",name:"deadline",placeholder:"Deadline",value:r.deadline,onChange:a}),u?B.jsx("button",{className:"update-goal",onClick:b,children:"Update Goal"}):B.jsx("button",{className:"add-goal",onClick:l,children:"Add Goal"})]}),B.jsxs("div",{children:[B.jsx("h2",{children:"Progress"}),B.jsx("div",{className:"progress-bar",children:B.jsx("div",{className:"progress-bar-inner",style:{width:`${o}%`,backgroundColor:"#f2c069",height:"24px"}})})]}),B.jsxs("div",{children:[B.jsx("h2",{children:"Goals"}),B.jsxs("table",{children:[B.jsx("thead",{children:B.jsxs("tr",{children:[B.jsx("th",{children:"Goal Name"}),B.jsx("th",{children:"Target Amount"}),B.jsx("th",{children:"Current Amount"}),B.jsx("th",{children:"Deadline"}),B.jsx("th",{children:"Actions"})]})}),B.jsx("tbody",{children:e==null?void 0:e.map(m=>B.jsxs("tr",{children:[B.jsx("td",{children:m.goal_name}),B.jsxs("td",{children:["$",m.target_amount]}),B.jsxs("td",{children:["$",m.current_amount]}),B.jsx("td",{children:new Date(m.deadline).toLocaleDateString()}),B.jsxs("td",{children:[B.jsx("button",{onClick:()=>y(m.id),children:"Edit"}),B.jsx("button",{className:"delete-button",onClick:()=>_(m.id),children:"Delete"})]})]},m.id))})]})]})]})})};/*! + * @kurkle/color v0.3.4 + * https://github.com/kurkle/color#readme + * (c) 2024 Jukka Kurkela + * Released under the MIT License + */function qh(t){return t+.5|0}const Hs=(t,e,n)=>Math.max(Math.min(t,n),e);function bf(t){return Hs(qh(t*2.55),0,255)}function oa(t){return Hs(qh(t*255),0,255)}function Zo(t){return Hs(qh(t/2.55)/100,0,1)}function m3(t){return Hs(qh(t*100),0,100)}const pi={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},R5=[..."0123456789ABCDEF"],dB=t=>R5[t&15],pB=t=>R5[(t&240)>>4]+R5[t&15],cp=t=>(t&240)>>4===(t&15),gB=t=>cp(t.r)&&cp(t.g)&&cp(t.b)&&cp(t.a);function mB(t){var e=t.length,n;return t[0]==="#"&&(e===4||e===5?n={r:255&pi[t[1]]*17,g:255&pi[t[2]]*17,b:255&pi[t[3]]*17,a:e===5?pi[t[4]]*17:255}:(e===7||e===9)&&(n={r:pi[t[1]]<<4|pi[t[2]],g:pi[t[3]]<<4|pi[t[4]],b:pi[t[5]]<<4|pi[t[6]],a:e===9?pi[t[7]]<<4|pi[t[8]]:255})),n}const yB=(t,e)=>t<255?e(t):"";function vB(t){var e=gB(t)?dB:pB;return t?"#"+e(t.r)+e(t.g)+e(t.b)+yB(t.a,e):void 0}const bB=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function jA(t,e,n){const r=e*Math.min(n,1-n),i=(o,s=(o+t/30)%12)=>n-r*Math.max(Math.min(s-3,9-s,1),-1);return[i(0),i(8),i(4)]}function xB(t,e,n){const r=(i,o=(i+t/60)%6)=>n-n*e*Math.max(Math.min(o,4-o,1),0);return[r(5),r(3),r(1)]}function wB(t,e,n){const r=jA(t,1,.5);let i;for(e+n>1&&(i=1/(e+n),e*=i,n*=i),i=0;i<3;i++)r[i]*=1-e-n,r[i]+=e;return r}function _B(t,e,n,r,i){return t===i?(e-n)/r+(e.5?u/(2-o-s):u/(o+s),l=_B(n,r,i,u,o),l=l*60+.5),[l|0,c||0,a]}function Hv(t,e,n,r){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,n,r)).map(oa)}function Gv(t,e,n){return Hv(jA,t,e,n)}function SB(t,e,n){return Hv(wB,t,e,n)}function kB(t,e,n){return Hv(xB,t,e,n)}function BA(t){return(t%360+360)%360}function AB(t){const e=bB.exec(t);let n=255,r;if(!e)return;e[5]!==r&&(n=e[6]?bf(+e[5]):oa(+e[5]));const i=BA(+e[2]),o=+e[3]/100,s=+e[4]/100;return e[1]==="hwb"?r=SB(i,o,s):e[1]==="hsv"?r=kB(i,o,s):r=Gv(i,o,s),{r:r[0],g:r[1],b:r[2],a:n}}function CB(t,e){var n=Vv(t);n[0]=BA(n[0]+e),n=Gv(n),t.r=n[0],t.g=n[1],t.b=n[2]}function LB(t){if(!t)return;const e=Vv(t),n=e[0],r=m3(e[1]),i=m3(e[2]);return t.a<255?`hsla(${n}, ${r}%, ${i}%, ${Zo(t.a)})`:`hsl(${n}, ${r}%, ${i}%)`}const y3={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},v3={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function NB(){const t={},e=Object.keys(v3),n=Object.keys(y3);let r,i,o,s,a;for(r=0;r>16&255,o>>8&255,o&255]}return t}let up;function PB(t){up||(up=NB(),up.transparent=[0,0,0,0]);const e=up[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:e.length===4?e[3]:255}}const EB=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function MB(t){const e=EB.exec(t);let n=255,r,i,o;if(e){if(e[7]!==r){const s=+e[7];n=e[8]?bf(s):Hs(s*255,0,255)}return r=+e[1],i=+e[3],o=+e[5],r=255&(e[2]?bf(r):Hs(r,0,255)),i=255&(e[4]?bf(i):Hs(i,0,255)),o=255&(e[6]?bf(o):Hs(o,0,255)),{r,g:i,b:o,a:n}}}function TB(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${Zo(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const qm=t=>t<=.0031308?t*12.92:Math.pow(t,1/2.4)*1.055-.055,sc=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function OB(t,e,n){const r=sc(Zo(t.r)),i=sc(Zo(t.g)),o=sc(Zo(t.b));return{r:oa(qm(r+n*(sc(Zo(e.r))-r))),g:oa(qm(i+n*(sc(Zo(e.g))-i))),b:oa(qm(o+n*(sc(Zo(e.b))-o))),a:t.a+n*(e.a-t.a)}}function fp(t,e,n){if(t){let r=Vv(t);r[e]=Math.max(0,Math.min(r[e]+r[e]*n,e===0?360:1)),r=Gv(r),t.r=r[0],t.g=r[1],t.b=r[2]}}function zA(t,e){return t&&Object.assign(e||{},t)}function b3(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=oa(t[3]))):(e=zA(t,{r:0,g:0,b:0,a:1}),e.a=oa(e.a)),e}function RB(t){return t.charAt(0)==="r"?MB(t):AB(t)}class mh{constructor(e){if(e instanceof mh)return e;const n=typeof e;let r;n==="object"?r=b3(e):n==="string"&&(r=mB(e)||PB(e)||RB(e)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=zA(this._rgb);return e&&(e.a=Zo(e.a)),e}set rgb(e){this._rgb=b3(e)}rgbString(){return this._valid?TB(this._rgb):void 0}hexString(){return this._valid?vB(this._rgb):void 0}hslString(){return this._valid?LB(this._rgb):void 0}mix(e,n){if(e){const r=this.rgb,i=e.rgb;let o;const s=n===o?.5:n,a=2*s-1,l=r.a-i.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;o=1-c,r.r=255&c*r.r+o*i.r+.5,r.g=255&c*r.g+o*i.g+.5,r.b=255&c*r.b+o*i.b+.5,r.a=s*r.a+(1-s)*i.a,this.rgb=r}return this}interpolate(e,n){return e&&(this._rgb=OB(this._rgb,e._rgb,n)),this}clone(){return new mh(this.rgb)}alpha(e){return this._rgb.a=oa(e),this}clearer(e){const n=this._rgb;return n.a*=1-e,this}greyscale(){const e=this._rgb,n=qh(e.r*.3+e.g*.59+e.b*.11);return e.r=e.g=e.b=n,this}opaquer(e){const n=this._rgb;return n.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return fp(this._rgb,2,e),this}darken(e){return fp(this._rgb,2,-e),this}saturate(e){return fp(this._rgb,1,e),this}desaturate(e){return fp(this._rgb,1,-e),this}rotate(e){return CB(this._rgb,e),this}}/*! + * Chart.js v4.4.6 + * https://www.chartjs.org + * (c) 2024 Chart.js Contributors + * Released under the MIT License + */function Ho(){}const IB=(()=>{let t=0;return()=>t++})();function be(t){return t===null||typeof t>"u"}function Qe(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return e.slice(0,7)==="[object"&&e.slice(-6)==="Array]"}function pe(t){return t!==null&&Object.prototype.toString.call(t)==="[object Object]"}function pn(t){return(typeof t=="number"||t instanceof Number)&&isFinite(+t)}function Hr(t,e){return pn(t)?t:e}function ce(t,e){return typeof t>"u"?e:t}const FB=(t,e)=>typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100:+t/e,$A=(t,e)=>typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:+t;function $e(t,e,n){if(t&&typeof t.call=="function")return t.apply(n,e)}function Pe(t,e,n,r){let i,o,s;if(Qe(t))for(o=t.length,i=0;it,x:t=>t.x,y:t=>t.y};function BB(t){const e=t.split("."),n=[];let r="";for(const i of e)r+=i,r.endsWith("\\")?r=r.slice(0,-1)+".":(n.push(r),r="");return n}function zB(t){const e=BB(t);return n=>{for(const r of e){if(r==="")break;n=n&&n[r]}return n}}function ca(t,e){return(x3[e]||(x3[e]=zB(e)))(t)}function Yv(t){return t.charAt(0).toUpperCase()+t.slice(1)}const vh=t=>typeof t<"u",ua=t=>typeof t=="function",w3=(t,e)=>{if(t.size!==e.size)return!1;for(const n of t)if(!e.has(n))return!1;return!0};function $B(t){return t.type==="mouseup"||t.type==="click"||t.type==="contextmenu"}const Ye=Math.PI,Ge=2*Ye,UB=Ge+Ye,Q0=Number.POSITIVE_INFINITY,qB=Ye/180,_n=Ye/2,Ta=Ye/4,_3=Ye*2/3,Gs=Math.log10,No=Math.sign;function Ff(t,e,n){return Math.abs(t-e)i-o).pop(),e}function Zc(t){return!isNaN(parseFloat(t))&&isFinite(t)}function VB(t,e){const n=Math.round(t);return n-e<=t&&n+e>=t}function qA(t,e,n){let r,i,o;for(r=0,i=t.length;rl&&c=Math.min(e,n)-r&&t<=Math.max(e,n)+r}function Kv(t,e,n){n=n||(s=>t[s]1;)o=i+r>>1,n(o)?i=o:r=o;return{lo:i,hi:r}}const rs=(t,e,n,r)=>Kv(t,n,r?i=>{const o=t[i][e];return ot[i][e]Kv(t,n,r=>t[r][e]>=n);function XB(t,e,n){let r=0,i=t.length;for(;rr&&t[i-1]>n;)i--;return r>0||i{const r="_onData"+Yv(n),i=t[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!1,value(...o){const s=i.apply(this,o);return t._chartjs.listeners.forEach(a=>{typeof a[r]=="function"&&a[r](...o)}),s}})})}function A3(t,e){const n=t._chartjs;if(!n)return;const r=n.listeners,i=r.indexOf(e);i!==-1&&r.splice(i,1),!(r.length>0)&&(VA.forEach(o=>{delete t[o]}),delete t._chartjs)}function HA(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const GA=function(){return typeof window>"u"?function(t){return t()}:window.requestAnimationFrame}();function YA(t,e){let n=[],r=!1;return function(...i){n=i,r||(r=!0,GA.call(window,()=>{r=!1,t.apply(e,n)}))}}function JB(t,e){let n;return function(...r){return e?(clearTimeout(n),n=setTimeout(t,e,r)):t.apply(this,r),e}}const Jv=t=>t==="start"?"left":t==="end"?"right":"center",cr=(t,e,n)=>t==="start"?e:t==="end"?n:(e+n)/2,QB=(t,e,n,r)=>t===(r?"left":"right")?n:t==="center"?(e+n)/2:e;function XA(t,e,n){const r=e.length;let i=0,o=r;if(t._sorted){const{iScale:s,_parsed:a}=t,l=s.axis,{min:c,max:u,minDefined:h,maxDefined:p}=s.getUserBounds();h&&(i=Un(Math.min(rs(a,l,c).lo,n?r:rs(e,l,s.getPixelForValue(c)).lo),0,r-1)),p?o=Un(Math.max(rs(a,s.axis,u,!0).hi+1,n?0:rs(e,l,s.getPixelForValue(u),!0).hi+1),i,r)-i:o=r-i}return{start:i,count:o}}function KA(t){const{xScale:e,yScale:n,_scaleRanges:r}=t,i={xmin:e.min,xmax:e.max,ymin:n.min,ymax:n.max};if(!r)return t._scaleRanges=i,!0;const o=r.xmin!==e.min||r.xmax!==e.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,i),o}const hp=t=>t===0||t===1,C3=(t,e,n)=>-(Math.pow(2,10*(t-=1))*Math.sin((t-e)*Ge/n)),L3=(t,e,n)=>Math.pow(2,-10*t)*Math.sin((t-e)*Ge/n)+1,Df={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>-Math.cos(t*_n)+1,easeOutSine:t=>Math.sin(t*_n),easeInOutSine:t=>-.5*(Math.cos(Ye*t)-1),easeInExpo:t=>t===0?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>t===1?1:-Math.pow(2,-10*t)+1,easeInOutExpo:t=>hp(t)?t:t<.5?.5*Math.pow(2,10*(t*2-1)):.5*(-Math.pow(2,-10*(t*2-1))+2),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>hp(t)?t:C3(t,.075,.3),easeOutElastic:t=>hp(t)?t:L3(t,.075,.3),easeInOutElastic(t){return hp(t)?t:t<.5?.5*C3(t*2,.1125,.45):.5+.5*L3(t*2-1,.1125,.45)},easeInBack(t){return t*t*((1.70158+1)*t-1.70158)},easeOutBack(t){return(t-=1)*t*((1.70158+1)*t+1.70158)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:t=>1-Df.easeOutBounce(1-t),easeOutBounce(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:t=>t<.5?Df.easeInBounce(t*2)*.5:Df.easeOutBounce(t*2-1)*.5+.5};function Qv(t){if(t&&typeof t=="object"){const e=t.toString();return e==="[object CanvasPattern]"||e==="[object CanvasGradient]"}return!1}function N3(t){return Qv(t)?t:new mh(t)}function Wm(t){return Qv(t)?t:new mh(t).saturate(.5).darken(.1).hexString()}const ZB=["x","y","borderWidth","radius","tension"],tz=["color","borderColor","backgroundColor"];function ez(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:e=>e!=="onProgress"&&e!=="onComplete"&&e!=="fn"}),t.set("animations",{colors:{type:"color",properties:tz},numbers:{type:"number",properties:ZB}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>e|0}}}})}function nz(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const P3=new Map;function rz(t,e){e=e||{};const n=t+JSON.stringify(e);let r=P3.get(n);return r||(r=new Intl.NumberFormat(t,e),P3.set(n,r)),r}function Wh(t,e,n){return rz(e,n).format(t)}const JA={values(t){return Qe(t)?t:""+t},numeric(t,e,n){if(t===0)return"0";const r=this.chart.options.locale;let i,o=t;if(n.length>1){const c=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(c<1e-4||c>1e15)&&(i="scientific"),o=iz(t,n)}const s=Gs(Math.abs(o)),a=isNaN(s)?1:Math.max(Math.min(-1*Math.floor(s),20),0),l={notation:i,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),Wh(t,r,l)},logarithmic(t,e,n){if(t===0)return"0";const r=n[e].significand||t/Math.pow(10,Math.floor(Gs(t)));return[1,2,3,5,10,15].includes(r)||e>.8*n.length?JA.numeric.call(this,t,e,n):""}};function iz(t,e){let n=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;return Math.abs(n)>=1&&t!==Math.floor(t)&&(n=t-Math.floor(t)),n}var o1={formatters:JA};function oz(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,n)=>n.lineWidth,tickColor:(e,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:o1.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&e!=="callback"&&e!=="parser",_indexable:e=>e!=="borderDash"&&e!=="tickBorderDash"&&e!=="dash"}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:e=>e!=="backdropPadding"&&e!=="callback",_indexable:e=>e!=="backdropPadding"})}const pl=Object.create(null),F5=Object.create(null);function jf(t,e){if(!e)return t;const n=e.split(".");for(let r=0,i=n.length;rr.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(r,i)=>Wm(i.backgroundColor),this.hoverBorderColor=(r,i)=>Wm(i.borderColor),this.hoverColor=(r,i)=>Wm(i.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(n)}set(e,n){return Vm(this,e,n)}get(e){return jf(this,e)}describe(e,n){return Vm(F5,e,n)}override(e,n){return Vm(pl,e,n)}route(e,n,r,i){const o=jf(this,e),s=jf(this,r),a="_"+n;Object.defineProperties(o,{[a]:{value:o[n],writable:!0},[n]:{enumerable:!0,get(){const l=this[a],c=s[i];return pe(l)?Object.assign({},c,l):ce(l,c)},set(l){this[a]=l}}})}apply(e){e.forEach(n=>n(this))}}var Ze=new sz({_scriptable:t=>!t.startsWith("on"),_indexable:t=>t!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[ez,nz,oz]);function az(t){return!t||be(t.size)||be(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Z0(t,e,n,r,i){let o=e[i];return o||(o=e[i]=t.measureText(i).width,n.push(i)),o>r&&(r=o),r}function lz(t,e,n,r){r=r||{};let i=r.data=r.data||{},o=r.garbageCollect=r.garbageCollect||[];r.font!==e&&(i=r.data={},o=r.garbageCollect=[],r.font=e),t.save(),t.font=e;let s=0;const a=n.length;let l,c,u,h,p;for(l=0;ln.length){for(l=0;l0&&t.stroke()}}function is(t,e,n){return n=n||.5,!e||t&&t.x>e.left-n&&t.xe.top-n&&t.y0&&o.strokeColor!=="";let l,c;for(t.save(),t.font=i.string,fz(t,o),l=0;l+t||0;function Zv(t,e){const n={},r=pe(e),i=r?Object.keys(e):e,o=pe(t)?r?s=>ce(t[s],t[e[s]]):s=>t[s]:()=>t;for(const s of i)n[s]=yz(o(s));return n}function ZA(t){return Zv(t,{top:"y",right:"x",bottom:"y",left:"x"})}function rl(t){return Zv(t,["topLeft","topRight","bottomLeft","bottomRight"])}function pr(t){const e=ZA(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function In(t,e){t=t||{},e=e||Ze.font;let n=ce(t.size,e.size);typeof n=="string"&&(n=parseInt(n,10));let r=ce(t.style,e.style);r&&!(""+r).match(gz)&&(console.warn('Invalid font style specified: "'+r+'"'),r=void 0);const i={family:ce(t.family,e.family),lineHeight:mz(ce(t.lineHeight,e.lineHeight),n),size:n,style:r,weight:ce(t.weight,e.weight),string:""};return i.string=az(i),i}function xf(t,e,n,r){let i,o,s;for(i=0,o=t.length;in&&a===0?0:a+l;return{min:s(r,-Math.abs(o)),max:s(i,o)}}function va(t,e){return Object.assign(Object.create(t),e)}function tb(t,e=[""],n,r,i=()=>t[0]){const o=n||t;typeof r>"u"&&(r=rC("_fallback",t));const s={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:r,_getTarget:i,override:a=>tb([a,...t],e,o,r)};return new Proxy(s,{deleteProperty(a,l){return delete a[l],delete a._keys,delete t[0][l],!0},get(a,l){return eC(a,l,()=>Cz(l,e,t,a))},getOwnPropertyDescriptor(a,l){return Reflect.getOwnPropertyDescriptor(a._scopes[0],l)},getPrototypeOf(){return Reflect.getPrototypeOf(t[0])},has(a,l){return T3(a).includes(l)},ownKeys(a){return T3(a)},set(a,l,c){const u=a._storage||(a._storage=i());return a[l]=u[l]=c,delete a._keys,!0}})}function tu(t,e,n,r){const i={_cacheable:!1,_proxy:t,_context:e,_subProxy:n,_stack:new Set,_descriptors:tC(t,r),setContext:o=>tu(t,o,n,r),override:o=>tu(t.override(o),e,n,r)};return new Proxy(i,{deleteProperty(o,s){return delete o[s],delete t[s],!0},get(o,s,a){return eC(o,s,()=>xz(o,s,a))},getOwnPropertyDescriptor(o,s){return o._descriptors.allKeys?Reflect.has(t,s)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,s)},getPrototypeOf(){return Reflect.getPrototypeOf(t)},has(o,s){return Reflect.has(t,s)},ownKeys(){return Reflect.ownKeys(t)},set(o,s,a){return t[s]=a,delete o[s],!0}})}function tC(t,e={scriptable:!0,indexable:!0}){const{_scriptable:n=e.scriptable,_indexable:r=e.indexable,_allKeys:i=e.allKeys}=t;return{allKeys:i,scriptable:n,indexable:r,isScriptable:ua(n)?n:()=>n,isIndexable:ua(r)?r:()=>r}}const bz=(t,e)=>t?t+Yv(e):e,eb=(t,e)=>pe(e)&&t!=="adapters"&&(Object.getPrototypeOf(e)===null||e.constructor===Object);function eC(t,e,n){if(Object.prototype.hasOwnProperty.call(t,e)||e==="constructor")return t[e];const r=n();return t[e]=r,r}function xz(t,e,n){const{_proxy:r,_context:i,_subProxy:o,_descriptors:s}=t;let a=r[e];return ua(a)&&s.isScriptable(e)&&(a=wz(e,a,t,n)),Qe(a)&&a.length&&(a=_z(e,a,t,s.isIndexable)),eb(e,a)&&(a=tu(a,i,o&&o[e],s)),a}function wz(t,e,n,r){const{_proxy:i,_context:o,_subProxy:s,_stack:a}=n;if(a.has(t))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+t);a.add(t);let l=e(o,s||r);return a.delete(t),eb(t,l)&&(l=nb(i._scopes,i,t,l)),l}function _z(t,e,n,r){const{_proxy:i,_context:o,_subProxy:s,_descriptors:a}=n;if(typeof o.index<"u"&&r(t))return e[o.index%e.length];if(pe(e[0])){const l=e,c=i._scopes.filter(u=>u!==l);e=[];for(const u of l){const h=nb(c,i,t,u);e.push(tu(h,o,s&&s[t],a))}}return e}function nC(t,e,n){return ua(t)?t(e,n):t}const Sz=(t,e)=>t===!0?e:typeof t=="string"?ca(e,t):void 0;function kz(t,e,n,r,i){for(const o of e){const s=Sz(n,o);if(s){t.add(s);const a=nC(s._fallback,n,i);if(typeof a<"u"&&a!==n&&a!==r)return a}else if(s===!1&&typeof r<"u"&&n!==r)return null}return!1}function nb(t,e,n,r){const i=e._rootScopes,o=nC(e._fallback,n,r),s=[...t,...i],a=new Set;a.add(r);let l=M3(a,s,n,o||n,r);return l===null||typeof o<"u"&&o!==n&&(l=M3(a,s,o,l,r),l===null)?!1:tb(Array.from(a),[""],i,o,()=>Az(e,n,r))}function M3(t,e,n,r,i){for(;n;)n=kz(t,e,n,r,i);return n}function Az(t,e,n){const r=t._getTarget();e in r||(r[e]={});const i=r[e];return Qe(i)&&pe(n)?n:i||{}}function Cz(t,e,n,r){let i;for(const o of e)if(i=rC(bz(o,t),n),typeof i<"u")return eb(t,i)?nb(n,r,t,i):i}function rC(t,e){for(const n of e){if(!n)continue;const r=n[t];if(typeof r<"u")return r}}function T3(t){let e=t._keys;return e||(e=t._keys=Lz(t._scopes)),e}function Lz(t){const e=new Set;for(const n of t)for(const r of Object.keys(n).filter(i=>!i.startsWith("_")))e.add(r);return Array.from(e)}function iC(t,e,n,r){const{iScale:i}=t,{key:o="r"}=this._parsing,s=new Array(r);let a,l,c,u;for(a=0,l=r;aet==="x"?"y":"x";function Pz(t,e,n,r){const i=t.skip?e:t,o=e,s=n.skip?e:n,a=I5(o,i),l=I5(s,o);let c=a/(a+l),u=l/(a+l);c=isNaN(c)?0:c,u=isNaN(u)?0:u;const h=r*c,p=r*u;return{previous:{x:o.x-h*(s.x-i.x),y:o.y-h*(s.y-i.y)},next:{x:o.x+p*(s.x-i.x),y:o.y+p*(s.y-i.y)}}}function Ez(t,e,n){const r=t.length;let i,o,s,a,l,c=eu(t,0);for(let u=0;u!c.skip)),e.cubicInterpolationMode==="monotone")Tz(t,i);else{let c=r?t[t.length-1]:t[0];for(o=0,s=t.length;ot.ownerDocument.defaultView.getComputedStyle(t,null);function Iz(t,e){return l1(t).getPropertyValue(e)}const Fz=["top","right","bottom","left"];function il(t,e,n){const r={};n=n?"-"+n:"";for(let i=0;i<4;i++){const o=Fz[i];r[o]=parseFloat(t[e+"-"+o+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}const Dz=(t,e,n)=>(t>0||e>0)&&(!n||!n.shadowRoot);function jz(t,e){const n=t.touches,r=n&&n.length?n[0]:t,{offsetX:i,offsetY:o}=r;let s=!1,a,l;if(Dz(i,o,t.target))a=i,l=o;else{const c=e.getBoundingClientRect();a=r.clientX-c.left,l=r.clientY-c.top,s=!0}return{x:a,y:l,box:s}}function Ba(t,e){if("native"in t)return t;const{canvas:n,currentDevicePixelRatio:r}=e,i=l1(n),o=i.boxSizing==="border-box",s=il(i,"padding"),a=il(i,"border","width"),{x:l,y:c,box:u}=jz(t,n),h=s.left+(u&&a.left),p=s.top+(u&&a.top);let{width:d,height:y}=e;return o&&(d-=s.width+a.width,y-=s.height+a.height),{x:Math.round((l-h)/d*n.width/r),y:Math.round((c-p)/y*n.height/r)}}function Bz(t,e,n){let r,i;if(e===void 0||n===void 0){const o=t&&ib(t);if(!o)e=t.clientWidth,n=t.clientHeight;else{const s=o.getBoundingClientRect(),a=l1(o),l=il(a,"border","width"),c=il(a,"padding");e=s.width-c.width-l.width,n=s.height-c.height-l.height,r=tg(a.maxWidth,o,"clientWidth"),i=tg(a.maxHeight,o,"clientHeight")}}return{width:e,height:n,maxWidth:r||Q0,maxHeight:i||Q0}}const pp=t=>Math.round(t*10)/10;function zz(t,e,n,r){const i=l1(t),o=il(i,"margin"),s=tg(i.maxWidth,t,"clientWidth")||Q0,a=tg(i.maxHeight,t,"clientHeight")||Q0,l=Bz(t,e,n);let{width:c,height:u}=l;if(i.boxSizing==="content-box"){const p=il(i,"border","width"),d=il(i,"padding");c-=d.width+p.width,u-=d.height+p.height}return c=Math.max(0,c-o.width),u=Math.max(0,r?c/r:u-o.height),c=pp(Math.min(c,s,l.maxWidth)),u=pp(Math.min(u,a,l.maxHeight)),c&&!u&&(u=pp(c/2)),(e!==void 0||n!==void 0)&&r&&l.height&&u>l.height&&(u=l.height,c=pp(Math.floor(u*r))),{width:c,height:u}}function O3(t,e,n){const r=e||1,i=Math.floor(t.height*r),o=Math.floor(t.width*r);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const s=t.canvas;return s.style&&(n||!s.style.height&&!s.style.width)&&(s.style.height=`${t.height}px`,s.style.width=`${t.width}px`),t.currentDevicePixelRatio!==r||s.height!==i||s.width!==o?(t.currentDevicePixelRatio=r,s.height=i,s.width=o,t.ctx.setTransform(r,0,0,r,0,0),!0):!1}const $z=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};rb()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch{}return t}();function R3(t,e){const n=Iz(t,e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function za(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}}function Uz(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:r==="middle"?n<.5?t.y:e.y:r==="after"?n<1?t.y:e.y:n>0?e.y:t.y}}function qz(t,e,n,r){const i={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},s=za(t,i,n),a=za(i,o,n),l=za(o,e,n),c=za(s,a,n),u=za(a,l,n);return za(c,u,n)}const Wz=function(t,e){return{x(n){return t+t+e-n},setWidth(n){e=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,r){return n-r},leftForLtr(n,r){return n-r}}},Vz=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function Dc(t,e,n){return t?Wz(e,n):Vz()}function sC(t,e){let n,r;(e==="ltr"||e==="rtl")&&(n=t.canvas.style,r=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=r)}function aC(t,e){e!==void 0&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function lC(t){return t==="angle"?{between:bh,compare:HB,normalize:Yr}:{between:ns,compare:(e,n)=>e-n,normalize:e=>e}}function I3({start:t,end:e,count:n,loop:r,style:i}){return{start:t%n,end:e%n,loop:r&&(e-t+1)%n===0,style:i}}function Hz(t,e,n){const{property:r,start:i,end:o}=n,{between:s,normalize:a}=lC(r),l=e.length;let{start:c,end:u,loop:h}=t,p,d;if(h){for(c+=l,u+=l,p=0,d=l;pl(i,S,m)&&a(i,S)!==0,P=()=>a(o,m)===0||l(o,S,m),z=()=>b||A(),I=()=>!b||P();for(let R=u,X=u;R<=h;++R)w=e[R%s],!w.skip&&(m=c(w[r]),m!==S&&(b=l(m,i,o),_===null&&z()&&(_=a(m,i)===0?R:X),_!==null&&I()&&(y.push(I3({start:_,end:R,loop:p,count:s,style:d})),_=null),X=R,S=m));return _!==null&&y.push(I3({start:_,end:h,loop:p,count:s,style:d})),y}function uC(t,e){const n=[],r=t.segments;for(let i=0;ii&&t[o%e].skip;)o--;return o%=e,{start:i,end:o}}function Yz(t,e,n,r){const i=t.length,o=[];let s=e,a=t[e],l;for(l=e+1;l<=n;++l){const c=t[l%i];c.skip||c.stop?a.skip||(r=!1,o.push({start:e%i,end:(l-1)%i,loop:r}),e=s=c.stop?l:null):(s=l,a.skip&&(e=l)),a=c}return s!==null&&o.push({start:e%i,end:s%i,loop:r}),o}function Xz(t,e){const n=t.points,r=t.options.spanGaps,i=n.length;if(!i)return[];const o=!!t._loop,{start:s,end:a}=Gz(n,i,o,r);if(r===!0)return F3(t,[{start:s,end:a,loop:o}],n,e);const l=aa({chart:e,initial:n.initial,numSteps:s,currentStep:Math.min(r-n.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=GA.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let n=0;this._charts.forEach((r,i)=>{if(!r.running||!r.items.length)return;const o=r.items;let s=o.length-1,a=!1,l;for(;s>=0;--s)l=o[s],l._active?(l._total>r.duration&&(r.duration=l._total),l.tick(e),a=!0):(o[s]=o[o.length-1],o.pop());a&&(i.draw(),this._notify(i,r,e,"progress")),o.length||(r.running=!1,this._notify(i,r,e,"complete"),r.initial=!1),n+=o.length}),this._lastDate=e,n===0&&(this._running=!1)}_getAnims(e){const n=this._charts;let r=n.get(e);return r||(r={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(e,r)),r}listen(e,n,r){this._getAnims(e).listeners[n].push(r)}add(e,n){!n||!n.length||this._getAnims(e).items.push(...n)}has(e){return this._getAnims(e).items.length>0}start(e){const n=this._charts.get(e);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((r,i)=>Math.max(r,i._duration),0),this._refresh())}running(e){if(!this._running)return!1;const n=this._charts.get(e);return!(!n||!n.running||!n.items.length)}stop(e){const n=this._charts.get(e);if(!n||!n.items.length)return;const r=n.items;let i=r.length-1;for(;i>=0;--i)r[i].cancel();n.items=[],this._notify(e,n,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var Yo=new Qz;const j3="transparent",Zz={boolean(t,e,n){return n>.5?e:t},color(t,e,n){const r=N3(t||j3),i=r.valid&&N3(e||j3);return i&&i.valid?i.mix(r,n).hexString():e},number(t,e,n){return t+(e-t)*n}};class t${constructor(e,n,r,i){const o=n[r];i=xf([e.to,i,o,e.from]);const s=xf([e.from,o,i]);this._active=!0,this._fn=e.fn||Zz[e.type||typeof s],this._easing=Df[e.easing]||Df.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=n,this._prop=r,this._from=s,this._to=i,this._promises=void 0}active(){return this._active}update(e,n,r){if(this._active){this._notify(!1);const i=this._target[this._prop],o=r-this._start,s=this._duration-o;this._start=r,this._duration=Math.floor(Math.max(s,e.duration)),this._total+=o,this._loop=!!e.loop,this._to=xf([e.to,n,i,e.from]),this._from=xf([e.from,i,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const n=e-this._start,r=this._duration,i=this._prop,o=this._from,s=this._loop,a=this._to;let l;if(this._active=o!==a&&(s||n1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[i]=this._fn(o,a,l)}wait(){const e=this._promises||(this._promises=[]);return new Promise((n,r)=>{e.push({res:n,rej:r})})}_notify(e){const n=e?"res":"rej",r=this._promises||[];for(let i=0;i{const o=e[i];if(!pe(o))return;const s={};for(const a of n)s[a]=o[a];(Qe(o.properties)&&o.properties||[i]).forEach(a=>{(a===i||!r.has(a))&&r.set(a,s)})})}_animateOptions(e,n){const r=n.options,i=n$(e,r);if(!i)return[];const o=this._createAnimations(i,r);return r.$shared&&e$(e.options.$animations,r).then(()=>{e.options=r},()=>{}),o}_createAnimations(e,n){const r=this._properties,i=[],o=e.$animations||(e.$animations={}),s=Object.keys(n),a=Date.now();let l;for(l=s.length-1;l>=0;--l){const c=s[l];if(c.charAt(0)==="$")continue;if(c==="options"){i.push(...this._animateOptions(e,n));continue}const u=n[c];let h=o[c];const p=r.get(c);if(h)if(p&&h.active()){h.update(p,u,a);continue}else h.cancel();if(!p||!p.duration){e[c]=u;continue}o[c]=h=new t$(p,e,c,u),i.push(h)}return i}update(e,n){if(this._properties.size===0){Object.assign(e,n);return}const r=this._createAnimations(e,n);if(r.length)return Yo.add(this._chart,r),!0}}function e$(t,e){const n=[],r=Object.keys(e);for(let i=0;i0||!n&&o<0)return i.index}return null}function U3(t,e){const{chart:n,_cachedMeta:r}=t,i=n._stacks||(n._stacks={}),{iScale:o,vScale:s,index:a}=r,l=o.axis,c=s.axis,u=s$(o,s,r),h=e.length;let p;for(let d=0;dn[r].axis===e).shift()}function c$(t,e){return va(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function u$(t,e,n){return va(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function ef(t,e){const n=t.controller.index,r=t.vScale&&t.vScale.axis;if(r){e=e||t._parsed;for(const i of e){const o=i._stacks;if(!o||o[r]===void 0||o[r][n]===void 0)return;delete o[r][n],o[r]._visualValues!==void 0&&o[r]._visualValues[n]!==void 0&&delete o[r]._visualValues[n]}}}const Ym=t=>t==="reset"||t==="none",q3=(t,e)=>e?t:Object.assign({},t),f$=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:hC(n,!0),values:null};class Hi{constructor(e,n){this.chart=e,this._ctx=e.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Hm(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&ef(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,n=this._cachedMeta,r=this.getDataset(),i=(h,p,d,y)=>h==="x"?p:h==="r"?y:d,o=n.xAxisID=ce(r.xAxisID,Gm(e,"x")),s=n.yAxisID=ce(r.yAxisID,Gm(e,"y")),a=n.rAxisID=ce(r.rAxisID,Gm(e,"r")),l=n.indexAxis,c=n.iAxisID=i(l,o,s,a),u=n.vAxisID=i(l,s,o,a);n.xScale=this.getScaleForId(o),n.yScale=this.getScaleForId(s),n.rScale=this.getScaleForId(a),n.iScale=this.getScaleForId(c),n.vScale=this.getScaleForId(u)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const n=this._cachedMeta;return e===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&A3(this._data,this),e._stacked&&ef(e)}_dataCheck(){const e=this.getDataset(),n=e.data||(e.data=[]),r=this._data;if(pe(n)){const i=this._cachedMeta;this._data=o$(n,i)}else if(r!==n){if(r){A3(r,this);const i=this._cachedMeta;ef(i),i._parsed=[]}n&&Object.isExtensible(n)&&KB(n,this),this._syncList=[],this._data=n}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const n=this._cachedMeta,r=this.getDataset();let i=!1;this._dataCheck();const o=n._stacked;n._stacked=Hm(n.vScale,n),n.stack!==r.stack&&(i=!0,ef(n),n.stack=r.stack),this._resyncElements(e),(i||o!==n._stacked)&&(U3(this,n._parsed),n._stacked=Hm(n.vScale,n))}configure(){const e=this.chart.config,n=e.datasetScopeKeys(this._type),r=e.getOptionScopes(this.getDataset(),n,!0);this.options=e.createResolver(r,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,n){const{_cachedMeta:r,_data:i}=this,{iScale:o,_stacked:s}=r,a=o.axis;let l=e===0&&n===i.length?!0:r._sorted,c=e>0&&r._parsed[e-1],u,h,p;if(this._parsing===!1)r._parsed=i,r._sorted=!0,p=i;else{Qe(i[e])?p=this.parseArrayData(r,i,e,n):pe(i[e])?p=this.parseObjectData(r,i,e,n):p=this.parsePrimitiveData(r,i,e,n);const d=()=>h[a]===null||c&&h[a]b||h=0;--p)if(!y()){this.updateRangeFromParsed(c,e,d,l);break}}return c}getAllParsedValues(e){const n=this._cachedMeta._parsed,r=[];let i,o,s;for(i=0,o=n.length;i=0&&ethis.getContext(r,i,n),b=c.resolveNamedOptions(p,d,y,h);return b.$shared&&(b.$shared=l,o[s]=Object.freeze(q3(b,l))),b}_resolveAnimations(e,n,r){const i=this.chart,o=this._cachedDataOpts,s=`animation-${n}`,a=o[s];if(a)return a;let l;if(i.options.animation!==!1){const u=this.chart.config,h=u.datasetAnimationScopeKeys(this._type,n),p=u.getOptionScopes(this.getDataset(),h);l=u.createResolver(p,this.getContext(e,r,n))}const c=new fC(i,l&&l.animations);return l&&l._cacheable&&(o[s]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,n){return!n||Ym(e)||this.chart._animationsDisabled}_getSharedOptions(e,n){const r=this.resolveDataElementOptions(e,n),i=this._sharedOptions,o=this.getSharedOptions(r),s=this.includeOptions(n,o)||o!==i;return this.updateSharedOptions(o,n,r),{sharedOptions:o,includeOptions:s}}updateElement(e,n,r,i){Ym(i)?Object.assign(e,r):this._resolveAnimations(n,i).update(e,r)}updateSharedOptions(e,n,r){e&&!Ym(n)&&this._resolveAnimations(void 0,n).update(e,r)}_setStyle(e,n,r,i){e.active=i;const o=this.getStyle(n,i);this._resolveAnimations(n,r,i).update(e,{options:!i&&this.getSharedOptions(o)||o})}removeHoverStyle(e,n,r){this._setStyle(e,r,"active",!1)}setHoverStyle(e,n,r){this._setStyle(e,r,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const n=this._data,r=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const i=r.length,o=n.length,s=Math.min(o,i);s&&this.parse(0,s),o>i?this._insertElements(i,o-i,e):o{for(c.length+=n,a=c.length-1;a>=s;a--)c[a]=c[a-n]};for(l(o),a=e;ai-o))}return t._cache.$bar}function d$(t){const e=t.iScale,n=h$(e,t.type);let r=e._length,i,o,s,a;const l=()=>{s===32767||s===-32768||(vh(a)&&(r=Math.min(r,Math.abs(s-a)||r)),a=s)};for(i=0,o=n.length;i0?i[t-1]:null,a=tMath.abs(a)&&(l=a,c=s),e[n.axis]=c,e._custom={barStart:l,barEnd:c,start:i,end:o,min:s,max:a}}function dC(t,e,n,r){return Qe(t)?m$(t,e,n,r):e[n.axis]=n.parse(t,r),e}function W3(t,e,n,r){const i=t.iScale,o=t.vScale,s=i.getLabels(),a=i===o,l=[];let c,u,h,p;for(c=n,u=n+r;c=n?1:-1)}function v$(t){let e,n,r,i,o;return t.horizontal?(e=t.base>t.x,n="left",r="right"):(e=t.baseu.controller.options.grouped),o=r.options.stacked,s=[],a=this._cachedMeta.controller.getParsed(n),l=a&&a[r.axis],c=u=>{const h=u._parsed.find(d=>d[r.axis]===l),p=h&&h[u.vScale.axis];if(be(p)||isNaN(p))return!0};for(const u of i)if(!(n!==void 0&&c(u))&&((o===!1||s.indexOf(u.stack)===-1||o===void 0&&u.stack===void 0)&&s.push(u.stack),u.index===e))break;return s.length||s.push(void 0),s}_getStackCount(e){return this._getStacks(void 0,e).length}_getStackIndex(e,n,r){const i=this._getStacks(e,r),o=n!==void 0?i.indexOf(n):-1;return o===-1?i.length-1:o}_getRuler(){const e=this.options,n=this._cachedMeta,r=n.iScale,i=[];let o,s;for(o=0,s=n.data.length;o=0;--r)n=Math.max(n,e[r].size(this.resolveDataElementOptions(r))/2);return n>0&&n}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart.data.labels||[],{xScale:i,yScale:o}=n,s=this.getParsed(e),a=i.getLabelForValue(s.x),l=o.getLabelForValue(s.y),c=s._custom;return{label:r[e]||"",value:"("+a+", "+l+(c?", "+c:"")+")"}}update(e){const n=this._cachedMeta.data;this.updateElements(n,0,n.length,e)}updateElements(e,n,r,i){const o=i==="reset",{iScale:s,vScale:a}=this._cachedMeta,{sharedOptions:l,includeOptions:c}=this._getSharedOptions(n,i),u=s.axis,h=a.axis;for(let p=n;pbh(S,a,l,!0)?1:Math.max(A,A*n,P,P*n),y=(S,A,P)=>bh(S,a,l,!0)?-1:Math.min(A,A*n,P,P*n),b=d(0,c,h),_=d(_n,u,p),m=y(Ye,c,h),w=y(Ye+_n,u,p);r=(b-m)/2,i=(_-w)/2,o=-(b+m)/2,s=-(_+w)/2}return{ratioX:r,ratioY:i,offsetX:o,offsetY:s}}class Ja extends Hi{constructor(e,n){super(e,n),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,n){const r=this.getDataset().data,i=this._cachedMeta;if(this._parsing===!1)i._parsed=r;else{let o=l=>+r[l];if(pe(r[e])){const{key:l="value"}=this._parsing;o=c=>+ca(r[c],l)}let s,a;for(s=e,a=e+n;s0&&!isNaN(e)?Ge*(Math.abs(e)/n):0}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart,i=r.data.labels||[],o=Wh(n._parsed[e],r.options.locale);return{label:i[e]||"",value:o}}getMaxBorderWidth(e){let n=0;const r=this.chart;let i,o,s,a,l;if(!e){for(i=0,o=r.data.datasets.length;ie!=="spacing",_indexable:e=>e!=="spacing"&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")}),Mt(Ja,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:r,color:i}}=e.legend.options;return n.labels.map((o,s)=>{const l=e.getDatasetMeta(0).controller.getStyle(s);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:i,lineWidth:l.borderWidth,pointStyle:r,hidden:!e.getDataVisibility(s),index:s}})}return[]}},onClick(e,n,r){r.chart.toggleDataVisibility(n.index),r.chart.update()}}}});class zf extends Hi{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const n=this._cachedMeta,{dataset:r,data:i=[],_dataset:o}=n,s=this.chart._animationsDisabled;let{start:a,count:l}=XA(n,i,s);this._drawStart=a,this._drawCount=l,KA(n)&&(a=0,l=i.length),r._chart=this.chart,r._datasetIndex=this.index,r._decimated=!!o._decimated,r.points=i;const c=this.resolveDatasetElementOptions(e);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(r,void 0,{animated:!s,options:c},e),this.updateElements(i,a,l,e)}updateElements(e,n,r,i){const o=i==="reset",{iScale:s,vScale:a,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:u,includeOptions:h}=this._getSharedOptions(n,i),p=s.axis,d=a.axis,{spanGaps:y,segment:b}=this.options,_=Zc(y)?y:Number.POSITIVE_INFINITY,m=this.chart._animationsDisabled||o||i==="none",w=n+r,S=e.length;let A=n>0&&this.getParsed(n-1);for(let P=0;P=w){I.skip=!0;continue}const R=this.getParsed(P),X=be(R[d]),C=I[p]=s.getPixelForValue(R[p],P),L=I[d]=o||X?a.getBasePixel():a.getPixelForValue(l?this.applyStack(a,R,l):R[d],P);I.skip=isNaN(C)||isNaN(L)||X,I.stop=P>0&&Math.abs(R[p]-A[p])>_,b&&(I.parsed=R,I.raw=c.data[P]),h&&(I.options=u||this.resolveDataElementOptions(P,z.active?"active":i)),m||this.updateElement(z,P,I,i),A=R}}getMaxOverflow(){const e=this._cachedMeta,n=e.dataset,r=n.options&&n.options.borderWidth||0,i=e.data||[];if(!i.length)return r;const o=i[0].size(this.resolveDataElementOptions(0)),s=i[i.length-1].size(this.resolveDataElementOptions(i.length-1));return Math.max(r,o,s)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}Mt(zf,"id","line"),Mt(zf,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),Mt(zf,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});class $f extends Hi{constructor(e,n){super(e,n),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart,i=r.data.labels||[],o=Wh(n._parsed[e].r,r.options.locale);return{label:i[e]||"",value:o}}parseObjectData(e,n,r,i){return iC.bind(this)(e,n,r,i)}update(e){const n=this._cachedMeta.data;this._updateRadius(),this.updateElements(n,0,n.length,e)}getMinMax(){const e=this._cachedMeta,n={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((r,i)=>{const o=this.getParsed(i).r;!isNaN(o)&&this.chart.getDataVisibility(i)&&(on.max&&(n.max=o))}),n}_updateRadius(){const e=this.chart,n=e.chartArea,r=e.options,i=Math.min(n.right-n.left,n.bottom-n.top),o=Math.max(i/2,0),s=Math.max(r.cutoutPercentage?o/100*r.cutoutPercentage:1,0),a=(o-s)/e.getVisibleDatasetCount();this.outerRadius=o-a*this.index,this.innerRadius=this.outerRadius-a}updateElements(e,n,r,i){const o=i==="reset",s=this.chart,l=s.options.animation,c=this._cachedMeta.rScale,u=c.xCenter,h=c.yCenter,p=c.getIndexAngle(0)-.5*Ye;let d=p,y;const b=360/this.countVisibleElements();for(y=0;y{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&n++}),n}_computeAngle(e,n,r){return this.chart.getDataVisibility(e)?qi(this.resolveDataElementOptions(e,n).angle||r):0}}Mt($f,"id","polarArea"),Mt($f,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),Mt($f,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:r,color:i}}=e.legend.options;return n.labels.map((o,s)=>{const l=e.getDatasetMeta(0).controller.getStyle(s);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:i,lineWidth:l.borderWidth,pointStyle:r,hidden:!e.getDataVisibility(s),index:s}})}return[]}},onClick(e,n,r){r.chart.toggleDataVisibility(n.index),r.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class j5 extends Ja{}Mt(j5,"id","pie"),Mt(j5,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});class Jp extends Hi{getLabelAndValue(e){const n=this._cachedMeta.vScale,r=this.getParsed(e);return{label:n.getLabels()[e],value:""+n.getLabelForValue(r[n.axis])}}parseObjectData(e,n,r,i){return iC.bind(this)(e,n,r,i)}update(e){const n=this._cachedMeta,r=n.dataset,i=n.data||[],o=n.iScale.getLabels();if(r.points=i,e!=="resize"){const s=this.resolveDatasetElementOptions(e);this.options.showLine||(s.borderWidth=0);const a={_loop:!0,_fullLoop:o.length===i.length,options:s};this.updateElement(r,void 0,a,e)}this.updateElements(i,0,i.length,e)}updateElements(e,n,r,i){const o=this._cachedMeta.rScale,s=i==="reset";for(let a=n;a0&&this.getParsed(n-1);for(let A=n;A0&&Math.abs(z[d]-S[d])>m,_&&(I.parsed=z,I.raw=c.data[A]),p&&(I.options=h||this.resolveDataElementOptions(A,P.active?"active":i)),w||this.updateElement(P,A,I,i),S=z}this.updateSharedOptions(h,i,u)}getMaxOverflow(){const e=this._cachedMeta,n=e.data||[];if(!this.options.showLine){let a=0;for(let l=n.length-1;l>=0;--l)a=Math.max(a,n[l].size(this.resolveDataElementOptions(l))/2);return a>0&&a}const r=e.dataset,i=r.options&&r.options.borderWidth||0;if(!n.length)return i;const o=n[0].size(this.resolveDataElementOptions(0)),s=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(i,o,s)/2}}Mt(Qp,"id","scatter"),Mt(Qp,"defaults",{datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1}),Mt(Qp,"overrides",{interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}});var S$=Object.freeze({__proto__:null,BarController:Bf,BubbleController:Kp,DoughnutController:Ja,LineController:zf,PieController:j5,PolarAreaController:$f,RadarController:Jp,ScatterController:Qp});function Ra(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ob{constructor(e){Mt(this,"options");this.options=e||{}}static override(e){Object.assign(ob.prototype,e)}init(){}formats(){return Ra()}parse(){return Ra()}format(){return Ra()}add(){return Ra()}diff(){return Ra()}startOf(){return Ra()}endOf(){return Ra()}}var k$={_date:ob};function A$(t,e,n,r){const{controller:i,data:o,_sorted:s}=t,a=i._cachedMeta.iScale;if(a&&e===a.axis&&e!=="r"&&s&&o.length){const l=a._reversePixels?YB:rs;if(r){if(i._sharedOptions){const c=o[0],u=typeof c.getRange=="function"&&c.getRange(e);if(u){const h=l(o,e,n-u),p=l(o,e,n+u);return{lo:h.lo,hi:p.hi}}}}else return l(o,e,n)}return{lo:0,hi:o.length-1}}function Vh(t,e,n,r,i){const o=t.getSortedVisibleDatasetMetas(),s=n[e];for(let a=0,l=o.length;a{l[s]&&l[s](e[n],i)&&(o.push({element:l,datasetIndex:c,index:u}),a=a||l.inRange(e.x,e.y,i))}),r&&!a?[]:o}var P$={evaluateInteractionItems:Vh,modes:{index(t,e,n,r){const i=Ba(e,t),o=n.axis||"x",s=n.includeInvisible||!1,a=n.intersect?Km(t,i,o,r,s):Jm(t,i,o,!1,r,s),l=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach(c=>{const u=a[0].index,h=c.data[u];h&&!h.skip&&l.push({element:h,datasetIndex:c.index,index:u})}),l):[]},dataset(t,e,n,r){const i=Ba(e,t),o=n.axis||"xy",s=n.includeInvisible||!1;let a=n.intersect?Km(t,i,o,r,s):Jm(t,i,o,!1,r,s);if(a.length>0){const l=a[0].datasetIndex,c=t.getDatasetMeta(l).data;a=[];for(let u=0;un.pos===e)}function Y3(t,e){return t.filter(n=>pC.indexOf(n.pos)===-1&&n.box.axis===e)}function rf(t,e){return t.sort((n,r)=>{const i=e?r:n,o=e?n:r;return i.weight===o.weight?i.index-o.index:i.weight-o.weight})}function E$(t){const e=[];let n,r,i,o,s,a;for(n=0,r=(t||[]).length;nc.box.fullSize),!0),r=rf(nf(e,"left"),!0),i=rf(nf(e,"right")),o=rf(nf(e,"top"),!0),s=rf(nf(e,"bottom")),a=Y3(e,"x"),l=Y3(e,"y");return{fullSize:n,leftAndTop:r.concat(o),rightAndBottom:i.concat(l).concat(s).concat(a),chartArea:nf(e,"chartArea"),vertical:r.concat(i).concat(l),horizontal:o.concat(s).concat(a)}}function X3(t,e,n,r){return Math.max(t[n],e[n])+Math.max(t[r],e[r])}function gC(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function R$(t,e,n,r){const{pos:i,box:o}=n,s=t.maxPadding;if(!pe(i)){n.size&&(t[i]-=n.size);const h=r[n.stack]||{size:0,count:1};h.size=Math.max(h.size,n.horizontal?o.height:o.width),n.size=h.size/h.count,t[i]+=n.size}o.getPadding&&gC(s,o.getPadding());const a=Math.max(0,e.outerWidth-X3(s,t,"left","right")),l=Math.max(0,e.outerHeight-X3(s,t,"top","bottom")),c=a!==t.w,u=l!==t.h;return t.w=a,t.h=l,n.horizontal?{same:c,other:u}:{same:u,other:c}}function I$(t){const e=t.maxPadding;function n(r){const i=Math.max(e[r]-t[r],0);return t[r]+=i,i}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}function F$(t,e){const n=e.maxPadding;function r(i){const o={left:0,top:0,right:0,bottom:0};return i.forEach(s=>{o[s]=Math.max(e[s],n[s])}),o}return r(t?["left","right"]:["top","bottom"])}function wf(t,e,n,r){const i=[];let o,s,a,l,c,u;for(o=0,s=t.length,c=0;o{typeof b.beforeLayout=="function"&&b.beforeLayout()});const u=l.reduce((b,_)=>_.box.options&&_.box.options.display===!1?b:b+1,0)||1,h=Object.freeze({outerWidth:e,outerHeight:n,padding:i,availableWidth:o,availableHeight:s,vBoxMaxWidth:o/2/u,hBoxMaxHeight:s/2}),p=Object.assign({},i);gC(p,pr(r));const d=Object.assign({maxPadding:p,w:o,h:s,x:i.left,y:i.top},i),y=T$(l.concat(c),h);wf(a.fullSize,d,h,y),wf(l,d,h,y),wf(c,d,h,y)&&wf(l,d,h,y),I$(d),K3(a.leftAndTop,d,h,y),d.x+=d.w,d.y+=d.h,K3(a.rightAndBottom,d,h,y),t.chartArea={left:d.left,top:d.top,right:d.left+d.w,bottom:d.top+d.h,height:d.h,width:d.w},Pe(a.chartArea,b=>{const _=b.box;Object.assign(_,t.chartArea),_.update(d.w,d.h,{left:0,top:0,right:0,bottom:0})})}};class mC{acquireContext(e,n){}releaseContext(e){return!1}addEventListener(e,n,r){}removeEventListener(e,n,r){}getDevicePixelRatio(){return 1}getMaximumSize(e,n,r,i){return n=Math.max(0,n||e.width),r=r||e.height,{width:n,height:Math.max(0,i?Math.floor(n/i):r)}}isAttached(e){return!0}updateConfig(e){}}class D$ extends mC{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const Zp="$chartjs",j$={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},J3=t=>t===null||t==="";function B$(t,e){const n=t.style,r=t.getAttribute("height"),i=t.getAttribute("width");if(t[Zp]={initial:{height:r,width:i,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",J3(i)){const o=R3(t,"width");o!==void 0&&(t.width=o)}if(J3(r))if(t.style.height==="")t.height=t.width/(e||2);else{const o=R3(t,"height");o!==void 0&&(t.height=o)}return t}const yC=$z?{passive:!0}:!1;function z$(t,e,n){t&&t.addEventListener(e,n,yC)}function $$(t,e,n){t&&t.canvas&&t.canvas.removeEventListener(e,n,yC)}function U$(t,e){const n=j$[t.type]||t.type,{x:r,y:i}=Ba(t,e);return{type:n,chart:e,native:t,x:r!==void 0?r:null,y:i!==void 0?i:null}}function eg(t,e){for(const n of t)if(n===e||n.contains(e))return!0}function q$(t,e,n){const r=t.canvas,i=new MutationObserver(o=>{let s=!1;for(const a of o)s=s||eg(a.addedNodes,r),s=s&&!eg(a.removedNodes,r);s&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}function W$(t,e,n){const r=t.canvas,i=new MutationObserver(o=>{let s=!1;for(const a of o)s=s||eg(a.removedNodes,r),s=s&&!eg(a.addedNodes,r);s&&n()});return i.observe(document,{childList:!0,subtree:!0}),i}const wh=new Map;let Q3=0;function vC(){const t=window.devicePixelRatio;t!==Q3&&(Q3=t,wh.forEach((e,n)=>{n.currentDevicePixelRatio!==t&&e()}))}function V$(t,e){wh.size||window.addEventListener("resize",vC),wh.set(t,e)}function H$(t){wh.delete(t),wh.size||window.removeEventListener("resize",vC)}function G$(t,e,n){const r=t.canvas,i=r&&ib(r);if(!i)return;const o=YA((a,l)=>{const c=i.clientWidth;n(a,l),c{const l=a[0],c=l.contentRect.width,u=l.contentRect.height;c===0&&u===0||o(c,u)});return s.observe(i),V$(t,o),s}function Qm(t,e,n){n&&n.disconnect(),e==="resize"&&H$(t)}function Y$(t,e,n){const r=t.canvas,i=YA(o=>{t.ctx!==null&&n(U$(o,t))},t);return z$(r,e,i),i}class X$ extends mC{acquireContext(e,n){const r=e&&e.getContext&&e.getContext("2d");return r&&r.canvas===e?(B$(e,n),r):null}releaseContext(e){const n=e.canvas;if(!n[Zp])return!1;const r=n[Zp].initial;["height","width"].forEach(o=>{const s=r[o];be(s)?n.removeAttribute(o):n.setAttribute(o,s)});const i=r.style||{};return Object.keys(i).forEach(o=>{n.style[o]=i[o]}),n.width=n.width,delete n[Zp],!0}addEventListener(e,n,r){this.removeEventListener(e,n);const i=e.$proxies||(e.$proxies={}),s={attach:q$,detach:W$,resize:G$}[n]||Y$;i[n]=s(e,n,r)}removeEventListener(e,n){const r=e.$proxies||(e.$proxies={}),i=r[n];if(!i)return;({attach:Qm,detach:Qm,resize:Qm}[n]||$$)(e,n,i),r[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,n,r,i){return zz(e,n,r,i)}isAttached(e){const n=e&&ib(e);return!!(n&&n.isConnected)}}function K$(t){return!rb()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?D$:X$}class Xi{constructor(){Mt(this,"x");Mt(this,"y");Mt(this,"active",!1);Mt(this,"options");Mt(this,"$animations")}tooltipPosition(e){const{x:n,y:r}=this.getProps(["x","y"],e);return{x:n,y:r}}hasValue(){return Zc(this.x)&&Zc(this.y)}getProps(e,n){const r=this.$animations;if(!n||!r)return this;const i={};return e.forEach(o=>{i[o]=r[o]&&r[o].active()?r[o]._to:this[o]}),i}}Mt(Xi,"defaults",{}),Mt(Xi,"defaultRoutes");function J$(t,e){const n=t.options.ticks,r=Q$(t),i=Math.min(n.maxTicksLimit||r,r),o=n.major.enabled?tU(e):[],s=o.length,a=o[0],l=o[s-1],c=[];if(s>i)return eU(e,c,o,s/i),c;const u=Z$(o,e,i);if(s>0){let h,p;const d=s>1?Math.round((l-a)/(s-1)):null;for(mp(e,c,u,be(d)?0:a-d,a),h=0,p=s-1;hi)return l}return Math.max(i,1)}function tU(t){const e=[];let n,r;for(n=0,r=t.length;nt==="left"?"right":t==="right"?"left":t,Z3=(t,e,n)=>e==="top"||e==="left"?t[e]+n:t[e]-n,t_=(t,e)=>Math.min(e||t,t);function e_(t,e){const n=[],r=t.length/e,i=t.length;let o=0;for(;os+a)))return l}function oU(t,e){Pe(t,n=>{const r=n.gc,i=r.length/2;let o;if(i>e){for(o=0;or?r:n,r=i&&n>r?n:r,{min:Hr(n,Hr(r,n)),max:Hr(r,Hr(n,r))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){$e(this.options.beforeUpdate,[this])}update(e,n,r){const{beginAtZero:i,grace:o,ticks:s}=this.options,a=s.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=n,this._margins=r=Object.assign({left:0,right:0,top:0,bottom:0},r),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+r.left+r.right:this.height+r.top+r.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=vz(this,o,i),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a=o||r<=1||!this.isHorizontal()){this.labelRotation=i;return}const u=this._getLabelSizes(),h=u.widest.width,p=u.highest.height,d=Un(this.chart.width-h,0,this.maxWidth);a=e.offset?this.maxWidth/r:d/(r-1),h+6>a&&(a=d/(r-(e.offset?.5:1)),l=this.maxHeight-of(e.grid)-n.padding-n_(e.title,this.chart.options.font),c=Math.sqrt(h*h+p*p),s=Xv(Math.min(Math.asin(Un((u.highest.height+6)/a,-1,1)),Math.asin(Un(l/c,-1,1))-Math.asin(Un(p/c,-1,1)))),s=Math.max(i,Math.min(o,s))),this.labelRotation=s}afterCalculateLabelRotation(){$e(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){$e(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:n,options:{ticks:r,title:i,grid:o}}=this,s=this._isVisible(),a=this.isHorizontal();if(s){const l=n_(i,n.options.font);if(a?(e.width=this.maxWidth,e.height=of(o)+l):(e.height=this.maxHeight,e.width=of(o)+l),r.display&&this.ticks.length){const{first:c,last:u,widest:h,highest:p}=this._getLabelSizes(),d=r.padding*2,y=qi(this.labelRotation),b=Math.cos(y),_=Math.sin(y);if(a){const m=r.mirror?0:_*h.width+b*p.height;e.height=Math.min(this.maxHeight,e.height+m+d)}else{const m=r.mirror?0:b*h.width+_*p.height;e.width=Math.min(this.maxWidth,e.width+m+d)}this._calculatePadding(c,u,_,b)}}this._handleMargins(),a?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,n,r,i){const{ticks:{align:o,padding:s},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const u=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let p=0,d=0;l?c?(p=i*e.width,d=r*n.height):(p=r*e.height,d=i*n.width):o==="start"?d=n.width:o==="end"?p=e.width:o!=="inner"&&(p=e.width/2,d=n.width/2),this.paddingLeft=Math.max((p-u+s)*this.width/(this.width-u),0),this.paddingRight=Math.max((d-h+s)*this.width/(this.width-h),0)}else{let u=n.height/2,h=e.height/2;o==="start"?(u=0,h=e.height):o==="end"&&(u=n.height,h=0),this.paddingTop=u+s,this.paddingBottom=h+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){$e(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:n}=this.options;return n==="top"||n==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let n,r;for(n=0,r=e.length;n({width:s[X]||0,height:a[X]||0});return{first:R(0),last:R(n-1),widest:R(z),highest:R(I),widths:s,heights:a}}getLabelForValue(e){return e}getPixelForValue(e,n){return NaN}getValueForPixel(e){}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const n=this._startPixel+e*this._length;return GB(this._alignToPixels?Oa(this.chart,n,0):n)}getDecimalForPixel(e){const n=(e-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:n}=this;return e<0&&n<0?n:e>0&&n>0?e:0}getContext(e){const n=this.ticks||[];if(e>=0&&ea*i?a/r:l/i:l*i0}_computeGridLineItems(e){const n=this.axis,r=this.chart,i=this.options,{grid:o,position:s,border:a}=i,l=o.offset,c=this.isHorizontal(),h=this.ticks.length+(l?1:0),p=of(o),d=[],y=a.setContext(this.getContext()),b=y.display?y.width:0,_=b/2,m=function(rt){return Oa(r,rt,b)};let w,S,A,P,z,I,R,X,C,L,T,W;if(s==="top")w=m(this.bottom),I=this.bottom-p,X=w-_,L=m(e.top)+_,W=e.bottom;else if(s==="bottom")w=m(this.top),L=e.top,W=m(e.bottom)-_,I=w+_,X=this.top+p;else if(s==="left")w=m(this.right),z=this.right-p,R=w-_,C=m(e.left)+_,T=e.right;else if(s==="right")w=m(this.left),C=e.left,T=m(e.right)-_,z=w+_,R=this.left+p;else if(n==="x"){if(s==="center")w=m((e.top+e.bottom)/2+.5);else if(pe(s)){const rt=Object.keys(s)[0],lt=s[rt];w=m(this.chart.scales[rt].getPixelForValue(lt))}L=e.top,W=e.bottom,I=w+_,X=I+p}else if(n==="y"){if(s==="center")w=m((e.left+e.right)/2);else if(pe(s)){const rt=Object.keys(s)[0],lt=s[rt];w=m(this.chart.scales[rt].getPixelForValue(lt))}z=w-_,R=z-p,C=e.left,T=e.right}const V=ce(i.ticks.maxTicksLimit,h),ot=Math.max(1,Math.ceil(h/V));for(S=0;S0&&(Z-=q/2);break}xt={left:Z,top:J,width:q+M.width,height:$+M.height,color:ot.backdropColor}}_.push({label:A,font:X,textOffset:T,options:{rotation:b,color:lt,strokeColor:Y,strokeWidth:et,textAlign:at,textBaseline:W,translation:[P,z],backdrop:xt}})}return _}_getXAxisLabelAlignment(){const{position:e,ticks:n}=this.options;if(-qi(this.labelRotation))return e==="top"?"left":"right";let i="center";return n.align==="start"?i="left":n.align==="end"?i="right":n.align==="inner"&&(i="inner"),i}_getYAxisLabelAlignment(e){const{position:n,ticks:{crossAlign:r,mirror:i,padding:o}}=this.options,s=this._getLabelSizes(),a=e+o,l=s.widest.width;let c,u;return n==="left"?i?(u=this.right+o,r==="near"?c="left":r==="center"?(c="center",u+=l/2):(c="right",u+=l)):(u=this.right-a,r==="near"?c="right":r==="center"?(c="center",u-=l/2):(c="left",u=this.left)):n==="right"?i?(u=this.left+o,r==="near"?c="right":r==="center"?(c="center",u-=l/2):(c="left",u-=l)):(u=this.left+a,r==="near"?c="left":r==="center"?(c="center",u+=l/2):(c="right",u=this.right)):c="right",{textAlign:c,x:u}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:e.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){const{ctx:e,options:{backgroundColor:n},left:r,top:i,width:o,height:s}=this;n&&(e.save(),e.fillStyle=n,e.fillRect(r,i,o,s),e.restore())}getLineWidthForValue(e){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const i=this.ticks.findIndex(o=>o.value===e);return i>=0?n.setContext(this.getContext(i)).lineWidth:0}drawGrid(e){const n=this.options.grid,r=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let o,s;const a=(l,c,u)=>{!u.width||!u.color||(r.save(),r.lineWidth=u.width,r.strokeStyle=u.color,r.setLineDash(u.borderDash||[]),r.lineDashOffset=u.borderDashOffset,r.beginPath(),r.moveTo(l.x,l.y),r.lineTo(c.x,c.y),r.stroke(),r.restore())};if(n.display)for(o=0,s=i.length;o{this.draw(o)}}]:[{z:r,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:i,draw:()=>{this.drawBorder()}},{z:n,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(e){const n=this.chart.getSortedVisibleDatasetMetas(),r=this.axis+"AxisID",i=[];let o,s;for(o=0,s=n.length;o{const r=n.split("."),i=r.pop(),o=[t].concat(r).join("."),s=e[n].split("."),a=s.pop(),l=s.join(".");Ze.route(o,i,l,a)})}function hU(t){return"id"in t&&"defaults"in t}class dU{constructor(){this.controllers=new yp(Hi,"datasets",!0),this.elements=new yp(Xi,"elements"),this.plugins=new yp(Object,"plugins"),this.scales=new yp(bl,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,n,r){[...n].forEach(i=>{const o=r||this._getRegistryForType(i);r||o.isForType(i)||o===this.plugins&&i.id?this._exec(e,o,i):Pe(i,s=>{const a=r||this._getRegistryForType(s);this._exec(e,a,s)})})}_exec(e,n,r){const i=Yv(e);$e(r["before"+i],[],r),n[e](r),$e(r["after"+i],[],r)}_getRegistryForType(e){for(let n=0;no.filter(a=>!s.some(l=>a.plugin.id===l.plugin.id));this._notify(i(n,r),e,"stop"),this._notify(i(r,n),e,"start")}}function gU(t){const e={},n=[],r=Object.keys(yo.plugins.items);for(let o=0;o1&&r_(t[0].toLowerCase());if(r)return r}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function i_(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}}function _U(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.filter(r=>r.xAxisID===t||r.yAxisID===t);if(n.length)return i_(t,"x",n[0])||i_(t,"y",n[0])}return{}}function SU(t,e){const n=pl[t.type]||{scales:{}},r=e.scales||{},i=B5(t.type,e),o=Object.create(null);return Object.keys(r).forEach(s=>{const a=r[s];if(!pe(a))return console.error(`Invalid scale configuration for scale: ${s}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${s}`);const l=z5(s,a,_U(s,t),Ze.scales[a.type]),c=xU(l,i),u=n.scales||{};o[s]=If(Object.create(null),[{axis:l},a,u[l],u[c]])}),t.data.datasets.forEach(s=>{const a=s.type||t.type,l=s.indexAxis||B5(a,e),u=(pl[a]||{}).scales||{};Object.keys(u).forEach(h=>{const p=bU(h,l),d=s[p+"AxisID"]||p;o[d]=o[d]||Object.create(null),If(o[d],[{axis:p},r[d],u[h]])})}),Object.keys(o).forEach(s=>{const a=o[s];If(a,[Ze.scales[a.type],Ze.scale])}),o}function bC(t){const e=t.options||(t.options={});e.plugins=ce(e.plugins,{}),e.scales=SU(t,e)}function xC(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function kU(t){return t=t||{},t.data=xC(t.data),bC(t),t}const o_=new Map,wC=new Set;function vp(t,e){let n=o_.get(t);return n||(n=e(),o_.set(t,n),wC.add(n)),n}const sf=(t,e,n)=>{const r=ca(e,n);r!==void 0&&t.add(r)};class AU{constructor(e){this._config=kU(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=xC(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),bC(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return vp(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,n){return vp(`${e}.transition.${n}`,()=>[[`datasets.${e}.transitions.${n}`,`transitions.${n}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,n){return vp(`${e}-${n}`,()=>[[`datasets.${e}.elements.${n}`,`datasets.${e}`,`elements.${n}`,""]])}pluginScopeKeys(e){const n=e.id,r=this.type;return vp(`${r}-plugin-${n}`,()=>[[`plugins.${n}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,n){const r=this._scopeCache;let i=r.get(e);return(!i||n)&&(i=new Map,r.set(e,i)),i}getOptionScopes(e,n,r){const{options:i,type:o}=this,s=this._cachedScopes(e,r),a=s.get(n);if(a)return a;const l=new Set;n.forEach(u=>{e&&(l.add(e),u.forEach(h=>sf(l,e,h))),u.forEach(h=>sf(l,i,h)),u.forEach(h=>sf(l,pl[o]||{},h)),u.forEach(h=>sf(l,Ze,h)),u.forEach(h=>sf(l,F5,h))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),wC.has(n)&&s.set(n,c),c}chartOptionScopes(){const{options:e,type:n}=this;return[e,pl[n]||{},Ze.datasets[n]||{},{type:n},Ze,F5]}resolveNamedOptions(e,n,r,i=[""]){const o={$shared:!0},{resolver:s,subPrefixes:a}=s_(this._resolverCache,e,i);let l=s;if(LU(s,n)){o.$shared=!1,r=ua(r)?r():r;const c=this.createResolver(e,r,a);l=tu(s,r,c)}for(const c of n)o[c]=l[c];return o}createResolver(e,n,r=[""],i){const{resolver:o}=s_(this._resolverCache,e,r);return pe(n)?tu(o,n,void 0,i):o}}function s_(t,e,n){let r=t.get(e);r||(r=new Map,t.set(e,r));const i=n.join();let o=r.get(i);return o||(o={resolver:tb(e,n),subPrefixes:n.filter(a=>!a.toLowerCase().includes("hover"))},r.set(i,o)),o}const CU=t=>pe(t)&&Object.getOwnPropertyNames(t).some(e=>ua(t[e]));function LU(t,e){const{isScriptable:n,isIndexable:r}=tC(t);for(const i of e){const o=n(i),s=r(i),a=(s||o)&&t[i];if(o&&(ua(a)||CU(a))||s&&Qe(a))return!0}return!1}var NU="4.4.6";const PU=["top","bottom","left","right","chartArea"];function a_(t,e){return t==="top"||t==="bottom"||PU.indexOf(t)===-1&&e==="x"}function l_(t,e){return function(n,r){return n[t]===r[t]?n[e]-r[e]:n[t]-r[t]}}function c_(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("afterRender"),$e(n&&n.onComplete,[t],e)}function EU(t){const e=t.chart,n=e.options.animation;$e(n&&n.onProgress,[t],e)}function _C(t){return rb()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const t0={},u_=t=>{const e=_C(t);return Object.values(t0).filter(n=>n.canvas===e).pop()};function MU(t,e,n){const r=Object.keys(t);for(const i of r){const o=+i;if(o>=e){const s=t[i];delete t[i],(n>0||o>e)&&(t[o+n]=s)}}}function TU(t,e,n,r){return!n||t.type==="mouseout"?null:r?e:t}function bp(t,e,n){return t.options.clip?t[n]:e[n]}function OU(t,e){const{xScale:n,yScale:r}=t;return n&&r?{left:bp(n,e,"left"),right:bp(n,e,"right"),top:bp(r,e,"top"),bottom:bp(r,e,"bottom")}:e}var Rs;let c1=(Rs=class{static register(...e){yo.add(...e),f_()}static unregister(...e){yo.remove(...e),f_()}constructor(e,n){const r=this.config=new AU(n),i=_C(e),o=u_(i);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const s=r.createResolver(r.chartOptionScopes(),this.getContext());this.platform=new(r.platform||K$(i)),this.platform.updateConfig(r);const a=this.platform.acquireContext(i,s.aspectRatio),l=a&&a.canvas,c=l&&l.height,u=l&&l.width;if(this.id=IB(),this.ctx=a,this.canvas=l,this.width=u,this.height=c,this._options=s,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new pU,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=JB(h=>this.update(h),s.resizeDelay||0),this._dataChanges=[],t0[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}Yo.listen(this,"complete",c_),Yo.listen(this,"progress",EU),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:n},width:r,height:i,_aspectRatio:o}=this;return be(e)?n&&o?o:i?r/i:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return yo}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():O3(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return E3(this.canvas,this.ctx),this}stop(){return Yo.stop(this),this}resize(e,n){Yo.running(this)?this._resizeBeforeDraw={width:e,height:n}:this._resize(e,n)}_resize(e,n){const r=this.options,i=this.canvas,o=r.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(i,e,n,o),a=r.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,O3(this,a,!0)&&(this.notifyPlugins("resize",{size:s}),$e(r.onResize,[this,s],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};Pe(n,(r,i)=>{r.id=i})}buildOrUpdateScales(){const e=this.options,n=e.scales,r=this.scales,i=Object.keys(r).reduce((s,a)=>(s[a]=!1,s),{});let o=[];n&&(o=o.concat(Object.keys(n).map(s=>{const a=n[s],l=z5(s,a),c=l==="r",u=l==="x";return{options:a,dposition:c?"chartArea":u?"bottom":"left",dtype:c?"radialLinear":u?"category":"linear"}}))),Pe(o,s=>{const a=s.options,l=a.id,c=z5(l,a),u=ce(a.type,s.dtype);(a.position===void 0||a_(a.position,c)!==a_(s.dposition))&&(a.position=s.dposition),i[l]=!0;let h=null;if(l in r&&r[l].type===u)h=r[l];else{const p=yo.getScale(u);h=new p({id:l,type:u,ctx:this.ctx,chart:this}),r[h.id]=h}h.init(a,e)}),Pe(i,(s,a)=>{s||delete r[a]}),Pe(r,s=>{hr.configure(this,s,s.options),hr.addBox(this,s)})}_updateMetasets(){const e=this._metasets,n=this.data.datasets.length,r=e.length;if(e.sort((i,o)=>i.index-o.index),r>n){for(let i=n;in.length&&delete this._stacks,e.forEach((r,i)=>{n.filter(o=>o===r._dataset).length===0&&this._destroyDatasetMeta(i)})}buildOrUpdateControllers(){const e=[],n=this.data.datasets;let r,i;for(this._removeUnreferencedMetasets(),r=0,i=n.length;r{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const n=this.config;n.update();const r=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),i=this._animationsDisabled=!r.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let s=0;for(let c=0,u=this.data.datasets.length;c{c.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(l_("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){Pe(this.scales,e=>{hr.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,n=new Set(Object.keys(this._listeners)),r=new Set(e.events);(!w3(n,r)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,n=this._getUniformDataChanges()||[];for(const{method:r,start:i,count:o}of n){const s=r==="_removeElements"?-o:o;MU(e,i,s)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const n=this.data.datasets.length,r=o=>new Set(e.filter(s=>s[0]===o).map((s,a)=>a+","+s.splice(1).join(","))),i=r(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;hr.update(this,this.width,this.height,e);const n=this.chartArea,r=n.width<=0||n.height<=0;this._layers=[],Pe(this.boxes,i=>{r&&i.position==="chartArea"||(i.configure&&i.configure(),this._layers.push(...i._layers()))},this),this._layers.forEach((i,o)=>{i._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let n=0,r=this.data.datasets.length;n=0;--n)this._drawDataset(e[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const n=this.ctx,r=e._clip,i=!r.disabled,o=OU(e,this.chartArea),s={meta:e,index:e.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",s)!==!1&&(i&&s1(n,{left:r.left===!1?0:o.left-r.left,right:r.right===!1?this.width:o.right+r.right,top:r.top===!1?0:o.top-r.top,bottom:r.bottom===!1?this.height:o.bottom+r.bottom}),e.controller.draw(),i&&a1(n),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(e){return is(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,n,r,i){const o=P$.modes[n];return typeof o=="function"?o(this,e,r,i):[]}getDatasetMeta(e){const n=this.data.datasets[e],r=this._metasets;let i=r.filter(o=>o&&o._dataset===n).pop();return i||(i={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:e,_dataset:n,_parsed:[],_sorted:!1},r.push(i)),i}getContext(){return this.$context||(this.$context=va(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const n=this.data.datasets[e];if(!n)return!1;const r=this.getDatasetMeta(e);return typeof r.hidden=="boolean"?!r.hidden:!n.hidden}setDatasetVisibility(e,n){const r=this.getDatasetMeta(e);r.hidden=!n}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,n,r){const i=r?"show":"hide",o=this.getDatasetMeta(e),s=o.controller._resolveAnimations(void 0,i);vh(n)?(o.data[n].hidden=!r,this.update()):(this.setDatasetVisibility(e,r),s.update(o,{visible:r}),this.update(a=>a.datasetIndex===e?i:void 0))}hide(e,n){this._updateVisibility(e,n,!1)}show(e,n){this._updateVisibility(e,n,!0)}_destroyDatasetMeta(e){const n=this._metasets[e];n&&n.controller&&n.controller._destroy(),delete this._metasets[e]}_stop(){let e,n;for(this.stop(),Yo.remove(this),e=0,n=this.data.datasets.length;e{n.addEventListener(this,o,s),e[o]=s},i=(o,s,a)=>{o.offsetX=s,o.offsetY=a,this._eventHandler(o)};Pe(this.options.events,o=>r(o,i))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,n=this.platform,r=(l,c)=>{n.addEventListener(this,l,c),e[l]=c},i=(l,c)=>{e[l]&&(n.removeEventListener(this,l,c),delete e[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let s;const a=()=>{i("attach",a),this.attached=!0,this.resize(),r("resize",o),r("detach",s)};s=()=>{this.attached=!1,i("resize",o),this._stop(),this._resize(0,0),r("attach",a)},n.isAttached(this.canvas)?a():s()}unbindEvents(){Pe(this._listeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._listeners={},Pe(this._responsiveListeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,n,r){const i=r?"set":"remove";let o,s,a,l;for(n==="dataset"&&(o=this.getDatasetMeta(e[0].datasetIndex),o.controller["_"+i+"DatasetHoverStyle"]()),a=0,l=e.length;a{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[s],index:s}});!K0(r,n)&&(this._active=r,this._lastEvent=null,this._updateHoverStyles(r,n))}notifyPlugins(e,n,r){return this._plugins.notify(this,e,n,r)}isPluginEnabled(e){return this._plugins._cache.filter(n=>n.plugin.id===e).length===1}_updateHoverStyles(e,n,r){const i=this.options.hover,o=(l,c)=>l.filter(u=>!c.some(h=>u.datasetIndex===h.datasetIndex&&u.index===h.index)),s=o(n,e),a=r?e:o(e,n);s.length&&this.updateHoverStyle(s,i.mode,!1),a.length&&i.mode&&this.updateHoverStyle(a,i.mode,!0)}_eventHandler(e,n){const r={event:e,replay:n,cancelable:!0,inChartArea:this.isPointInArea(e)},i=s=>(s.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",r,i)===!1)return;const o=this._handleEvent(e,n,r.inChartArea);return r.cancelable=!1,this.notifyPlugins("afterEvent",r,i),(o||r.changed)&&this.render(),this}_handleEvent(e,n,r){const{_active:i=[],options:o}=this,s=n,a=this._getActiveElements(e,i,r,s),l=$B(e),c=TU(e,this._lastEvent,r,l);r&&(this._lastEvent=null,$e(o.onHover,[e,a,this],this),l&&$e(o.onClick,[e,a,this],this));const u=!K0(a,i);return(u||n)&&(this._active=a,this._updateHoverStyles(a,i,n)),this._lastEvent=c,u}_getActiveElements(e,n,r,i){if(e.type==="mouseout")return[];if(!r)return n;const o=this.options.hover;return this.getElementsAtEventForMode(e,o.mode,o,i)}},Mt(Rs,"defaults",Ze),Mt(Rs,"instances",t0),Mt(Rs,"overrides",pl),Mt(Rs,"registry",yo),Mt(Rs,"version",NU),Mt(Rs,"getChart",u_),Rs);function f_(){return Pe(c1.instances,t=>t._plugins.invalidate())}function RU(t,e,n){const{startAngle:r,pixelMargin:i,x:o,y:s,outerRadius:a,innerRadius:l}=e;let c=i/a;t.beginPath(),t.arc(o,s,a,r-c,n+c),l>i?(c=i/l,t.arc(o,s,l,n+c,r-c,!0)):t.arc(o,s,i,n+_n,r-_n),t.closePath(),t.clip()}function IU(t){return Zv(t,["outerStart","outerEnd","innerStart","innerEnd"])}function FU(t,e,n,r){const i=IU(t.options.borderRadius),o=(n-e)/2,s=Math.min(o,r*e/2),a=l=>{const c=(n-Math.min(o,l))*r/2;return Un(l,0,Math.min(o,c))};return{outerStart:a(i.outerStart),outerEnd:a(i.outerEnd),innerStart:Un(i.innerStart,0,s),innerEnd:Un(i.innerEnd,0,s)}}function ac(t,e,n,r){return{x:n+t*Math.cos(e),y:r+t*Math.sin(e)}}function ng(t,e,n,r,i,o){const{x:s,y:a,startAngle:l,pixelMargin:c,innerRadius:u}=e,h=Math.max(e.outerRadius+r+n-c,0),p=u>0?u+r+n+c:0;let d=0;const y=i-l;if(r){const ot=u>0?u-r:0,rt=h>0?h-r:0,lt=(ot+rt)/2,Y=lt!==0?y*lt/(lt+r):y;d=(y-Y)/2}const b=Math.max(.001,y*h-n/Ye)/h,_=(y-b)/2,m=l+_+d,w=i-_-d,{outerStart:S,outerEnd:A,innerStart:P,innerEnd:z}=FU(e,p,h,w-m),I=h-S,R=h-A,X=m+S/I,C=w-A/R,L=p+P,T=p+z,W=m+P/L,V=w-z/T;if(t.beginPath(),o){const ot=(X+C)/2;if(t.arc(s,a,h,X,ot),t.arc(s,a,h,ot,C),A>0){const et=ac(R,C,s,a);t.arc(et.x,et.y,A,C,w+_n)}const rt=ac(T,w,s,a);if(t.lineTo(rt.x,rt.y),z>0){const et=ac(T,V,s,a);t.arc(et.x,et.y,z,w+_n,V+Math.PI)}const lt=(w-z/p+(m+P/p))/2;if(t.arc(s,a,p,w-z/p,lt,!0),t.arc(s,a,p,lt,m+P/p,!0),P>0){const et=ac(L,W,s,a);t.arc(et.x,et.y,P,W+Math.PI,m-_n)}const Y=ac(I,m,s,a);if(t.lineTo(Y.x,Y.y),S>0){const et=ac(I,X,s,a);t.arc(et.x,et.y,S,m-_n,X)}}else{t.moveTo(s,a);const ot=Math.cos(X)*h+s,rt=Math.sin(X)*h+a;t.lineTo(ot,rt);const lt=Math.cos(C)*h+s,Y=Math.sin(C)*h+a;t.lineTo(lt,Y)}t.closePath()}function DU(t,e,n,r,i){const{fullCircles:o,startAngle:s,circumference:a}=e;let l=e.endAngle;if(o){ng(t,e,n,r,l,i);for(let c=0;c=Ge||b,m=ns(a,u+d,h+d);return _&&m}getCenterPoint(n){const{x:r,y:i,startAngle:o,endAngle:s,innerRadius:a,outerRadius:l}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],n),{offset:c,spacing:u}=this.options,h=(o+s)/2,p=(a+l+u+c)/2;return{x:r+Math.cos(h)*p,y:i+Math.sin(h)*p}}tooltipPosition(n){return this.getCenterPoint(n)}draw(n){const{options:r,circumference:i}=this,o=(r.offset||0)/4,s=(r.spacing||0)/2,a=r.circular;if(this.pixelMargin=r.borderAlign==="inner"?.33:0,this.fullCircles=i>Ge?Math.floor(i/Ge):0,i===0||this.innerRadius<0||this.outerRadius<0)return;n.save();const l=(this.startAngle+this.endAngle)/2;n.translate(Math.cos(l)*o,Math.sin(l)*o);const c=1-Math.sin(Math.min(Ye,i||0)),u=o*c;n.fillStyle=r.backgroundColor,n.strokeStyle=r.borderColor,DU(n,this,u,s,a),jU(n,this,u,s,a),n.restore()}}Mt(_f,"id","arc"),Mt(_f,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0}),Mt(_f,"defaultRoutes",{backgroundColor:"backgroundColor"}),Mt(_f,"descriptors",{_scriptable:!0,_indexable:n=>n!=="borderDash"});function SC(t,e,n=e){t.lineCap=ce(n.borderCapStyle,e.borderCapStyle),t.setLineDash(ce(n.borderDash,e.borderDash)),t.lineDashOffset=ce(n.borderDashOffset,e.borderDashOffset),t.lineJoin=ce(n.borderJoinStyle,e.borderJoinStyle),t.lineWidth=ce(n.borderWidth,e.borderWidth),t.strokeStyle=ce(n.borderColor,e.borderColor)}function BU(t,e,n){t.lineTo(n.x,n.y)}function zU(t){return t.stepped?cz:t.tension||t.cubicInterpolationMode==="monotone"?uz:BU}function kC(t,e,n={}){const r=t.length,{start:i=0,end:o=r-1}=n,{start:s,end:a}=e,l=Math.max(i,s),c=Math.min(o,a),u=ia&&o>a;return{count:r,start:l,loop:e.loop,ilen:c(s+(c?a-A:A))%o,S=()=>{b!==_&&(t.lineTo(u,_),t.lineTo(u,b),t.lineTo(u,m))};for(l&&(d=i[w(0)],t.moveTo(d.x,d.y)),p=0;p<=a;++p){if(d=i[w(p)],d.skip)continue;const A=d.x,P=d.y,z=A|0;z===y?(P_&&(_=P),u=(h*u+A)/++h):(S(),t.lineTo(A,P),y=z,h=0,b=_=P),m=P}S()}function $5(t){const e=t.options,n=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!n?UU:$U}function qU(t){return t.stepped?Uz:t.tension||t.cubicInterpolationMode==="monotone"?qz:za}function WU(t,e,n,r){let i=e._path;i||(i=e._path=new Path2D,e.path(i,n,r)&&i.closePath()),SC(t,e.options),t.stroke(i)}function VU(t,e,n,r){const{segments:i,options:o}=e,s=$5(e);for(const a of i)SC(t,o,a.style),t.beginPath(),s(t,e,a,{start:n,end:n+r-1})&&t.closePath(),t.stroke()}const HU=typeof Path2D=="function";function GU(t,e,n,r){HU&&!e.options.segment?WU(t,e,n,r):VU(t,e,n,r)}class Ys extends Xi{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,n){const r=this.options;if((r.tension||r.cubicInterpolationMode==="monotone")&&!r.stepped&&!this._pointsUpdated){const i=r.spanGaps?this._loop:this._fullLoop;Rz(this._points,r,e,i,n),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Xz(this,this.options.segment))}first(){const e=this.segments,n=this.points;return e.length&&n[e[0].start]}last(){const e=this.segments,n=this.points,r=e.length;return r&&n[e[r-1].end]}interpolate(e,n){const r=this.options,i=e[n],o=this.points,s=uC(this,{property:n,start:i,end:i});if(!s.length)return;const a=[],l=qU(r);let c,u;for(c=0,u=s.length;ce!=="borderDash"&&e!=="fill"});function h_(t,e,n,r){const i=t.options,{[n]:o}=t.getProps([n],r);return Math.abs(e-o)t.replace("rgb(","rgba(").replace(")",", 0.5)"));function CC(t){return U5[t%U5.length]}function LC(t){return d_[t%d_.length]}function tq(t,e){return t.borderColor=CC(e),t.backgroundColor=LC(e),++e}function eq(t,e){return t.backgroundColor=t.data.map(()=>CC(e++)),e}function nq(t,e){return t.backgroundColor=t.data.map(()=>LC(e++)),e}function rq(t){let e=0;return(n,r)=>{const i=t.getDatasetMeta(r).controller;i instanceof Ja?e=eq(n,e):i instanceof $f?e=nq(n,e):i&&(e=tq(n,e))}}function p_(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function iq(t){return t&&(t.borderColor||t.backgroundColor)}function oq(){return Ze.borderColor!=="rgba(0,0,0,0.1)"||Ze.backgroundColor!=="rgba(0,0,0,0.1)"}var sq={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,n){if(!n.enabled)return;const{data:{datasets:r},options:i}=t.config,{elements:o}=i,s=p_(r)||iq(i)||o&&p_(o)||oq();if(!n.forceOverride&&s)return;const a=rq(t);r.forEach(a)}};function aq(t,e,n,r,i){const o=i.samples||r;if(o>=n)return t.slice(e,e+n);const s=[],a=(n-2)/(o-2);let l=0;const c=e+n-1;let u=e,h,p,d,y,b;for(s[l++]=t[u],h=0;hd&&(d=y,p=t[w],b=w);s[l++]=p,u=b}return s[l++]=t[c],s}function lq(t,e,n,r){let i=0,o=0,s,a,l,c,u,h,p,d,y,b;const _=[],m=e+n-1,w=t[e].x,A=t[m].x-w;for(s=e;sb&&(b=c,p=s),i=(o*i+a.x)/++o;else{const z=s-1;if(!be(h)&&!be(p)){const I=Math.min(h,p),R=Math.max(h,p);I!==d&&I!==z&&_.push({...t[I],x:i}),R!==d&&R!==z&&_.push({...t[R],x:i})}s>0&&z!==d&&_.push(t[z]),_.push(a),u=P,o=0,y=b=c,h=p=d=s}}return _}function NC(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function g_(t){t.data.datasets.forEach(e=>{NC(e)})}function cq(t,e){const n=e.length;let r=0,i;const{iScale:o}=t,{min:s,max:a,minDefined:l,maxDefined:c}=o.getUserBounds();return l&&(r=Un(rs(e,o.axis,s).lo,0,n-1)),c?i=Un(rs(e,o.axis,a).hi+1,r,n)-r:i=n-r,{start:r,count:i}}var uq={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,n)=>{if(!n.enabled){g_(t);return}const r=t.width;t.data.datasets.forEach((i,o)=>{const{_data:s,indexAxis:a}=i,l=t.getDatasetMeta(o),c=s||i.data;if(xf([a,t.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;const u=t.scales[l.xAxisID];if(u.type!=="linear"&&u.type!=="time"||t.options.parsing)return;let{start:h,count:p}=cq(l,c);const d=n.threshold||4*r;if(p<=d){NC(i);return}be(s)&&(i._data=c,delete i.data,Object.defineProperty(i,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(b){this._data=b}}));let y;switch(n.algorithm){case"lttb":y=aq(c,h,p,r,n);break;case"min-max":y=lq(c,h,p,r);break;default:throw new Error(`Unsupported decimation algorithm '${n.algorithm}'`)}i._decimated=y})},destroy(t){g_(t)}};function fq(t,e,n){const r=t.segments,i=t.points,o=e.points,s=[];for(const a of r){let{start:l,end:c}=a;c=sb(l,c,i);const u=q5(n,i[l],i[c],a.loop);if(!e.segments){s.push({source:a,target:u,start:i[l],end:i[c]});continue}const h=uC(e,u);for(const p of h){const d=q5(n,o[p.start],o[p.end],p.loop),y=cC(a,i,d);for(const b of y)s.push({source:b,target:p,start:{[n]:m_(u,d,"start",Math.max)},end:{[n]:m_(u,d,"end",Math.min)}})}}return s}function q5(t,e,n,r){if(r)return;let i=e[t],o=n[t];return t==="angle"&&(i=Yr(i),o=Yr(o)),{property:t,start:i,end:o}}function hq(t,e){const{x:n=null,y:r=null}=t||{},i=e.points,o=[];return e.segments.forEach(({start:s,end:a})=>{a=sb(s,a,i);const l=i[s],c=i[a];r!==null?(o.push({x:l.x,y:r}),o.push({x:c.x,y:r})):n!==null&&(o.push({x:n,y:l.y}),o.push({x:n,y:c.y}))}),o}function sb(t,e,n){for(;e>t;e--){const r=n[e];if(!isNaN(r.x)&&!isNaN(r.y))break}return e}function m_(t,e,n,r){return t&&e?r(t[n],e[n]):t?t[n]:e?e[n]:0}function PC(t,e){let n=[],r=!1;return Qe(t)?(r=!0,n=t):n=hq(t,e),n.length?new Ys({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function y_(t){return t&&t.fill!==!1}function dq(t,e,n){let i=t[e].fill;const o=[e];let s;if(!n)return i;for(;i!==!1&&o.indexOf(i)===-1;){if(!pn(i))return i;if(s=t[i],!s)return!1;if(s.visible)return i;o.push(i),i=s.fill}return!1}function pq(t,e,n){const r=vq(t);if(pe(r))return isNaN(r.value)?!1:r;let i=parseFloat(r);return pn(i)&&Math.floor(i)===i?gq(r[0],e,i,n):["origin","start","end","stack","shape"].indexOf(r)>=0&&r}function gq(t,e,n,r){return(t==="-"||t==="+")&&(n=e+n),n===e||n<0||n>=r?!1:n}function mq(t,e){let n=null;return t==="start"?n=e.bottom:t==="end"?n=e.top:pe(t)?n=e.getPixelForValue(t.value):e.getBasePixel&&(n=e.getBasePixel()),n}function yq(t,e,n){let r;return t==="start"?r=n:t==="end"?r=e.options.reverse?e.min:e.max:pe(t)?r=t.value:r=e.getBaseValue(),r}function vq(t){const e=t.options,n=e.fill;let r=ce(n&&n.target,n);return r===void 0&&(r=!!e.backgroundColor),r===!1||r===null?!1:r===!0?"origin":r}function bq(t){const{scale:e,index:n,line:r}=t,i=[],o=r.segments,s=r.points,a=xq(e,n);a.push(PC({x:null,y:e.bottom},r));for(let l=0;l=0;--s){const a=i[s].$filler;a&&(a.line.updateControlPoints(o,a.axis),r&&a.fill&&e2(t.ctx,a,o))}},beforeDatasetsDraw(t,e,n){if(n.drawTime!=="beforeDatasetsDraw")return;const r=t.getSortedVisibleDatasetMetas();for(let i=r.length-1;i>=0;--i){const o=r[i].$filler;y_(o)&&e2(t.ctx,o,t.chartArea)}},beforeDatasetDraw(t,e,n){const r=e.meta.$filler;!y_(r)||n.drawTime!=="beforeDatasetDraw"||e2(t.ctx,r,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const w_=(t,e)=>{let{boxHeight:n=e,boxWidth:r=e}=t;return t.usePointStyle&&(n=Math.min(n,e),r=t.pointStyleWidth||Math.min(r,e)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(e,n)}},Mq=(t,e)=>t!==null&&e!==null&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class __ extends Xi{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n,r){this.maxWidth=e,this.maxHeight=n,this._margins=r,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let n=$e(e.generateLabels,[this.chart],this)||[];e.filter&&(n=n.filter(r=>e.filter(r,this.chart.data))),e.sort&&(n=n.sort((r,i)=>e.sort(r,i,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:e,ctx:n}=this;if(!e.display){this.width=this.height=0;return}const r=e.labels,i=In(r.font),o=i.size,s=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=w_(r,o);let c,u;n.font=i.string,this.isHorizontal()?(c=this.maxWidth,u=this._fitRows(s,o,a,l)+10):(u=this.maxHeight,c=this._fitCols(s,i,a,l)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(u,e.maxHeight||this.maxHeight)}_fitRows(e,n,r,i){const{ctx:o,maxWidth:s,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],u=i+a;let h=e;o.textAlign="left",o.textBaseline="middle";let p=-1,d=-u;return this.legendItems.forEach((y,b)=>{const _=r+n/2+o.measureText(y.text).width;(b===0||c[c.length-1]+_+2*a>s)&&(h+=u,c[c.length-(b>0?0:1)]=0,d+=u,p++),l[b]={left:0,top:d,row:p,width:_,height:i},c[c.length-1]+=_+a}),h}_fitCols(e,n,r,i){const{ctx:o,maxHeight:s,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],u=s-e;let h=a,p=0,d=0,y=0,b=0;return this.legendItems.forEach((_,m)=>{const{itemWidth:w,itemHeight:S}=Tq(r,n,o,_,i);m>0&&d+S+2*a>u&&(h+=p+a,c.push({width:p,height:d}),y+=p+a,b++,p=d=0),l[m]={left:y,top:d,col:b,width:w,height:S},p=Math.max(p,w),d+=S+a}),h+=p,c.push({width:p,height:d}),h}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:r,labels:{padding:i},rtl:o}}=this,s=Dc(o,this.left,this.width);if(this.isHorizontal()){let a=0,l=cr(r,this.left+i,this.right-this.lineWidths[a]);for(const c of n)a!==c.row&&(a=c.row,l=cr(r,this.left+i,this.right-this.lineWidths[a])),c.top+=this.top+e+i,c.left=s.leftForLtr(s.x(l),c.width),l+=c.width+i}else{let a=0,l=cr(r,this.top+e+i,this.bottom-this.columnSizes[a].height);for(const c of n)c.col!==a&&(a=c.col,l=cr(r,this.top+e+i,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+i,c.left=s.leftForLtr(s.x(c.left),c.width),l+=c.height+i}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const e=this.ctx;s1(e,this),this._draw(),a1(e)}}_draw(){const{options:e,columnSizes:n,lineWidths:r,ctx:i}=this,{align:o,labels:s}=e,a=Ze.color,l=Dc(e.rtl,this.left,this.width),c=In(s.font),{padding:u}=s,h=c.size,p=h/2;let d;this.drawTitle(),i.textAlign=l.textAlign("left"),i.textBaseline="middle",i.lineWidth=.5,i.font=c.string;const{boxWidth:y,boxHeight:b,itemHeight:_}=w_(s,h),m=function(z,I,R){if(isNaN(y)||y<=0||isNaN(b)||b<0)return;i.save();const X=ce(R.lineWidth,1);if(i.fillStyle=ce(R.fillStyle,a),i.lineCap=ce(R.lineCap,"butt"),i.lineDashOffset=ce(R.lineDashOffset,0),i.lineJoin=ce(R.lineJoin,"miter"),i.lineWidth=X,i.strokeStyle=ce(R.strokeStyle,a),i.setLineDash(ce(R.lineDash,[])),s.usePointStyle){const C={radius:b*Math.SQRT2/2,pointStyle:R.pointStyle,rotation:R.rotation,borderWidth:X},L=l.xPlus(z,y/2),T=I+p;QA(i,C,L,T,s.pointStyleWidth&&y)}else{const C=I+Math.max((h-b)/2,0),L=l.leftForLtr(z,y),T=rl(R.borderRadius);i.beginPath(),Object.values(T).some(W=>W!==0)?xh(i,{x:L,y:C,w:y,h:b,radius:T}):i.rect(L,C,y,b),i.fill(),X!==0&&i.stroke()}i.restore()},w=function(z,I,R){gl(i,R.text,z,I+_/2,c,{strikethrough:R.hidden,textAlign:l.textAlign(R.textAlign)})},S=this.isHorizontal(),A=this._computeTitleHeight();S?d={x:cr(o,this.left+u,this.right-r[0]),y:this.top+u+A,line:0}:d={x:this.left+u,y:cr(o,this.top+A+u,this.bottom-n[0].height),line:0},sC(this.ctx,e.textDirection);const P=_+u;this.legendItems.forEach((z,I)=>{i.strokeStyle=z.fontColor,i.fillStyle=z.fontColor;const R=i.measureText(z.text).width,X=l.textAlign(z.textAlign||(z.textAlign=s.textAlign)),C=y+p+R;let L=d.x,T=d.y;l.setWidth(this.width),S?I>0&&L+C+u>this.right&&(T=d.y+=P,d.line++,L=d.x=cr(o,this.left+u,this.right-r[d.line])):I>0&&T+P>this.bottom&&(L=d.x=L+n[d.line].width+u,d.line++,T=d.y=cr(o,this.top+A+u,this.bottom-n[d.line].height));const W=l.x(L);if(m(W,T,z),L=QB(X,L+y+p,S?L+C:this.right,e.rtl),w(l.x(L),T,z),S)d.x+=C+u;else if(typeof z.text!="string"){const V=c.lineHeight;d.y+=MC(z,V)+u}else d.y+=P}),aC(this.ctx,e.textDirection)}drawTitle(){const e=this.options,n=e.title,r=In(n.font),i=pr(n.padding);if(!n.display)return;const o=Dc(e.rtl,this.left,this.width),s=this.ctx,a=n.position,l=r.size/2,c=i.top+l;let u,h=this.left,p=this.width;if(this.isHorizontal())p=Math.max(...this.lineWidths),u=this.top+c,h=cr(e.align,h,this.right-p);else{const y=this.columnSizes.reduce((b,_)=>Math.max(b,_.height),0);u=c+cr(e.align,this.top,this.bottom-y-e.labels.padding-this._computeTitleHeight())}const d=cr(a,h,h+p);s.textAlign=o.textAlign(Jv(a)),s.textBaseline="middle",s.strokeStyle=n.color,s.fillStyle=n.color,s.font=r.string,gl(s,n.text,d,u,r)}_computeTitleHeight(){const e=this.options.title,n=In(e.font),r=pr(e.padding);return e.display?n.lineHeight+r.height:0}_getLegendItemAt(e,n){let r,i,o;if(ns(e,this.left,this.right)&&ns(n,this.top,this.bottom)){for(o=this.legendHitBoxes,r=0;ro.length>s.length?o:s)),e+n.size/2+r.measureText(i).width}function Rq(t,e,n){let r=t;return typeof e.text!="string"&&(r=MC(e,n)),r}function MC(t,e){const n=t.text?t.text.length:0;return e*n}function Iq(t,e){return!!((t==="mousemove"||t==="mouseout")&&(e.onHover||e.onLeave)||e.onClick&&(t==="click"||t==="mouseup"))}var Fq={id:"legend",_element:__,start(t,e,n){const r=t.legend=new __({ctx:t.ctx,options:n,chart:t});hr.configure(t,r,n),hr.addBox(t,r)},stop(t){hr.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,n){const r=t.legend;hr.configure(t,r,n),r.options=n},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,n){const r=e.datasetIndex,i=n.chart;i.isDatasetVisible(r)?(i.hide(r),e.hidden=!0):(i.show(r),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:i,color:o,useBorderRadius:s,borderRadius:a}}=t.legend.options;return t._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(n?0:void 0),u=pr(c.borderWidth);return{text:e[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(u.width+u.height)/4,strokeStyle:c.borderColor,pointStyle:r||c.pointStyle,rotation:c.rotation,textAlign:i||c.textAlign,borderRadius:s&&(a||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class ab extends Xi{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n){const r=this.options;if(this.left=0,this.top=0,!r.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=n;const i=Qe(r.text)?r.text.length:1;this._padding=pr(r.padding);const o=i*In(r.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:n,left:r,bottom:i,right:o,options:s}=this,a=s.align;let l=0,c,u,h;return this.isHorizontal()?(u=cr(a,r,o),h=n+e,c=o-r):(s.position==="left"?(u=r+e,h=cr(a,i,n),l=Ye*-.5):(u=o-e,h=cr(a,n,i),l=Ye*.5),c=i-n),{titleX:u,titleY:h,maxWidth:c,rotation:l}}draw(){const e=this.ctx,n=this.options;if(!n.display)return;const r=In(n.font),o=r.lineHeight/2+this._padding.top,{titleX:s,titleY:a,maxWidth:l,rotation:c}=this._drawArgs(o);gl(e,n.text,0,0,r,{color:n.color,maxWidth:l,rotation:c,textAlign:Jv(n.align),textBaseline:"middle",translation:[s,a]})}}function Dq(t,e){const n=new ab({ctx:t.ctx,options:e,chart:t});hr.configure(t,n,e),hr.addBox(t,n),t.titleBlock=n}var jq={id:"title",_element:ab,start(t,e,n){Dq(t,n)},stop(t){const e=t.titleBlock;hr.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,n){const r=t.titleBlock;hr.configure(t,r,n),r.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const xp=new WeakMap;var Bq={id:"subtitle",start(t,e,n){const r=new ab({ctx:t.ctx,options:n,chart:t});hr.configure(t,r,n),hr.addBox(t,r),xp.set(t,r)},stop(t){hr.removeBox(t,xp.get(t)),xp.delete(t)},beforeUpdate(t,e,n){const r=xp.get(t);hr.configure(t,r,n),r.options=n},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sf={average(t){if(!t.length)return!1;let e,n,r=new Set,i=0,o=0;for(e=0,n=t.length;ea+l)/r.size,y:i/o}},nearest(t,e){if(!t.length)return!1;let n=e.x,r=e.y,i=Number.POSITIVE_INFINITY,o,s,a;for(o=0,s=t.length;o-1?t.split(` +`):t}function zq(t,e){const{element:n,datasetIndex:r,index:i}=e,o=t.getDatasetMeta(r).controller,{label:s,value:a}=o.getLabelAndValue(i);return{chart:t,label:s,parsed:o.getParsed(i),raw:t.data.datasets[r].data[i],formattedValue:a,dataset:o.getDataset(),dataIndex:i,datasetIndex:r,element:n}}function S_(t,e){const n=t.chart.ctx,{body:r,footer:i,title:o}=t,{boxWidth:s,boxHeight:a}=e,l=In(e.bodyFont),c=In(e.titleFont),u=In(e.footerFont),h=o.length,p=i.length,d=r.length,y=pr(e.padding);let b=y.height,_=0,m=r.reduce((A,P)=>A+P.before.length+P.lines.length+P.after.length,0);if(m+=t.beforeBody.length+t.afterBody.length,h&&(b+=h*c.lineHeight+(h-1)*e.titleSpacing+e.titleMarginBottom),m){const A=e.displayColors?Math.max(a,l.lineHeight):l.lineHeight;b+=d*A+(m-d)*l.lineHeight+(m-1)*e.bodySpacing}p&&(b+=e.footerMarginTop+p*u.lineHeight+(p-1)*e.footerSpacing);let w=0;const S=function(A){_=Math.max(_,n.measureText(A).width+w)};return n.save(),n.font=c.string,Pe(t.title,S),n.font=l.string,Pe(t.beforeBody.concat(t.afterBody),S),w=e.displayColors?s+2+e.boxPadding:0,Pe(r,A=>{Pe(A.before,S),Pe(A.lines,S),Pe(A.after,S)}),w=0,n.font=u.string,Pe(t.footer,S),n.restore(),_+=y.width,{width:_,height:b}}function $q(t,e){const{y:n,height:r}=e;return nt.height-r/2?"bottom":"center"}function Uq(t,e,n,r){const{x:i,width:o}=r,s=n.caretSize+n.caretPadding;if(t==="left"&&i+o+s>e.width||t==="right"&&i-o-s<0)return!0}function qq(t,e,n,r){const{x:i,width:o}=n,{width:s,chartArea:{left:a,right:l}}=t;let c="center";return r==="center"?c=i<=(a+l)/2?"left":"right":i<=o/2?c="left":i>=s-o/2&&(c="right"),Uq(c,t,e,n)&&(c="center"),c}function k_(t,e,n){const r=n.yAlign||e.yAlign||$q(t,n);return{xAlign:n.xAlign||e.xAlign||qq(t,e,n,r),yAlign:r}}function Wq(t,e){let{x:n,width:r}=t;return e==="right"?n-=r:e==="center"&&(n-=r/2),n}function Vq(t,e,n){let{y:r,height:i}=t;return e==="top"?r+=n:e==="bottom"?r-=i+n:r-=i/2,r}function A_(t,e,n,r){const{caretSize:i,caretPadding:o,cornerRadius:s}=t,{xAlign:a,yAlign:l}=n,c=i+o,{topLeft:u,topRight:h,bottomLeft:p,bottomRight:d}=rl(s);let y=Wq(e,a);const b=Vq(e,l,c);return l==="center"?a==="left"?y+=c:a==="right"&&(y-=c):a==="left"?y-=Math.max(u,p)+i:a==="right"&&(y+=Math.max(h,d)+i),{x:Un(y,0,r.width-e.width),y:Un(b,0,r.height-e.height)}}function wp(t,e,n){const r=pr(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-r.right:t.x+r.left}function C_(t){return po([],Xo(t))}function Hq(t,e,n){return va(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function L_(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const TC={beforeTitle:Ho,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(r>0&&e.dataIndex"u"?TC[e].call(n,r):i}class W5 extends Xi{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,r=this.options.setContext(this.getContext()),i=r.enabled&&n.options.animation&&r.animations,o=new fC(this.chart,i);return i._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=Hq(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:r}=n,i=Nr(r,"beforeTitle",this,e),o=Nr(r,"title",this,e),s=Nr(r,"afterTitle",this,e);let a=[];return a=po(a,Xo(i)),a=po(a,Xo(o)),a=po(a,Xo(s)),a}getBeforeBody(e,n){return C_(Nr(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:r}=n,i=[];return Pe(e,o=>{const s={before:[],lines:[],after:[]},a=L_(r,o);po(s.before,Xo(Nr(a,"beforeLabel",this,o))),po(s.lines,Nr(a,"label",this,o)),po(s.after,Xo(Nr(a,"afterLabel",this,o))),i.push(s)}),i}getAfterBody(e,n){return C_(Nr(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:r}=n,i=Nr(r,"beforeFooter",this,e),o=Nr(r,"footer",this,e),s=Nr(r,"afterFooter",this,e);let a=[];return a=po(a,Xo(i)),a=po(a,Xo(o)),a=po(a,Xo(s)),a}_createItems(e){const n=this._active,r=this.chart.data,i=[],o=[],s=[];let a=[],l,c;for(l=0,c=n.length;le.filter(u,h,p,r))),e.itemSort&&(a=a.sort((u,h)=>e.itemSort(u,h,r))),Pe(a,u=>{const h=L_(e.callbacks,u);i.push(Nr(h,"labelColor",this,u)),o.push(Nr(h,"labelPointStyle",this,u)),s.push(Nr(h,"labelTextColor",this,u))}),this.labelColors=i,this.labelPointStyles=o,this.labelTextColors=s,this.dataPoints=a,a}update(e,n){const r=this.options.setContext(this.getContext()),i=this._active;let o,s=[];if(!i.length)this.opacity!==0&&(o={opacity:0});else{const a=Sf[r.position].call(this,i,this._eventPosition);s=this._createItems(r),this.title=this.getTitle(s,r),this.beforeBody=this.getBeforeBody(s,r),this.body=this.getBody(s,r),this.afterBody=this.getAfterBody(s,r),this.footer=this.getFooter(s,r);const l=this._size=S_(this,r),c=Object.assign({},a,l),u=k_(this.chart,r,c),h=A_(r,c,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,o={opacity:1,x:h.x,y:h.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=s,this.$context=void 0,o&&this._resolveAnimations().update(this,o),e&&r.external&&r.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,r,i){const o=this.getCaretPosition(e,r,i);n.lineTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.lineTo(o.x3,o.y3)}getCaretPosition(e,n,r){const{xAlign:i,yAlign:o}=this,{caretSize:s,cornerRadius:a}=r,{topLeft:l,topRight:c,bottomLeft:u,bottomRight:h}=rl(a),{x:p,y:d}=e,{width:y,height:b}=n;let _,m,w,S,A,P;return o==="center"?(A=d+b/2,i==="left"?(_=p,m=_-s,S=A+s,P=A-s):(_=p+y,m=_+s,S=A-s,P=A+s),w=_):(i==="left"?m=p+Math.max(l,u)+s:i==="right"?m=p+y-Math.max(c,h)-s:m=this.caretX,o==="top"?(S=d,A=S-s,_=m-s,w=m+s):(S=d+b,A=S+s,_=m+s,w=m-s),P=S),{x1:_,x2:m,x3:w,y1:S,y2:A,y3:P}}drawTitle(e,n,r){const i=this.title,o=i.length;let s,a,l;if(o){const c=Dc(r.rtl,this.x,this.width);for(e.x=wp(this,r.titleAlign,r),n.textAlign=c.textAlign(r.titleAlign),n.textBaseline="middle",s=In(r.titleFont),a=r.titleSpacing,n.fillStyle=r.titleColor,n.font=s.string,l=0;lw!==0)?(e.beginPath(),e.fillStyle=o.multiKeyBackground,xh(e,{x:b,y,w:c,h:l,radius:m}),e.fill(),e.stroke(),e.fillStyle=s.backgroundColor,e.beginPath(),xh(e,{x:_,y:y+1,w:c-2,h:l-2,radius:m}),e.fill()):(e.fillStyle=o.multiKeyBackground,e.fillRect(b,y,c,l),e.strokeRect(b,y,c,l),e.fillStyle=s.backgroundColor,e.fillRect(_,y+1,c-2,l-2))}e.fillStyle=this.labelTextColors[r]}drawBody(e,n,r){const{body:i}=this,{bodySpacing:o,bodyAlign:s,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:u}=r,h=In(r.bodyFont);let p=h.lineHeight,d=0;const y=Dc(r.rtl,this.x,this.width),b=function(R){n.fillText(R,y.x(e.x+d),e.y+p/2),e.y+=p+o},_=y.textAlign(s);let m,w,S,A,P,z,I;for(n.textAlign=s,n.textBaseline="middle",n.font=h.string,e.x=wp(this,_,r),n.fillStyle=r.bodyColor,Pe(this.beforeBody,b),d=a&&_!=="right"?s==="center"?c/2+u:c+2+u:0,A=0,z=i.length;A0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,r=this.$animations,i=r&&r.x,o=r&&r.y;if(i||o){const s=Sf[e.position].call(this,this._active,this._eventPosition);if(!s)return;const a=this._size=S_(this,e),l=Object.assign({},s,this._size),c=k_(n,e,l),u=A_(e,l,c,n);(i._to!==u.x||o._to!==u.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=s.x,this.caretY=s.y,this._resolveAnimations().update(this,u))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let r=this.opacity;if(!r)return;this._updateAnimationTarget(n);const i={width:this.width,height:this.height},o={x:this.x,y:this.y};r=Math.abs(r)<.001?0:r;const s=pr(n.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&a&&(e.save(),e.globalAlpha=r,this.drawBackground(o,e,i,n),sC(e,n.textDirection),o.y+=s.top,this.drawTitle(o,e,n),this.drawBody(o,e,n),this.drawFooter(o,e,n),aC(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const r=this._active,i=e.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!K0(r,i),s=this._positionChanged(i,n);(o||s)&&(this._active=i,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,r=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const i=this.options,o=this._active||[],s=this._getActiveElements(e,o,n,r),a=this._positionChanged(s,e),l=n||!K0(s,o)||a;return l&&(this._active=s,(i.enabled||i.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),l}_getActiveElements(e,n,r,i){const o=this.options;if(e.type==="mouseout")return[];if(!i)return n.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const s=this.chart.getElementsAtEventForMode(e,o.mode,o,r);return o.reverse&&s.reverse(),s}_positionChanged(e,n){const{caretX:r,caretY:i,options:o}=this,s=Sf[o.position].call(this,e,n);return s!==!1&&(r!==s.x||i!==s.y)}}Mt(W5,"positioners",Sf);var Gq={id:"tooltip",_element:W5,positioners:Sf,afterInit(t,e,n){n&&(t.tooltip=new W5({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:TC},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Yq=Object.freeze({__proto__:null,Colors:sq,Decimation:uq,Filler:Eq,Legend:Fq,SubTitle:Bq,Title:jq,Tooltip:Gq});const Xq=(t,e,n,r)=>(typeof e=="string"?(n=t.push(e)-1,r.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function Kq(t,e,n,r){const i=t.indexOf(e);if(i===-1)return Xq(t,e,n,r);const o=t.lastIndexOf(e);return i!==o?n:i}const Jq=(t,e)=>t===null?null:Un(Math.round(t),0,e);function N_(t){const e=this.getLabels();return t>=0&&tn.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}Mt(V5,"id","category"),Mt(V5,"defaults",{ticks:{callback:N_}});function Qq(t,e){const n=[],{bounds:i,step:o,min:s,max:a,precision:l,count:c,maxTicks:u,maxDigits:h,includeBounds:p}=t,d=o||1,y=u-1,{min:b,max:_}=e,m=!be(s),w=!be(a),S=!be(c),A=(_-b)/(h+1);let P=S3((_-b)/y/d)*d,z,I,R,X;if(P<1e-14&&!m&&!w)return[{value:b},{value:_}];X=Math.ceil(_/P)-Math.floor(b/P),X>y&&(P=S3(X*P/y/d)*d),be(l)||(z=Math.pow(10,l),P=Math.ceil(P*z)/z),i==="ticks"?(I=Math.floor(b/P)*P,R=Math.ceil(_/P)*P):(I=b,R=_),m&&w&&o&&VB((a-s)/o,P/1e3)?(X=Math.round(Math.min((a-s)/P,u)),P=(a-s)/X,I=s,R=a):S?(I=m?s:I,R=w?a:R,X=c-1,P=(R-I)/X):(X=(R-I)/P,Ff(X,Math.round(X),P/1e3)?X=Math.round(X):X=Math.ceil(X));const C=Math.max(k3(P),k3(I));z=Math.pow(10,be(l)?C:l),I=Math.round(I*z)/z,R=Math.round(R*z)/z;let L=0;for(m&&(p&&I!==s?(n.push({value:s}),Ia)break;n.push({value:T})}return w&&p&&R!==a?n.length&&Ff(n[n.length-1].value,a,P_(a,A,t))?n[n.length-1].value=a:n.push({value:a}):(!w||R===a)&&n.push({value:R}),n}function P_(t,e,{horizontal:n,minRotation:r}){const i=qi(r),o=(n?Math.sin(i):Math.cos(i))||.001,s=.75*e*(""+t).length;return Math.min(e/o,s)}class rg extends bl{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return be(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:r}=this.getUserBounds();let{min:i,max:o}=this;const s=l=>i=n?i:l,a=l=>o=r?o:l;if(e){const l=No(i),c=No(o);l<0&&c<0?a(0):l>0&&c>0&&s(0)}if(i===o){let l=o===0?1:Math.abs(o*.05);a(o+l),e||s(i-l)}this.min=i,this.max=o}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:r}=e,i;return r?(i=Math.ceil(this.max/r)-Math.floor(this.min/r)+1,i>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${r} would result generating up to ${i} ticks. Limiting to 1000.`),i=1e3)):(i=this.computeTickLimit(),n=n||11),n&&(i=Math.min(n,i)),i}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let r=this.getTickLimit();r=Math.max(2,r);const i={maxTicks:r,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},o=this._range||this,s=Qq(i,o);return e.bounds==="ticks"&&qA(s,this,"value"),e.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}configure(){const e=this.ticks;let n=this.min,r=this.max;if(super.configure(),this.options.offset&&e.length){const i=(r-n)/Math.max(e.length-1,1)/2;n-=i,r+=i}this._startValue=n,this._endValue=r,this._valueRange=r-n}getLabelForValue(e){return Wh(e,this.chart.options.locale,this.options.ticks.format)}}class H5 extends rg{determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=pn(e)?e:0,this.max=pn(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,r=qi(this.options.ticks.minRotation),i=(e?Math.sin(r):Math.cos(r))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,o.lineHeight/i))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}Mt(H5,"id","linear"),Mt(H5,"defaults",{ticks:{callback:o1.formatters.numeric}});const _h=t=>Math.floor(Gs(t)),Ia=(t,e)=>Math.pow(10,_h(t)+e);function E_(t){return t/Math.pow(10,_h(t))===1}function M_(t,e,n){const r=Math.pow(10,n),i=Math.floor(t/r);return Math.ceil(e/r)-i}function Zq(t,e){const n=e-t;let r=_h(n);for(;M_(t,e,r)>10;)r++;for(;M_(t,e,r)<10;)r--;return Math.min(r,_h(t))}function tW(t,{min:e,max:n}){e=Hr(t.min,e);const r=[],i=_h(e);let o=Zq(e,n),s=o<0?Math.pow(10,Math.abs(o)):1;const a=Math.pow(10,o),l=i>o?Math.pow(10,i):0,c=Math.round((e-l)*s)/s,u=Math.floor((e-l)/a/10)*a*10;let h=Math.floor((c-u)/Math.pow(10,o)),p=Hr(t.min,Math.round((l+u+h*Math.pow(10,o))*s)/s);for(;p=10?h=h<15?15:20:h++,h>=20&&(o++,h=2,s=o>=0?1:s),p=Math.round((l+u+h*Math.pow(10,o))*s)/s;const d=Hr(t.max,p);return r.push({value:d,major:E_(d),significand:h}),r}class G5 extends bl{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,n){const r=rg.prototype.parse.apply(this,[e,n]);if(r===0){this._zero=!0;return}return pn(r)&&r>0?r:null}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=pn(e)?Math.max(0,e):null,this.max=pn(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!pn(this._userMin)&&(this.min=e===Ia(this.min,0)?Ia(this.min,-1):Ia(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let r=this.min,i=this.max;const o=a=>r=e?r:a,s=a=>i=n?i:a;r===i&&(r<=0?(o(1),s(10)):(o(Ia(r,-1)),s(Ia(i,1)))),r<=0&&o(Ia(i,-1)),i<=0&&s(Ia(r,1)),this.min=r,this.max=i}buildTicks(){const e=this.options,n={min:this._userMin,max:this._userMax},r=tW(n,this);return e.bounds==="ticks"&&qA(r,this,"value"),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}getLabelForValue(e){return e===void 0?"0":Wh(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=Gs(e),this._valueRange=Gs(this.max)-Gs(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(Gs(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const n=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+n*this._valueRange)}}Mt(G5,"id","logarithmic"),Mt(G5,"defaults",{ticks:{callback:o1.formatters.logarithmic,major:{enabled:!0}}});function Y5(t){const e=t.ticks;if(e.display&&t.display){const n=pr(e.backdropPadding);return ce(e.font&&e.font.size,Ze.font.size)+n.height}return 0}function eW(t,e,n){return n=Qe(n)?n:[n],{w:lz(t,e.string,n),h:n.length*e.lineHeight}}function T_(t,e,n,r,i){return t===r||t===i?{start:e-n/2,end:e+n/2}:ti?{start:e-n,end:e}:{start:e,end:e+n}}function nW(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},n=Object.assign({},e),r=[],i=[],o=t._pointLabels.length,s=t.options.pointLabels,a=s.centerPointLabels?Ye/o:0;for(let l=0;le.r&&(a=(r.end-e.r)/o,t.r=Math.max(t.r,e.r+a)),i.starte.b&&(l=(i.end-e.b)/s,t.b=Math.max(t.b,e.b+l))}function iW(t,e,n){const r=t.drawingArea,{extra:i,additionalAngle:o,padding:s,size:a}=n,l=t.getPointPosition(e,r+i+s,o),c=Math.round(Xv(Yr(l.angle+_n))),u=cW(l.y,a.h,c),h=aW(c),p=lW(l.x,a.w,h);return{visible:!0,x:l.x,y:u,textAlign:h,left:p,top:u,right:p+a.w,bottom:u+a.h}}function oW(t,e){if(!e)return!0;const{left:n,top:r,right:i,bottom:o}=t;return!(is({x:n,y:r},e)||is({x:n,y:o},e)||is({x:i,y:r},e)||is({x:i,y:o},e))}function sW(t,e,n){const r=[],i=t._pointLabels.length,o=t.options,{centerPointLabels:s,display:a}=o.pointLabels,l={extra:Y5(o)/2,additionalAngle:s?Ye/i:0};let c;for(let u=0;u270||n<90)&&(t-=e),t}function uW(t,e,n){const{left:r,top:i,right:o,bottom:s}=n,{backdropColor:a}=e;if(!be(a)){const l=rl(e.borderRadius),c=pr(e.backdropPadding);t.fillStyle=a;const u=r-c.left,h=i-c.top,p=o-r+c.width,d=s-i+c.height;Object.values(l).some(y=>y!==0)?(t.beginPath(),xh(t,{x:u,y:h,w:p,h:d,radius:l}),t.fill()):t.fillRect(u,h,p,d)}}function fW(t,e){const{ctx:n,options:{pointLabels:r}}=t;for(let i=e-1;i>=0;i--){const o=t._pointLabelItems[i];if(!o.visible)continue;const s=r.setContext(t.getPointLabelContext(i));uW(n,s,o);const a=In(s.font),{x:l,y:c,textAlign:u}=o;gl(n,t._pointLabels[i],l,c+a.lineHeight/2,a,{color:s.color,textAlign:u,textBaseline:"middle"})}}function OC(t,e,n,r){const{ctx:i}=t;if(n)i.arc(t.xCenter,t.yCenter,e,0,Ge);else{let o=t.getPointPosition(0,e);i.moveTo(o.x,o.y);for(let s=1;s{const i=$e(this.options.pointLabels.callback,[n,r],this);return i||i===0?i:""}).filter((n,r)=>this.chart.getDataVisibility(r))}fit(){const e=this.options;e.display&&e.pointLabels.display?nW(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,n,r,i){this.xCenter+=Math.floor((e-n)/2),this.yCenter+=Math.floor((r-i)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,n,r,i))}getIndexAngle(e){const n=Ge/(this._pointLabels.length||1),r=this.options.startAngle||0;return Yr(e*n+qi(r))}getDistanceFromCenterForValue(e){if(be(e))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*n:(e-this.min)*n}getValueForDistanceFromCenter(e){if(be(e))return NaN;const n=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(e){const n=this._pointLabels||[];if(e>=0&&e{if(h!==0||h===0&&this.min<0){l=this.getDistanceFromCenterForValue(u.value);const p=this.getContext(h),d=i.setContext(p),y=o.setContext(p);hW(this,d,l,s,y)}}),r.display){for(e.save(),a=s-1;a>=0;a--){const u=r.setContext(this.getPointLabelContext(a)),{color:h,lineWidth:p}=u;!p||!h||(e.lineWidth=p,e.strokeStyle=h,e.setLineDash(u.borderDash),e.lineDashOffset=u.borderDashOffset,l=this.getDistanceFromCenterForValue(n.reverse?this.min:this.max),c=this.getPointPosition(a,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,n=this.options,r=n.ticks;if(!r.display)return;const i=this.getIndexAngle(0);let o,s;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(i),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&this.min>=0&&!n.reverse)return;const c=r.setContext(this.getContext(l)),u=In(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){e.font=u.string,s=e.measureText(a.label).width,e.fillStyle=c.backdropColor;const h=pr(c.backdropPadding);e.fillRect(-s/2-h.left,-o-u.size/2-h.top,s+h.width,u.size+h.height)}gl(e,a.label,0,-o,u,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),e.restore()}drawTitle(){}}Mt(kf,"id","radialLinear"),Mt(kf,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:o1.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}}),Mt(kf,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),Mt(kf,"descriptors",{angleLines:{_fallback:"grid"}});const u1={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Er=Object.keys(u1);function O_(t,e){return t-e}function R_(t,e){if(be(e))return null;const n=t._adapter,{parser:r,round:i,isoWeekday:o}=t._parseOpts;let s=e;return typeof r=="function"&&(s=r(s)),pn(s)||(s=typeof r=="string"?n.parse(s,r):n.parse(s)),s===null?null:(i&&(s=i==="week"&&(Zc(o)||o===!0)?n.startOf(s,"isoWeek",o):n.startOf(s,i)),+s)}function I_(t,e,n,r){const i=Er.length;for(let o=Er.indexOf(t);o=Er.indexOf(n);o--){const s=Er[o];if(u1[s].common&&t._adapter.diff(i,r,s)>=e-1)return s}return Er[n?Er.indexOf(n):0]}function gW(t){for(let e=Er.indexOf(t)+1,n=Er.length;e=e?n[r]:n[i];t[o]=!0}}function mW(t,e,n,r){const i=t._adapter,o=+i.startOf(e[0].value,r),s=e[e.length-1].value;let a,l;for(a=o;a<=s;a=+i.add(a,1,r))l=n[a],l>=0&&(e[l].major=!0);return e}function D_(t,e,n){const r=[],i={},o=e.length;let s,a;for(s=0;s+e.value))}initOffsets(e=[]){let n=0,r=0,i,o;this.options.offset&&e.length&&(i=this.getDecimalForValue(e[0]),e.length===1?n=1-i:n=(this.getDecimalForValue(e[1])-i)/2,o=this.getDecimalForValue(e[e.length-1]),e.length===1?r=o:r=(o-this.getDecimalForValue(e[e.length-2]))/2);const s=e.length<3?.5:.25;n=Un(n,0,s),r=Un(r,0,s),this._offsets={start:n,end:r,factor:1/(n+1+r)}}_generate(){const e=this._adapter,n=this.min,r=this.max,i=this.options,o=i.time,s=o.unit||I_(o.minUnit,n,r,this._getLabelCapacity(n)),a=ce(i.ticks.stepSize,1),l=s==="week"?o.isoWeekday:!1,c=Zc(l)||l===!0,u={};let h=n,p,d;if(c&&(h=+e.startOf(h,"isoWeek",l)),h=+e.startOf(h,c?"day":s),e.diff(r,n,s)>1e5*a)throw new Error(n+" and "+r+" are too far apart with stepSize of "+a+" "+s);const y=i.ticks.source==="data"&&this.getDataTimestamps();for(p=h,d=0;p+b)}getLabelForValue(e){const n=this._adapter,r=this.options.time;return r.tooltipFormat?n.format(e,r.tooltipFormat):n.format(e,r.displayFormats.datetime)}format(e,n){const i=this.options.time.displayFormats,o=this._unit,s=n||i[o];return this._adapter.format(e,s)}_tickFormatFunction(e,n,r,i){const o=this.options,s=o.ticks.callback;if(s)return $e(s,[e,n,r],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,u=l&&a[l],h=c&&a[c],p=r[n],d=c&&h&&p&&p.major;return this._adapter.format(e,i||(d?h:u))}generateTickLabels(e){let n,r,i;for(n=0,r=e.length;n0?a:1}getDataTimestamps(){let e=this._cache.data||[],n,r;if(e.length)return e;const i=this.getMatchingVisibleMetas();if(this._normalized&&i.length)return this._cache.data=i[0].controller.getAllParsedValues(this);for(n=0,r=i.length;n=t[r].pos&&e<=t[i].pos&&({lo:r,hi:i}=rs(t,"pos",e)),{pos:o,time:a}=t[r],{pos:s,time:l}=t[i]):(e>=t[r].time&&e<=t[i].time&&({lo:r,hi:i}=rs(t,"time",e)),{time:o,pos:a}=t[r],{time:s,pos:l}=t[i]);const c=s-o;return c?a+(l-a)*(e-o)/c:a}class X5 extends Sh{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=_p(n,this.min),this._tableRange=_p(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:r}=this,i=[],o=[];let s,a,l,c,u;for(s=0,a=e.length;s=n&&c<=r&&i.push(c);if(i.length<2)return[{time:n,pos:0},{time:r,pos:1}];for(s=0,a=i.length;si-o)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),r=this.getLabelTimestamps();return n.length&&r.length?e=this.normalize(n.concat(r)):e=n.length?n:r,e=this._cache.all=e,e}getDecimalForValue(e){return(_p(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,r=this.getDecimalForPixel(e)/n.factor-n.end;return _p(this._table,r*this._tableRange+this._minPos,!0)}}Mt(X5,"id","timeseries"),Mt(X5,"defaults",Sh.defaults);var yW=Object.freeze({__proto__:null,CategoryScale:V5,LinearScale:H5,LogarithmicScale:G5,RadialLinearScale:kf,TimeScale:Sh,TimeSeriesScale:X5});const vW=[S$,ZU,Yq,yW],RC="label";function j_(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function bW(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function IC(t,e){t.labels=e}function FC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:RC;const r=[];t.datasets=e.map(i=>{const o=t.datasets.find(s=>s[n]===i[n]);return!o||!i.data||r.includes(o)?{...i}:(r.push(o),Object.assign(o,i),o)})}function xW(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:RC;const n={labels:[],datasets:[]};return IC(n,t.labels),FC(n,t.datasets,e),n}function wW(t,e){const{height:n=150,width:r=300,redraw:i=!1,datasetIdKey:o,type:s,data:a,options:l,plugins:c=[],fallbackContent:u,updateMode:h,...p}=t,d=H.useRef(null),y=H.useRef(),b=()=>{d.current&&(y.current=new c1(d.current,{type:s,data:xW(a,o),options:l&&{...l},plugins:c}),j_(e,y.current))},_=()=>{j_(e,null),y.current&&(y.current.destroy(),y.current=null)};return H.useEffect(()=>{!i&&y.current&&l&&bW(y.current,l)},[i,l]),H.useEffect(()=>{!i&&y.current&&IC(y.current.config.data,a.labels)},[i,a.labels]),H.useEffect(()=>{!i&&y.current&&a.datasets&&FC(y.current.config.data,a.datasets,o)},[i,a.datasets]),H.useEffect(()=>{y.current&&(i?(_(),setTimeout(b)):y.current.update(h))},[i,l,a.labels,a.datasets,h]),H.useEffect(()=>{y.current&&(_(),setTimeout(b))},[s]),H.useEffect(()=>(b(),()=>_()),[]),Mr.createElement("canvas",Object.assign({ref:d,role:"img",height:n,width:r},p),u)}const _W=H.forwardRef(wW);function DC(t,e){return c1.register(e),H.forwardRef((n,r)=>Mr.createElement(_W,Object.assign({},n,{ref:r,type:t})))}const SW=DC("line",zf),kW=DC("bar",Bf),AW="modulepreload",CW=function(t){return"/"+t},B_={},K5=function(e,n,r){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),a=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));i=Promise.allSettled(n.map(l=>{if(l=CW(l),l in B_)return;B_[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const h=document.createElement("link");if(h.rel=c?"stylesheet":AW,c||(h.as="script"),h.crossOrigin="",h.href=l,a&&h.setAttribute("nonce",a),document.head.appendChild(h),c)return new Promise((p,d)=>{h.addEventListener("load",p),h.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(s){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s}return i.then(s=>{for(const a of s||[])a.status==="rejected"&&o(a.reason);return e().catch(o)})};function Ee(t){"@babel/helpers - typeof";return Ee=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ee(t)}var fr=Uint8Array,Jr=Uint16Array,lb=Int32Array,f1=new fr([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),h1=new fr([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),J5=new fr([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),jC=function(t,e){for(var n=new Jr(31),r=0;r<31;++r)n[r]=e+=1<>1|(Ve&21845)<<1;Ts=(Ts&52428)>>2|(Ts&13107)<<2,Ts=(Ts&61680)>>4|(Ts&3855)<<4,Z5[Ve]=((Ts&65280)>>8|(Ts&255)<<8)>>1}var Po=function(t,e,n){for(var r=t.length,i=0,o=new Jr(e);i>l]=c}else for(a=new Jr(r),i=0;i>15-t[i]);return a},fa=new fr(288);for(var Ve=0;Ve<144;++Ve)fa[Ve]=8;for(var Ve=144;Ve<256;++Ve)fa[Ve]=9;for(var Ve=256;Ve<280;++Ve)fa[Ve]=7;for(var Ve=280;Ve<288;++Ve)fa[Ve]=8;var kh=new fr(32);for(var Ve=0;Ve<32;++Ve)kh[Ve]=5;var NW=Po(fa,9,0),PW=Po(fa,9,1),EW=Po(kh,5,0),MW=Po(kh,5,1),n2=function(t){for(var e=t[0],n=1;ne&&(e=t[n]);return e},Fi=function(t,e,n){var r=e/8|0;return(t[r]|t[r+1]<<8)>>(e&7)&n},r2=function(t,e){var n=e/8|0;return(t[n]|t[n+1]<<8|t[n+2]<<16)>>(e&7)},cb=function(t){return(t+7)/8|0},UC=function(t,e,n){return(n==null||n>t.length)&&(n=t.length),new fr(t.subarray(e,n))},TW=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Bi=function(t,e,n){var r=new Error(e||TW[t]);if(r.code=t,Error.captureStackTrace&&Error.captureStackTrace(r,Bi),!n)throw r;return r},OW=function(t,e,n,r){var i=t.length,o=0;if(!i||e.f&&!e.l)return n||new fr(0);var s=!n,a=s||e.i!=2,l=e.i;s&&(n=new fr(i*3));var c=function(Lt){var Ot=n.length;if(Lt>Ot){var Tt=new fr(Math.max(Ot*2,Lt));Tt.set(n),n=Tt}},u=e.f||0,h=e.p||0,p=e.b||0,d=e.l,y=e.d,b=e.m,_=e.n,m=i*8;do{if(!d){u=Fi(t,h,1);var w=Fi(t,h+1,3);if(h+=3,w)if(w==1)d=PW,y=MW,b=9,_=5;else if(w==2){var z=Fi(t,h,31)+257,I=Fi(t,h+10,15)+4,R=z+Fi(t,h+5,31)+1;h+=14;for(var X=new fr(R),C=new fr(19),L=0;L>4;if(S<16)X[L++]=S;else{var rt=0,lt=0;for(S==16?(lt=3+Fi(t,h,3),h+=2,rt=X[L-1]):S==17?(lt=3+Fi(t,h,7),h+=3):S==18&&(lt=11+Fi(t,h,127),h+=7);lt--;)X[L++]=rt}}var Y=X.subarray(0,z),et=X.subarray(z);b=n2(Y),_=n2(et),d=Po(Y,b,1),y=Po(et,_,1)}else Bi(1);else{var S=cb(h)+4,A=t[S-4]|t[S-3]<<8,P=S+A;if(P>i){l&&Bi(0);break}a&&c(p+A),n.set(t.subarray(S,P),p),e.b=p+=A,e.p=h=P*8,e.f=u;continue}if(h>m){l&&Bi(0);break}}a&&c(p+131072);for(var at=(1<>4;if(h+=rt&15,h>m){l&&Bi(0);break}if(rt||Bi(2),$<256)n[p++]=$;else if($==256){M=h,d=null;break}else{var q=$-254;if($>264){var L=$-257,J=f1[L];q=Fi(t,h,(1<>4;Z||Bi(3),h+=Z&15;var et=LW[ut];if(ut>3){var J=h1[ut];et+=r2(t,h)&(1<m){l&&Bi(0);break}a&&c(p+131072);var gt=p+q;if(p>8},af=function(t,e,n){n<<=e&7;var r=e/8|0;t[r]|=n,t[r+1]|=n>>8,t[r+2]|=n>>16},i2=function(t,e){for(var n=[],r=0;rp&&(p=o[r].s);var d=new Jr(p+1),y=ty(n[u-1],d,0);if(y>e){var r=0,b=0,_=y-e,m=1<<_;for(o.sort(function(z,I){return d[I.s]-d[z.s]||z.f-I.f});re)b+=m-(1<>=_;b>0;){var S=o[r].s;d[S]=0&&b;--r){var A=o[r].s;d[A]==e&&(--d[A],++b)}y=e}return{t:new fr(d),l:y}},ty=function(t,e,n){return t.s==-1?Math.max(ty(t.l,e,n+1),ty(t.r,e,n+1)):e[t.s]=n},$_=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new Jr(++e),r=0,i=t[0],o=1,s=function(l){n[r++]=l},a=1;a<=e;++a)if(t[a]==i&&a!=e)++o;else{if(!i&&o>2){for(;o>138;o-=138)s(32754);o>2&&(s(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(s(i),--o;o>6;o-=6)s(8304);o>2&&(s(o-3<<5|8208),o=0)}for(;o--;)s(i);o=1,i=t[a]}return{c:n.subarray(0,r),n:e}},lf=function(t,e){for(var n=0,r=0;r>8,t[i+2]=t[i]^255,t[i+3]=t[i+1]^255;for(var o=0;o4&&!C[J5[T-1]];--T);var W=c+5<<3,V=lf(i,fa)+lf(o,kh)+s,ot=lf(i,p)+lf(o,b)+s+14+3*T+lf(I,C)+2*I[16]+3*I[17]+7*I[18];if(l>=0&&W<=V&&W<=ot)return qC(e,u,t.subarray(l,l+c));var rt,lt,Y,et;if(Go(e,u,1+(ot15&&(Go(e,u,$[R]>>5&127),u+=$[R]>>12)}}else rt=NW,lt=fa,Y=EW,et=kh;for(var R=0;R255){var q=J>>18&31;af(e,u,rt[q+257]),u+=lt[q+257],q>7&&(Go(e,u,J>>23&31),u+=f1[q]);var Z=J&31;af(e,u,Y[Z]),u+=et[Z],Z>3&&(af(e,u,J>>5&8191),u+=h1[Z])}else af(e,u,rt[J]),u+=lt[J]}return af(e,u,rt[256]),u+lt[256]},RW=new lb([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),WC=new fr(0),IW=function(t,e,n,r,i,o){var s=o.z||t.length,a=new fr(r+s+5*(1+Math.ceil(s/7e3))+i),l=a.subarray(r,a.length-i),c=o.l,u=(o.r||0)&7;if(e){u&&(l[0]=o.r>>3);for(var h=RW[e-1],p=h>>13,d=h&8191,y=(1<7e3||C>24576)&&(rt>423||!c)){u=U_(t,l,0,A,P,z,R,C,T,X-T,u),C=I=R=0,T=X;for(var lt=0;lt<286;++lt)P[lt]=0;for(var lt=0;lt<30;++lt)z[lt]=0}var Y=2,et=0,at=d,xt=V-ot&32767;if(rt>2&&W==S(X-xt))for(var M=Math.min(p,rt)-1,$=Math.min(32767,X),q=Math.min(258,rt);xt<=$&&--at&&V!=ot;){if(t[X+Y]==t[X+Y-xt]){for(var J=0;JY){if(Y=J,et=xt,J>M)break;for(var Z=Math.min(xt,J-2),ut=0,lt=0;ltut&&(ut=Pt,ot=gt)}}}V=ot,ot=b[V],xt+=V-ot&32767}if(et){A[C++]=268435456|Q5[Y]<<18|z_[et];var Lt=Q5[Y]&31,Ot=z_[et]&31;R+=f1[Lt]+h1[Ot],++P[257+Lt],++z[Ot],L=X+Y,++I}else A[C++]=t[X],++P[t[X]]}}for(X=Math.max(X,L);X=s&&(l[u/8|0]=c,Tt=s),u=qC(l,u+1,t.subarray(X,Tt))}o.i=s}return UC(a,0,r+cb(u)+i)},VC=function(){var t=1,e=0;return{p:function(n){for(var r=t,i=e,o=n.length|0,s=0;s!=o;){for(var a=Math.min(s+2655,o);s>16),i=(i&65535)+15*(i>>16)}t=r,e=i},d:function(){return t%=65521,e%=65521,(t&255)<<24|(t&65280)<<8|(e&255)<<8|e>>8}}},FW=function(t,e,n,r,i){if(!i&&(i={l:1},e.dictionary)){var o=e.dictionary.subarray(-32768),s=new fr(o.length+t.length);s.set(o),s.set(t,o.length),t=s,i.w=o.length}return IW(t,e.level==null?6:e.level,e.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(t.length)))*1.5):20:12+e.mem,n,r,i)},HC=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8},DW=function(t,e){var n=e.level,r=n==0?0:n<6?1:n==9?3:2;if(t[0]=120,t[1]=r<<6|(e.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,e.dictionary){var i=VC();i.p(e.dictionary),HC(t,2,i.d())}},jW=function(t,e){return((t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31)&&Bi(6,"invalid zlib data"),(t[1]>>5&1)==+!e&&Bi(6,"invalid zlib data: "+(t[1]&32?"need":"unexpected")+" dictionary"),(t[1]>>3&4)+2};function ey(t,e){e||(e={});var n=VC();n.p(t);var r=FW(t,e,e.dictionary?6:2,4);return DW(r,e),HC(r,r.length-4,n.d()),r}function BW(t,e){return OW(t.subarray(jW(t,e),-4),{i:2},e,e)}var zW=typeof TextDecoder<"u"&&new TextDecoder,$W=0;try{zW.decode(WC,{stream:!0}),$W=1}catch{}var Zt=function(){return typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this}();function o2(){Zt.console&&typeof Zt.console.log=="function"&&Zt.console.log.apply(Zt.console,arguments)}var je={log:o2,warn:function(t){Zt.console&&(typeof Zt.console.warn=="function"?Zt.console.warn.apply(Zt.console,arguments):o2.call(null,arguments))},error:function(t){Zt.console&&(typeof Zt.console.error=="function"?Zt.console.error.apply(Zt.console,arguments):o2(t))}};function s2(t,e,n){var r=new XMLHttpRequest;r.open("GET",t),r.responseType="blob",r.onload=function(){$a(r.response,e,n)},r.onerror=function(){je.error("could not download file")},r.send()}function q_(t){var e=new XMLHttpRequest;e.open("HEAD",t,!1);try{e.send()}catch{}return e.status>=200&&e.status<=299}function Sp(t){try{t.dispatchEvent(new MouseEvent("click"))}catch{var e=document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var Uf,ny,$a=Zt.saveAs||((typeof window>"u"?"undefined":Ee(window))!=="object"||window!==Zt?function(){}:typeof HTMLAnchorElement<"u"&&"download"in HTMLAnchorElement.prototype?function(t,e,n){var r=Zt.URL||Zt.webkitURL,i=document.createElement("a");e=e||t.name||"download",i.download=e,i.rel="noopener",typeof t=="string"?(i.href=t,i.origin!==location.origin?q_(i.href)?s2(t,e,n):Sp(i,i.target="_blank"):Sp(i)):(i.href=r.createObjectURL(t),setTimeout(function(){r.revokeObjectURL(i.href)},4e4),setTimeout(function(){Sp(i)},0))}:"msSaveOrOpenBlob"in navigator?function(t,e,n){if(e=e||t.name||"download",typeof t=="string")if(q_(t))s2(t,e,n);else{var r=document.createElement("a");r.href=t,r.target="_blank",setTimeout(function(){Sp(r)})}else navigator.msSaveOrOpenBlob(function(i,o){return o===void 0?o={autoBom:!1}:Ee(o)!=="object"&&(je.warn("Deprecated: Expected third argument to be a object"),o={autoBom:!o}),o.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(i.type)?new Blob(["\uFEFF",i],{type:i.type}):i}(t,n),e)}:function(t,e,n,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),typeof t=="string")return s2(t,e,n);var i=t.type==="application/octet-stream",o=/constructor/i.test(Zt.HTMLElement)||Zt.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||i&&o)&&(typeof FileReader>"u"?"undefined":Ee(FileReader))==="object"){var a=new FileReader;a.onloadend=function(){var u=a.result;u=s?u:u.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=u:location=u,r=null},a.readAsDataURL(t)}else{var l=Zt.URL||Zt.webkitURL,c=l.createObjectURL(t);r?r.location=c:location.href=c,r=null,setTimeout(function(){l.revokeObjectURL(c)},4e4)}});/** + * A class to parse color values + * @author Stoyan Stefanov + * {@link http://www.phpied.com/rgb-color-parser-in-javascript/} + * @license Use it if you like it + */function GC(t){var e;t=t||"",this.ok=!1,t.charAt(0)=="#"&&(t=t.substr(1,6)),t={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"}[t=(t=t.replace(/ /g,"")).toLowerCase()]||t;for(var n=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(a){return[parseInt(a[1]),parseInt(a[2]),parseInt(a[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:["#00ff00","336699"],process:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}}],r=0;r255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"},this.toHex=function(){var a=this.r.toString(16),l=this.g.toString(16),c=this.b.toString(16);return a.length==1&&(a="0"+a),l.length==1&&(l="0"+l),c.length==1&&(c="0"+c),"#"+a+l+c}}/** + * @license + * Joseph Myers does not specify a particular license for his work. + * + * Author: Joseph Myers + * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js + * + * Modified by: Owen Leong + */function a2(t,e){var n=t[0],r=t[1],i=t[2],o=t[3];n=ir(n,r,i,o,e[0],7,-680876936),o=ir(o,n,r,i,e[1],12,-389564586),i=ir(i,o,n,r,e[2],17,606105819),r=ir(r,i,o,n,e[3],22,-1044525330),n=ir(n,r,i,o,e[4],7,-176418897),o=ir(o,n,r,i,e[5],12,1200080426),i=ir(i,o,n,r,e[6],17,-1473231341),r=ir(r,i,o,n,e[7],22,-45705983),n=ir(n,r,i,o,e[8],7,1770035416),o=ir(o,n,r,i,e[9],12,-1958414417),i=ir(i,o,n,r,e[10],17,-42063),r=ir(r,i,o,n,e[11],22,-1990404162),n=ir(n,r,i,o,e[12],7,1804603682),o=ir(o,n,r,i,e[13],12,-40341101),i=ir(i,o,n,r,e[14],17,-1502002290),n=or(n,r=ir(r,i,o,n,e[15],22,1236535329),i,o,e[1],5,-165796510),o=or(o,n,r,i,e[6],9,-1069501632),i=or(i,o,n,r,e[11],14,643717713),r=or(r,i,o,n,e[0],20,-373897302),n=or(n,r,i,o,e[5],5,-701558691),o=or(o,n,r,i,e[10],9,38016083),i=or(i,o,n,r,e[15],14,-660478335),r=or(r,i,o,n,e[4],20,-405537848),n=or(n,r,i,o,e[9],5,568446438),o=or(o,n,r,i,e[14],9,-1019803690),i=or(i,o,n,r,e[3],14,-187363961),r=or(r,i,o,n,e[8],20,1163531501),n=or(n,r,i,o,e[13],5,-1444681467),o=or(o,n,r,i,e[2],9,-51403784),i=or(i,o,n,r,e[7],14,1735328473),n=sr(n,r=or(r,i,o,n,e[12],20,-1926607734),i,o,e[5],4,-378558),o=sr(o,n,r,i,e[8],11,-2022574463),i=sr(i,o,n,r,e[11],16,1839030562),r=sr(r,i,o,n,e[14],23,-35309556),n=sr(n,r,i,o,e[1],4,-1530992060),o=sr(o,n,r,i,e[4],11,1272893353),i=sr(i,o,n,r,e[7],16,-155497632),r=sr(r,i,o,n,e[10],23,-1094730640),n=sr(n,r,i,o,e[13],4,681279174),o=sr(o,n,r,i,e[0],11,-358537222),i=sr(i,o,n,r,e[3],16,-722521979),r=sr(r,i,o,n,e[6],23,76029189),n=sr(n,r,i,o,e[9],4,-640364487),o=sr(o,n,r,i,e[12],11,-421815835),i=sr(i,o,n,r,e[15],16,530742520),n=ar(n,r=sr(r,i,o,n,e[2],23,-995338651),i,o,e[0],6,-198630844),o=ar(o,n,r,i,e[7],10,1126891415),i=ar(i,o,n,r,e[14],15,-1416354905),r=ar(r,i,o,n,e[5],21,-57434055),n=ar(n,r,i,o,e[12],6,1700485571),o=ar(o,n,r,i,e[3],10,-1894986606),i=ar(i,o,n,r,e[10],15,-1051523),r=ar(r,i,o,n,e[1],21,-2054922799),n=ar(n,r,i,o,e[8],6,1873313359),o=ar(o,n,r,i,e[15],10,-30611744),i=ar(i,o,n,r,e[6],15,-1560198380),r=ar(r,i,o,n,e[13],21,1309151649),n=ar(n,r,i,o,e[4],6,-145523070),o=ar(o,n,r,i,e[11],10,-1120210379),i=ar(i,o,n,r,e[2],15,718787259),r=ar(r,i,o,n,e[9],21,-343485551),t[0]=Ks(n,t[0]),t[1]=Ks(r,t[1]),t[2]=Ks(i,t[2]),t[3]=Ks(o,t[3])}function d1(t,e,n,r,i,o){return e=Ks(Ks(e,t),Ks(r,o)),Ks(e<>>32-i,n)}function ir(t,e,n,r,i,o,s){return d1(e&n|~e&r,t,e,i,o,s)}function or(t,e,n,r,i,o,s){return d1(e&r|n&~r,t,e,i,o,s)}function sr(t,e,n,r,i,o,s){return d1(e^n^r,t,e,i,o,s)}function ar(t,e,n,r,i,o,s){return d1(n^(e|~r),t,e,i,o,s)}function YC(t){var e,n=t.length,r=[1732584193,-271733879,-1732584194,271733878];for(e=64;e<=t.length;e+=64)a2(r,UW(t.substring(e-64,e)));t=t.substring(e-64);var i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(e=0;e>2]|=t.charCodeAt(e)<<(e%4<<3);if(i[e>>2]|=128<<(e%4<<3),e>55)for(a2(r,i),e=0;e<16;e++)i[e]=0;return i[14]=8*n,a2(r,i),r}function UW(t){var e,n=[];for(e=0;e<64;e+=4)n[e>>2]=t.charCodeAt(e)+(t.charCodeAt(e+1)<<8)+(t.charCodeAt(e+2)<<16)+(t.charCodeAt(e+3)<<24);return n}Uf=Zt.atob.bind(Zt),ny=Zt.btoa.bind(Zt);var W_="0123456789abcdef".split("");function qW(t){for(var e="",n=0;n<4;n++)e+=W_[t>>8*n+4&15]+W_[t>>8*n&15];return e}function WW(t){return String.fromCharCode((255&t)>>0,(65280&t)>>8,(16711680&t)>>16,(4278190080&t)>>24)}function ry(t){return YC(t).map(WW).join("")}var VW=function(t){for(var e=0;e>16)+(e>>16)+(n>>16)<<16|65535&n}return t+e&4294967295}/** + * @license + * FPDF is released under a permissive license: there is no usage restriction. + * You may embed it freely in your application (commercial or not), with or + * without modifications. + * + * Reference: http://www.fpdf.org/en/script/script37.php + */function iy(t,e){var n,r,i,o;if(t!==n){for(var s=(i=t,o=1+(256/t.length>>0),new Array(o+1).join(i)),a=[],l=0;l<256;l++)a[l]=l;var c=0;for(l=0;l<256;l++){var u=a[l];c=(c+u+s.charCodeAt(l))%256,a[l]=a[c],a[c]=u}n=t,r=a}else a=r;var h=e.length,p=0,d=0,y="";for(l=0;l€/\f©þdSiz";var o=(e+this.padding).substr(0,32),s=(n+this.padding).substr(0,32);this.O=this.processOwnerPassword(o,s),this.P=-(1+(255^i)),this.encryptionKey=ry(o+this.O+this.lsbFirstWord(this.P)+this.hexToBytes(r)).substr(0,5),this.U=iy(this.encryptionKey,this.padding)}function fc(t){if(/[^\u0000-\u00ff]/.test(t))throw new Error("Invalid PDF Name Object: "+t+", Only accept ASCII characters.");for(var e="",n=t.length,r=0;r126?e+="#"+("0"+i.toString(16)).slice(-2):e+=t[r]}return e}function H_(t){if(Ee(t)!=="object")throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");var e={};this.subscribe=function(n,r,i){if(i=i||!1,typeof n!="string"||typeof r!="function"||typeof i!="boolean")throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");e.hasOwnProperty(n)||(e[n]={});var o=Math.random().toString(35);return e[n][o]=[r,!!i],o},this.unsubscribe=function(n){for(var r in e)if(e[r][n])return delete e[r][n],Object.keys(e[r]).length===0&&delete e[r],!0;return!1},this.publish=function(n){if(e.hasOwnProperty(n)){var r=Array.prototype.slice.call(arguments,1),i=[];for(var o in e[n]){var s=e[n][o];try{s[0].apply(t,r)}catch(a){Zt.console&&je.error("jsPDF PubSub Error",a.message,a)}s[1]&&i.push(o)}i.length&&i.forEach(this.unsubscribe)}},this.getTopics=function(){return e}}function ig(t){if(!(this instanceof ig))return new ig(t);var e="opacity,stroke-opacity".split(",");for(var n in t)t.hasOwnProperty(n)&&e.indexOf(n)>=0&&(this[n]=t[n]);this.id="",this.objectNumber=-1}function XC(t,e){this.gState=t,this.matrix=e,this.id="",this.objectNumber=-1}function qa(t,e,n,r,i){if(!(this instanceof qa))return new qa(t,e,n,r,i);this.type=t==="axial"?2:3,this.coords=e,this.colors=n,XC.call(this,r,i)}function Ac(t,e,n,r,i){if(!(this instanceof Ac))return new Ac(t,e,n,r,i);this.boundingBox=t,this.xStep=e,this.yStep=n,this.stream="",this.cloneIndex=0,XC.call(this,r,i)}function Qt(t){var e,n=typeof arguments[0]=="string"?arguments[0]:"p",r=arguments[1],i=arguments[2],o=arguments[3],s=[],a=1,l=16,c="S",u=null;Ee(t=t||{})==="object"&&(n=t.orientation,r=t.unit||r,i=t.format||i,o=t.compress||t.compressPdf||o,(u=t.encryption||null)!==null&&(u.userPassword=u.userPassword||"",u.ownerPassword=u.ownerPassword||"",u.userPermissions=u.userPermissions||[]),a=typeof t.userUnit=="number"?Math.abs(t.userUnit):1,t.precision!==void 0&&(e=t.precision),t.floatPrecision!==void 0&&(l=t.floatPrecision),c=t.defaultPathOperation||"S"),s=t.filters||(o===!0?["FlateEncode"]:s),r=r||"mm",n=(""+(n||"P")).toLowerCase();var h=t.putOnlyUsedFonts||!1,p={},d={internal:{},__private__:{}};d.__private__.PubSub=H_;var y="1.3",b=d.__private__.getPdfVersion=function(){return y};d.__private__.setPdfVersion=function(v){y=v};var _={a0:[2383.94,3370.39],a1:[1683.78,2383.94],a2:[1190.55,1683.78],a3:[841.89,1190.55],a4:[595.28,841.89],a5:[419.53,595.28],a6:[297.64,419.53],a7:[209.76,297.64],a8:[147.4,209.76],a9:[104.88,147.4],a10:[73.7,104.88],b0:[2834.65,4008.19],b1:[2004.09,2834.65],b2:[1417.32,2004.09],b3:[1000.63,1417.32],b4:[708.66,1000.63],b5:[498.9,708.66],b6:[354.33,498.9],b7:[249.45,354.33],b8:[175.75,249.45],b9:[124.72,175.75],b10:[87.87,124.72],c0:[2599.37,3676.54],c1:[1836.85,2599.37],c2:[1298.27,1836.85],c3:[918.43,1298.27],c4:[649.13,918.43],c5:[459.21,649.13],c6:[323.15,459.21],c7:[229.61,323.15],c8:[161.57,229.61],c9:[113.39,161.57],c10:[79.37,113.39],dl:[311.81,623.62],letter:[612,792],"government-letter":[576,756],legal:[612,1008],"junior-legal":[576,360],ledger:[1224,792],tabloid:[792,1224],"credit-card":[153,243]};d.__private__.getPageFormats=function(){return _};var m=d.__private__.getPageFormat=function(v){return _[v]};i=i||"a4";var w={COMPAT:"compat",ADVANCED:"advanced"},S=w.COMPAT;function A(){this.saveGraphicsState(),K(new Jt(zt,0,0,-zt,0,vs()*zt).toString()+" cm"),this.setFontSize(this.getFontSize()/zt),c="n",S=w.ADVANCED}function P(){this.restoreGraphicsState(),c="S",S=w.COMPAT}var z=d.__private__.combineFontStyleAndFontWeight=function(v,E){if(v=="bold"&&E=="normal"||v=="bold"&&E==400||v=="normal"&&E=="italic"||v=="bold"&&E=="italic")throw new Error("Invalid Combination of fontweight and fontstyle");return E&&(v=E==400||E==="normal"?v==="italic"?"italic":"normal":E!=700&&E!=="bold"||v!=="normal"?(E==700?"bold":E)+""+v:"bold"),v};d.advancedAPI=function(v){var E=S===w.COMPAT;return E&&A.call(this),typeof v!="function"||(v(this),E&&P.call(this)),this},d.compatAPI=function(v){var E=S===w.ADVANCED;return E&&P.call(this),typeof v!="function"||(v(this),E&&A.call(this)),this},d.isAdvancedAPI=function(){return S===w.ADVANCED};var I,R=function(v){if(S!==w.ADVANCED)throw new Error(v+" is only available in 'advanced' API mode. You need to call advancedAPI() first.")},X=d.roundToPrecision=d.__private__.roundToPrecision=function(v,E){var G=e||E;if(isNaN(v)||isNaN(G))throw new Error("Invalid argument passed to jsPDF.roundToPrecision");return v.toFixed(G).replace(/0+$/,"")};I=d.hpf=d.__private__.hpf=typeof l=="number"?function(v){if(isNaN(v))throw new Error("Invalid argument passed to jsPDF.hpf");return X(v,l)}:l==="smart"?function(v){if(isNaN(v))throw new Error("Invalid argument passed to jsPDF.hpf");return X(v,v>-1&&v<1?16:5)}:function(v){if(isNaN(v))throw new Error("Invalid argument passed to jsPDF.hpf");return X(v,16)};var C=d.f2=d.__private__.f2=function(v){if(isNaN(v))throw new Error("Invalid argument passed to jsPDF.f2");return X(v,2)},L=d.__private__.f3=function(v){if(isNaN(v))throw new Error("Invalid argument passed to jsPDF.f3");return X(v,3)},T=d.scale=d.__private__.scale=function(v){if(isNaN(v))throw new Error("Invalid argument passed to jsPDF.scale");return S===w.COMPAT?v*zt:S===w.ADVANCED?v:void 0},W=function(v){return S===w.COMPAT?vs()-v:S===w.ADVANCED?v:void 0},V=function(v){return T(W(v))};d.__private__.setPrecision=d.setPrecision=function(v){typeof parseInt(v,10)=="number"&&(e=parseInt(v,10))};var ot,rt="00000000000000000000000000000000",lt=d.__private__.getFileId=function(){return rt},Y=d.__private__.setFileId=function(v){return rt=v!==void 0&&/^[a-fA-F0-9]{32}$/.test(v)?v.toUpperCase():rt.split("").map(function(){return"ABCDEF0123456789".charAt(Math.floor(16*Math.random()))}).join(""),u!==null&&(tr=new uc(u.userPermissions,u.userPassword,u.ownerPassword,rt)),rt};d.setFileId=function(v){return Y(v),this},d.getFileId=function(){return lt()};var et=d.__private__.convertDateToPDFDate=function(v){var E=v.getTimezoneOffset(),G=E<0?"+":"-",Q=Math.floor(Math.abs(E/60)),ct=Math.abs(E%60),vt=[G,q(Q),"'",q(ct),"'"].join("");return["D:",v.getFullYear(),q(v.getMonth()+1),q(v.getDate()),q(v.getHours()),q(v.getMinutes()),q(v.getSeconds()),vt].join("")},at=d.__private__.convertPDFDateToDate=function(v){var E=parseInt(v.substr(2,4),10),G=parseInt(v.substr(6,2),10)-1,Q=parseInt(v.substr(8,2),10),ct=parseInt(v.substr(10,2),10),vt=parseInt(v.substr(12,2),10),Ct=parseInt(v.substr(14,2),10);return new Date(E,G,Q,ct,vt,Ct,0)},xt=d.__private__.setCreationDate=function(v){var E;if(v===void 0&&(v=new Date),v instanceof Date)E=et(v);else{if(!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(v))throw new Error("Invalid argument passed to jsPDF.setCreationDate");E=v}return ot=E},M=d.__private__.getCreationDate=function(v){var E=ot;return v==="jsDate"&&(E=at(ot)),E};d.setCreationDate=function(v){return xt(v),this},d.getCreationDate=function(v){return M(v)};var $,q=d.__private__.padd2=function(v){return("0"+parseInt(v)).slice(-2)},J=d.__private__.padd2Hex=function(v){return("00"+(v=v.toString())).substr(v.length)},Z=0,ut=[],gt=[],pt=0,Pt=[],Lt=[],Ot=!1,Tt=gt,Ht=function(){Z=0,pt=0,gt=[],ut=[],Pt=[],Ro=kn(),Li=kn()};d.__private__.setCustomOutputDestination=function(v){Ot=!0,Tt=v};var dt=function(v){Ot||(Tt=v)};d.__private__.resetCustomOutputDestination=function(){Ot=!1,Tt=gt};var K=d.__private__.out=function(v){return v=v.toString(),pt+=v.length+1,Tt.push(v),Tt},Xt=d.__private__.write=function(v){return K(arguments.length===1?v.toString():Array.prototype.join.call(arguments," "))},qt=d.__private__.getArrayBuffer=function(v){for(var E=v.length,G=new ArrayBuffer(E),Q=new Uint8Array(G);E--;)Q[E]=v.charCodeAt(E);return G},At=[["Helvetica","helvetica","normal","WinAnsiEncoding"],["Helvetica-Bold","helvetica","bold","WinAnsiEncoding"],["Helvetica-Oblique","helvetica","italic","WinAnsiEncoding"],["Helvetica-BoldOblique","helvetica","bolditalic","WinAnsiEncoding"],["Courier","courier","normal","WinAnsiEncoding"],["Courier-Bold","courier","bold","WinAnsiEncoding"],["Courier-Oblique","courier","italic","WinAnsiEncoding"],["Courier-BoldOblique","courier","bolditalic","WinAnsiEncoding"],["Times-Roman","times","normal","WinAnsiEncoding"],["Times-Bold","times","bold","WinAnsiEncoding"],["Times-Italic","times","italic","WinAnsiEncoding"],["Times-BoldItalic","times","bolditalic","WinAnsiEncoding"],["ZapfDingbats","zapfdingbats","normal",null],["Symbol","symbol","normal",null]];d.__private__.getStandardFonts=function(){return At};var Rt=t.fontSize||16;d.__private__.setFontSize=d.setFontSize=function(v){return Rt=S===w.ADVANCED?v/zt:v,this};var Dt,It=d.__private__.getFontSize=d.getFontSize=function(){return S===w.COMPAT?Rt:Rt*zt},Nt=t.R2L||!1;d.__private__.setR2L=d.setR2L=function(v){return Nt=v,this},d.__private__.getR2L=d.getR2L=function(){return Nt};var Kt,ee=d.__private__.setZoomMode=function(v){var E=[void 0,null,"fullwidth","fullheight","fullpage","original"];if(/^(?:\d+\.\d*|\d*\.\d+|\d+)%$/.test(v))Dt=v;else if(isNaN(v)){if(E.indexOf(v)===-1)throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "'+v+'" is not recognized.');Dt=v}else Dt=parseInt(v,10)};d.__private__.getZoomMode=function(){return Dt};var Bt,ue=d.__private__.setPageMode=function(v){if([void 0,null,"UseNone","UseOutlines","UseThumbs","FullScreen"].indexOf(v)==-1)throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "'+v+'" is not recognized.');Kt=v};d.__private__.getPageMode=function(){return Kt};var we=d.__private__.setLayoutMode=function(v){if([void 0,null,"continuous","single","twoleft","tworight","two"].indexOf(v)==-1)throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "'+v+'" is not recognized.');Bt=v};d.__private__.getLayoutMode=function(){return Bt},d.__private__.setDisplayMode=d.setDisplayMode=function(v,E,G){return ee(v),we(E),ue(G),this};var te={title:"",subject:"",author:"",keywords:"",creator:""};d.__private__.getDocumentProperty=function(v){if(Object.keys(te).indexOf(v)===-1)throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");return te[v]},d.__private__.getDocumentProperties=function(){return te},d.__private__.setDocumentProperties=d.setProperties=d.setDocumentProperties=function(v){for(var E in te)te.hasOwnProperty(E)&&v[E]&&(te[E]=v[E]);return this},d.__private__.setDocumentProperty=function(v,E){if(Object.keys(te).indexOf(v)===-1)throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");return te[v]=E};var fe,zt,Zn,xe,ki,Re={},Xe={},eo=[],Ae={},ba={},sn={},Ai={},Oo=null,an=0,re=[],Ce=new H_(d),xa=t.hotfixes||[],Vn={},no={},ro=[],Jt=function v(E,G,Q,ct,vt,Ct){if(!(this instanceof v))return new v(E,G,Q,ct,vt,Ct);isNaN(E)&&(E=1),isNaN(G)&&(G=0),isNaN(Q)&&(Q=0),isNaN(ct)&&(ct=1),isNaN(vt)&&(vt=0),isNaN(Ct)&&(Ct=0),this._matrix=[E,G,Q,ct,vt,Ct]};Object.defineProperty(Jt.prototype,"sx",{get:function(){return this._matrix[0]},set:function(v){this._matrix[0]=v}}),Object.defineProperty(Jt.prototype,"shy",{get:function(){return this._matrix[1]},set:function(v){this._matrix[1]=v}}),Object.defineProperty(Jt.prototype,"shx",{get:function(){return this._matrix[2]},set:function(v){this._matrix[2]=v}}),Object.defineProperty(Jt.prototype,"sy",{get:function(){return this._matrix[3]},set:function(v){this._matrix[3]=v}}),Object.defineProperty(Jt.prototype,"tx",{get:function(){return this._matrix[4]},set:function(v){this._matrix[4]=v}}),Object.defineProperty(Jt.prototype,"ty",{get:function(){return this._matrix[5]},set:function(v){this._matrix[5]=v}}),Object.defineProperty(Jt.prototype,"a",{get:function(){return this._matrix[0]},set:function(v){this._matrix[0]=v}}),Object.defineProperty(Jt.prototype,"b",{get:function(){return this._matrix[1]},set:function(v){this._matrix[1]=v}}),Object.defineProperty(Jt.prototype,"c",{get:function(){return this._matrix[2]},set:function(v){this._matrix[2]=v}}),Object.defineProperty(Jt.prototype,"d",{get:function(){return this._matrix[3]},set:function(v){this._matrix[3]=v}}),Object.defineProperty(Jt.prototype,"e",{get:function(){return this._matrix[4]},set:function(v){this._matrix[4]=v}}),Object.defineProperty(Jt.prototype,"f",{get:function(){return this._matrix[5]},set:function(v){this._matrix[5]=v}}),Object.defineProperty(Jt.prototype,"rotation",{get:function(){return Math.atan2(this.shx,this.sx)}}),Object.defineProperty(Jt.prototype,"scaleX",{get:function(){return this.decompose().scale.sx}}),Object.defineProperty(Jt.prototype,"scaleY",{get:function(){return this.decompose().scale.sy}}),Object.defineProperty(Jt.prototype,"isIdentity",{get:function(){return this.sx===1&&this.shy===0&&this.shx===0&&this.sy===1&&this.tx===0&&this.ty===0}}),Jt.prototype.join=function(v){return[this.sx,this.shy,this.shx,this.sy,this.tx,this.ty].map(I).join(v)},Jt.prototype.multiply=function(v){var E=v.sx*this.sx+v.shy*this.shx,G=v.sx*this.shy+v.shy*this.sy,Q=v.shx*this.sx+v.sy*this.shx,ct=v.shx*this.shy+v.sy*this.sy,vt=v.tx*this.sx+v.ty*this.shx+this.tx,Ct=v.tx*this.shy+v.ty*this.sy+this.ty;return new Jt(E,G,Q,ct,vt,Ct)},Jt.prototype.decompose=function(){var v=this.sx,E=this.shy,G=this.shx,Q=this.sy,ct=this.tx,vt=this.ty,Ct=Math.sqrt(v*v+E*E),$t=(v/=Ct)*G+(E/=Ct)*Q;G-=v*$t,Q-=E*$t;var Gt=Math.sqrt(G*G+Q*Q);return $t/=Gt,v*(Q/=Gt)>16&255,Q=Gt>>8&255,ct=255&Gt}if(Q===void 0||vt===void 0&&G===Q&&Q===ct)if(typeof G=="string")E=G+" "+Ct[0];else switch(v.precision){case 2:E=C(G/255)+" "+Ct[0];break;case 3:default:E=L(G/255)+" "+Ct[0]}else if(vt===void 0||Ee(vt)==="object"){if(vt&&!isNaN(vt.a)&&vt.a===0)return E=["1.","1.","1.",Ct[1]].join(" ");if(typeof G=="string")E=[G,Q,ct,Ct[1]].join(" ");else switch(v.precision){case 2:E=[C(G/255),C(Q/255),C(ct/255),Ct[1]].join(" ");break;default:case 3:E=[L(G/255),L(Q/255),L(ct/255),Ct[1]].join(" ")}}else if(typeof G=="string")E=[G,Q,ct,vt,Ct[2]].join(" ");else switch(v.precision){case 2:E=[C(G),C(Q),C(ct),C(vt),Ct[2]].join(" ");break;case 3:default:E=[L(G),L(Q),L(ct),L(vt),Ct[2]].join(" ")}return E},oo=d.__private__.getFilters=function(){return s},si=d.__private__.putStream=function(v){var E=(v=v||{}).data||"",G=v.filters||oo(),Q=v.alreadyAppliedFilters||[],ct=v.addLength1||!1,vt=E.length,Ct=v.objectId,$t=function(er){return er};if(u!==null&&Ct===void 0)throw new Error("ObjectId must be passed to putStream for file encryption");u!==null&&($t=tr.encryptor(Ct,0));var Gt={};G===!0&&(G=["FlateEncode"]);var se=v.additionalKeyValues||[],ie=(Gt=Qt.API.processDataByFilters!==void 0?Qt.API.processDataByFilters(E,G):{data:E,reverseChain:[]}).reverseChain+(Array.isArray(Q)?Q.join(" "):Q.toString());if(Gt.data.length!==0&&(se.push({key:"Length",value:Gt.data.length}),ct===!0&&se.push({key:"Length1",value:vt})),ie.length!=0)if(ie.split("/").length-1==1)se.push({key:"Filter",value:ie});else{se.push({key:"Filter",value:"["+ie+"]"});for(var ge=0;ge>"),Gt.data.length!==0&&(K("stream"),K($t(Gt.data)),K("endstream"))},so=d.__private__.putPage=function(v){var E=v.number,G=v.data,Q=v.objId,ct=v.contentsObjId;$r(Q,!0),K("<>"),K("endobj");var vt=G.join(` +`);return S===w.ADVANCED&&(vt+=` +Q`),$r(ct,!0),si({data:vt,filters:oo(),objectId:ct}),K("endobj"),Q},wa=d.__private__.putPages=function(){var v,E,G=[];for(v=1;v<=an;v++)re[v].objId=kn(),re[v].contentsObjId=kn();for(v=1;v<=an;v++)G.push(so({number:v,data:Lt[v],objId:re[v].objId,contentsObjId:re[v].contentsObjId,mediaBox:re[v].mediaBox,cropBox:re[v].cropBox,bleedBox:re[v].bleedBox,trimBox:re[v].trimBox,artBox:re[v].artBox,userUnit:re[v].userUnit,rootDictionaryObjId:Ro,resourceDictionaryObjId:Li}));$r(Ro,!0),K("<>"),K("endobj"),Ce.publish("postPutPages")},_l=function(v){Ce.publish("putFont",{font:v,out:K,newObject:En,putStream:si}),v.isAlreadyPutted!==!0&&(v.objectNumber=En(),K("<<"),K("/Type /Font"),K("/BaseFont /"+fc(v.postScriptName)),K("/Subtype /Type1"),typeof v.encoding=="string"&&K("/Encoding /"+v.encoding),K("/FirstChar 32"),K("/LastChar 255"),K(">>"),K("endobj"))},Sl=function(){for(var v in Re)Re.hasOwnProperty(v)&&(h===!1||h===!0&&p.hasOwnProperty(v))&&_l(Re[v])},kl=function(v){v.objectNumber=En();var E=[];E.push({key:"Type",value:"/XObject"}),E.push({key:"Subtype",value:"/Form"}),E.push({key:"BBox",value:"["+[I(v.x),I(v.y),I(v.x+v.width),I(v.y+v.height)].join(" ")+"]"}),E.push({key:"Matrix",value:"["+v.matrix.toString()+"]"});var G=v.pages[1].join(` +`);si({data:G,additionalKeyValues:E,objectId:v.objectNumber}),K("endobj")},Al=function(){for(var v in Vn)Vn.hasOwnProperty(v)&&kl(Vn[v])},Hh=function(v,E){var G,Q=[],ct=1/(E-1);for(G=0;G<1;G+=ct)Q.push(G);if(Q.push(1),v[0].offset!=0){var vt={offset:0,color:v[0].color};v.unshift(vt)}if(v[v.length-1].offset!=1){var Ct={offset:1,color:v[v.length-1].color};v.push(Ct)}for(var $t="",Gt=0,se=0;sev[Gt+1].offset;)Gt++;var ie=v[Gt].offset,ge=(G-ie)/(v[Gt+1].offset-ie),tn=v[Gt].color,ln=v[Gt+1].color;$t+=J(Math.round((1-ge)*tn[0]+ge*ln[0]).toString(16))+J(Math.round((1-ge)*tn[1]+ge*ln[1]).toString(16))+J(Math.round((1-ge)*tn[2]+ge*ln[2]).toString(16))}return $t.trim()},p1=function(v,E){E||(E=21);var G=En(),Q=Hh(v.colors,E),ct=[];ct.push({key:"FunctionType",value:"0"}),ct.push({key:"Domain",value:"[0.0 1.0]"}),ct.push({key:"Size",value:"["+E+"]"}),ct.push({key:"BitsPerSample",value:"8"}),ct.push({key:"Range",value:"[0.0 1.0 0.0 1.0 0.0 1.0]"}),ct.push({key:"Decode",value:"[0.0 1.0 0.0 1.0 0.0 1.0]"}),si({data:Q,additionalKeyValues:ct,alreadyAppliedFilters:["/ASCIIHexDecode"],objectId:G}),K("endobj"),v.objectNumber=En(),K("<< /ShadingType "+v.type),K("/ColorSpace /DeviceRGB");var vt="/Coords ["+I(parseFloat(v.coords[0]))+" "+I(parseFloat(v.coords[1]))+" ";v.type===2?vt+=I(parseFloat(v.coords[2]))+" "+I(parseFloat(v.coords[3])):vt+=I(parseFloat(v.coords[2]))+" "+I(parseFloat(v.coords[3]))+" "+I(parseFloat(v.coords[4]))+" "+I(parseFloat(v.coords[5])),K(vt+="]"),v.matrix&&K("/Matrix ["+v.matrix.toString()+"]"),K("/Function "+G+" 0 R"),K("/Extend [true true]"),K(">>"),K("endobj")},g1=function(v,E){var G=kn(),Q=En();E.push({resourcesOid:G,objectOid:Q}),v.objectNumber=Q;var ct=[];ct.push({key:"Type",value:"/Pattern"}),ct.push({key:"PatternType",value:"1"}),ct.push({key:"PaintType",value:"1"}),ct.push({key:"TilingType",value:"1"}),ct.push({key:"BBox",value:"["+v.boundingBox.map(I).join(" ")+"]"}),ct.push({key:"XStep",value:I(v.xStep)}),ct.push({key:"YStep",value:I(v.yStep)}),ct.push({key:"Resources",value:G+" 0 R"}),v.matrix&&ct.push({key:"Matrix",value:"["+v.matrix.toString()+"]"}),si({data:v.stream,additionalKeyValues:ct,objectId:v.objectNumber}),K("endobj")},Cl=function(v){var E;for(E in Ae)Ae.hasOwnProperty(E)&&(Ae[E]instanceof qa?p1(Ae[E]):Ae[E]instanceof Ac&&g1(Ae[E],v))},Gh=function(v){for(var E in v.objectNumber=En(),K("<<"),v)switch(E){case"opacity":K("/ca "+C(v[E]));break;case"stroke-opacity":K("/CA "+C(v[E]))}K(">>"),K("endobj")},m1=function(){var v;for(v in sn)sn.hasOwnProperty(v)&&Gh(sn[v])},fu=function(){for(var v in K("/XObject <<"),Vn)Vn.hasOwnProperty(v)&&Vn[v].objectNumber>=0&&K("/"+v+" "+Vn[v].objectNumber+" 0 R");Ce.publish("putXobjectDict"),K(">>")},y1=function(){tr.oid=En(),K("<<"),K("/Filter /Standard"),K("/V "+tr.v),K("/R "+tr.r),K("/U <"+tr.toHexString(tr.U)+">"),K("/O <"+tr.toHexString(tr.O)+">"),K("/P "+tr.P),K(">>"),K("endobj")},Yh=function(){for(var v in K("/Font <<"),Re)Re.hasOwnProperty(v)&&(h===!1||h===!0&&p.hasOwnProperty(v))&&K("/"+v+" "+Re[v].objectNumber+" 0 R");K(">>")},v1=function(){if(Object.keys(Ae).length>0){for(var v in K("/Shading <<"),Ae)Ae.hasOwnProperty(v)&&Ae[v]instanceof qa&&Ae[v].objectNumber>=0&&K("/"+v+" "+Ae[v].objectNumber+" 0 R");Ce.publish("putShadingPatternDict"),K(">>")}},Ll=function(v){if(Object.keys(Ae).length>0){for(var E in K("/Pattern <<"),Ae)Ae.hasOwnProperty(E)&&Ae[E]instanceof d.TilingPattern&&Ae[E].objectNumber>=0&&Ae[E].objectNumber>")}},b1=function(){if(Object.keys(sn).length>0){var v;for(v in K("/ExtGState <<"),sn)sn.hasOwnProperty(v)&&sn[v].objectNumber>=0&&K("/"+v+" "+sn[v].objectNumber+" 0 R");Ce.publish("putGStateDict"),K(">>")}},gn=function(v){$r(v.resourcesOid,!0),K("<<"),K("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"),Yh(),v1(),Ll(v.objectOid),b1(),fu(),K(">>"),K("endobj")},Xh=function(){var v=[];Sl(),m1(),Al(),Cl(v),Ce.publish("putResources"),v.forEach(gn),gn({resourcesOid:Li,objectOid:Number.MAX_SAFE_INTEGER}),Ce.publish("postPutResources")},Kh=function(){Ce.publish("putAdditionalObjects");for(var v=0;v>8&&(Gt=!0);v=$t.join("")}for(G=v.length;Gt===void 0&&G!==0;)v.charCodeAt(G-1)>>8&&(Gt=!0),G--;if(!Gt)return v;for($t=E.noBOM?[]:[254,255],G=0,Q=v.length;G>8)>>8)throw new Error("Character at position "+G+" of string '"+v+"' exceeds 16bits. Cannot be encoded into UCS-2 BE");$t.push(ie),$t.push(se-(ie<<8))}return String.fromCharCode.apply(void 0,$t)},Sr=d.__private__.pdfEscape=d.pdfEscape=function(v,E){return Nl(v,E).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},du=d.__private__.beginPage=function(v){Lt[++an]=[],re[an]={objId:0,contentsObjId:0,userUnit:Number(a),artBox:null,bleedBox:null,cropBox:null,trimBox:null,mediaBox:{bottomLeftX:0,bottomLeftY:0,topRightX:Number(v[0]),topRightY:Number(v[1])}},Zh(an),dt(Lt[$])},Qh=function(v,E){var G,Q,ct;switch(n=E||n,typeof v=="string"&&(G=m(v.toLowerCase()),Array.isArray(G)&&(Q=G[0],ct=G[1])),Array.isArray(v)&&(Q=v[0]*zt,ct=v[1]*zt),isNaN(Q)&&(Q=i[0],ct=i[1]),(Q>14400||ct>14400)&&(je.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"),Q=Math.min(14400,Q),ct=Math.min(14400,ct)),i=[Q,ct],n.substr(0,1)){case"l":ct>Q&&(i=[ct,Q]);break;case"p":Q>ct&&(i=[ct,Q])}du(i),od(yu),K(Mi),bu!==0&&K(bu+" J"),xu!==0&&K(xu+" j"),Ce.publish("addPage",{pageNumber:an})},w1=function(v){v>0&&v<=an&&(Lt.splice(v,1),re.splice(v,1),an--,$>an&&($=an),this.setPage($))},Zh=function(v){v>0&&v<=an&&($=v)},_1=d.__private__.getNumberOfPages=d.getNumberOfPages=function(){return Lt.length-1},td=function(v,E,G){var Q,ct=void 0;return G=G||{},v=v!==void 0?v:Re[fe].fontName,E=E!==void 0?E:Re[fe].fontStyle,Q=v.toLowerCase(),Xe[Q]!==void 0&&Xe[Q][E]!==void 0?ct=Xe[Q][E]:Xe[v]!==void 0&&Xe[v][E]!==void 0?ct=Xe[v][E]:G.disableWarning===!1&&je.warn("Unable to look up font label for font '"+v+"', '"+E+"'. Refer to getFontList() for available fonts."),ct||G.noFallback||(ct=Xe.times[E])==null&&(ct=Xe.times.normal),ct},S1=d.__private__.putInfo=function(){var v=En(),E=function(Q){return Q};for(var G in u!==null&&(E=tr.encryptor(v,0)),K("<<"),K("/Producer ("+Sr(E("jsPDF "+Qt.version))+")"),te)te.hasOwnProperty(G)&&te[G]&&K("/"+G.substr(0,1).toUpperCase()+G.substr(1)+" ("+Sr(E(te[G]))+")");K("/CreationDate ("+Sr(E(ot))+")"),K(">>"),K("endobj")},pu=d.__private__.putCatalog=function(v){var E=(v=v||{}).rootDictionaryObjId||Ro;switch(En(),K("<<"),K("/Type /Catalog"),K("/Pages "+E+" 0 R"),Dt||(Dt="fullwidth"),Dt){case"fullwidth":K("/OpenAction [3 0 R /FitH null]");break;case"fullheight":K("/OpenAction [3 0 R /FitV null]");break;case"fullpage":K("/OpenAction [3 0 R /Fit]");break;case"original":K("/OpenAction [3 0 R /XYZ null null 1]");break;default:var G=""+Dt;G.substr(G.length-1)==="%"&&(Dt=parseInt(Dt)/100),typeof Dt=="number"&&K("/OpenAction [3 0 R /XYZ null null "+C(Dt)+"]")}switch(Bt||(Bt="continuous"),Bt){case"continuous":K("/PageLayout /OneColumn");break;case"single":K("/PageLayout /SinglePage");break;case"two":case"twoleft":K("/PageLayout /TwoColumnLeft");break;case"tworight":K("/PageLayout /TwoColumnRight")}Kt&&K("/PageMode /"+Kt),Ce.publish("putCatalog"),K(">>"),K("endobj")},k1=d.__private__.putTrailer=function(){K("trailer"),K("<<"),K("/Size "+(Z+1)),K("/Root "+Z+" 0 R"),K("/Info "+(Z-1)+" 0 R"),u!==null&&K("/Encrypt "+tr.oid+" 0 R"),K("/ID [ <"+rt+"> <"+rt+"> ]"),K(">>")},A1=d.__private__.putHeader=function(){K("%PDF-"+y),K("%ºß¬à")},C1=d.__private__.putXRef=function(){var v="0000000000";K("xref"),K("0 "+(Z+1)),K("0000000000 65535 f ");for(var E=1;E<=Z;E++)typeof ut[E]=="function"?K((v+ut[E]()).slice(-10)+" 00000 n "):ut[E]!==void 0?K((v+ut[E]).slice(-10)+" 00000 n "):K("0000000000 00000 n ")},Io=d.__private__.buildDocument=function(){Ht(),dt(gt),Ce.publish("buildDocument"),A1(),wa(),Kh(),Xh(),u!==null&&y1(),S1(),pu();var v=pt;return C1(),k1(),K("startxref"),K(""+v),K("%%EOF"),dt(Lt[$]),gt.join(` +`)},Pl=d.__private__.getBlob=function(v){return new Blob([qt(v)],{type:"application/pdf"})},El=d.output=d.__private__.output=Ei(function(v,E){switch(typeof(E=E||{})=="string"?E={filename:E}:E.filename=E.filename||"generated.pdf",v){case void 0:return Io();case"save":d.save(E.filename);break;case"arraybuffer":return qt(Io());case"blob":return Pl(Io());case"bloburi":case"bloburl":if(Zt.URL!==void 0&&typeof Zt.URL.createObjectURL=="function")return Zt.URL&&Zt.URL.createObjectURL(Pl(Io()))||void 0;je.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");break;case"datauristring":case"dataurlstring":var G="",Q=Io();try{G=ny(Q)}catch{G=ny(unescape(encodeURIComponent(Q)))}return"data:application/pdf;filename="+E.filename+";base64,"+G;case"pdfobjectnewwindow":if(Object.prototype.toString.call(Zt)==="[object Window]"){var ct="https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js",vt=' integrity="sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==" crossorigin="anonymous"';E.pdfObjectUrl&&(ct=E.pdfObjectUrl,vt="");var Ct=' + Budget Buddy + + + + + +
+ + + \ No newline at end of file diff --git a/server/public/vite.svg b/server/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/server/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/routes/auth.js b/server/routes/auth.js new file mode 100644 index 000000000..616031183 --- /dev/null +++ b/server/routes/auth.js @@ -0,0 +1,45 @@ +import express from 'express' +import passport from 'passport' + +const router = express.Router() + +router.get('/login/success', (req, res) => { + if (req.user) { + res.status(200).json({ + success: true, + user: req.user + }) + } +}) + +router.get('/login/failed', (req, res) => { + res.status(401).json({ + success: false, + message: 'failure', + }) +}) + +router.get('/logout', function(req, res, next) { + req.logout((err) => { + if (err) { return next(err) } + + req.session.destroy((err) => { + res.clearCookie('connect.sid') + + res.json({ + status: 'logout', + user: {}, + }) + }) + }) +}) + +router.get('/github', passport.authenticate('github', { scope: [ 'read:user' ] })) + +router.get('/github/callback', passport.authenticate('github', { + successRedirect: 'http://localhost:5173/', + failureRedirect: 'http://localhost:5173/user', + }) +) + +export default router diff --git a/server/routes/category.js b/server/routes/category.js new file mode 100644 index 000000000..d331ce80a --- /dev/null +++ b/server/routes/category.js @@ -0,0 +1,8 @@ +import CategoryController from '../controllers/category.js'; +import express from 'express'; + +const router = express.Router(); + +router.get('/', CategoryController.getCategories); + +export default router; \ No newline at end of file diff --git a/server/routes/expense.js b/server/routes/expense.js new file mode 100644 index 000000000..81a2fe0e8 --- /dev/null +++ b/server/routes/expense.js @@ -0,0 +1,14 @@ +import express from 'express'; +import ExpenseControllers from '../controllers/expense.js'; + +const router = express.Router(); + + +router.get('/:user_id', ExpenseControllers.getExpenses); //user_id +router.get('/:id', ExpenseControllers.getExpensesById); +router.post('/add', ExpenseControllers.addExpenses); +router.put('/update/:id', ExpenseControllers.updateExpenses); +router.delete('/delete/:id', ExpenseControllers.deleteExpenses); + +export default router; + diff --git a/server/routes/income.js b/server/routes/income.js new file mode 100644 index 000000000..75cc871d9 --- /dev/null +++ b/server/routes/income.js @@ -0,0 +1,13 @@ +import express from 'express'; +import IncomeControllers from '../controllers/income.js'; + +const router = express.Router(); + + +router.get('/:user_id', IncomeControllers.getIncome); +router.get('/:id', IncomeControllers.getIncomeById); +router.post('/add', IncomeControllers.addIncome); +router.put('/update/:id', IncomeControllers.updateIncome); +router.delete('/delete/:id', IncomeControllers.deleteIncome); + +export default router; diff --git a/server/routes/report.js b/server/routes/report.js new file mode 100644 index 000000000..b3ad79e64 --- /dev/null +++ b/server/routes/report.js @@ -0,0 +1,9 @@ +import express from 'express'; + +import { getReports } from '../controllers/report.js'; + +const router = express.Router(); + +router.get('/', getReports); + +export default router; \ No newline at end of file diff --git a/server/routes/savingGoal.js b/server/routes/savingGoal.js new file mode 100644 index 000000000..0a504df41 --- /dev/null +++ b/server/routes/savingGoal.js @@ -0,0 +1,19 @@ +import express from 'express'; +import savingGoalController from '../controllers/savingGoal.js'; + +const router = express.Router(); + + +// GET /goals to retrieve goals for the user +router.get('/:user_id', savingGoalController.getGoals); + +// POST /goals to add a new savings goal +router.post('/', savingGoalController.addGoal); + +// PUT /goals/:goal_id to update current savings amount +router.put('/:goal_id', savingGoalController.updateGoal); + +// DELETE /goals/:goal_id to remove a goal +router.delete('/:goal_id', savingGoalController.deleteGoal); + +export default router; \ No newline at end of file diff --git a/server/server.js b/server/server.js new file mode 100644 index 000000000..5b2fc5f1a --- /dev/null +++ b/server/server.js @@ -0,0 +1,84 @@ +import express from 'express' +import cors from 'cors' + +import passport from 'passport' +import session from 'express-session' +import { GitHub } from './config/auth.js' +import path from 'path' + +// import userRoutes from './routes/user.js'; +import categoryRoutes from './routes/category.js'; +import expenseRoutes from './routes/expense.js'; +import incomeRoutes from './routes/income.js'; +import goalRoutes from './routes/savingGoal.js'; +import reportRoutes from './routes/report.js'; + +import authRoutes from './routes/auth.js' + +const app = express(); + +app.use(session({ + secret: process.env.SESSION_SECRET, + resave: false, + saveUninitialized: true +})); + +app.use(express.json()); + +if (process.env.NODE_ENV === 'production') { + app.use(express.static('public')) +} + +const corsOptions = { + origin: process.env.NODE_ENV === 'production' ? 'https://budgetbuddy-a1mr.onrender.com' : 'http://localhost:5173', + methods: 'GET,POST,PUT,DELETE,PATCH', + credentials: true +}; + +app.use(cors(corsOptions)); + +// app.use(cors({ +// origin: 'http://localhost:5173', +// methods: 'GET,POST,PUT,DELETE,PATCH', +// credentials: true +// })) + +// app.use(cors({ +// origin: 'https://budgetbuddy-a1mr.onrender.com', +// methods: 'GET,POST,PUT,DELETE,PATCH', +// credentials: true +// })) + +app.use(passport.initialize()) +app.use(passport.session()) +passport.use(GitHub) +passport.serializeUser((user, done) => { + done(null, user) +}) +passport.deserializeUser((user, done) => { + done(null, user) +}) + +app.get('/', (req, res) => { + res.status(200).send('

✈️Budget Buddy API

') +}) + +app.use('/auth', authRoutes) +// app.use('/user', userRoutes); +app.use('/api/category', categoryRoutes); +app.use('/api/income', incomeRoutes); +app.use('/api/expense', expenseRoutes); +app.use('/api/goal', goalRoutes); +app.use('/api/report', reportRoutes); + +const PORT = process.env.PORT || 3000; + +if (process.env.NODE_ENV === 'production') { + app.get('/*', (_, res) => + res.sendFile(path.resolve('public', 'index.html')) + ) +} + +app.listen(PORT, () => { + console.log(`Server is running on port ${PORT}`); +}) \ No newline at end of file diff --git a/server/util/auth.js b/server/util/auth.js new file mode 100644 index 000000000..8bddc8546 --- /dev/null +++ b/server/util/auth.js @@ -0,0 +1,62 @@ +/* eslint-disable no-undef */ +import { scrypt, randomBytes, timingSafeEqual } from "crypto"; +import jwt from 'jsonwebtoken'; + +// command to create jwt secret key +// node -e "console.log(require('crypto').randomBytes(16).toString('hex'))" +const KEYLEN = 32; + +const JWT_SECRET = process.env.JWT_SECRET + +const hash = async (password) => { + return new Promise((resolve, reject) => { + const salt = randomBytes(16).toString("hex"); + + scrypt(password, salt, KEYLEN, (err, derivedKey) => { + if (err) { + reject(err); + } + + //derivedKey is a Buffer + const derivedHex = derivedKey.toString("hex"); + resolve(`${salt}:${derivedHex}`); + }); + }); +}; + +const compare = async (password, dbSaltHash) => { + return new Promise((resolve, reject) => { + const [salt, hash] = dbSaltHash.split(":"); + + const hashBuffer = Buffer.from(hash, "hex"); + + scrypt(password, salt, KEYLEN, (err, derivedKey) => { + if (err) { + reject(err); + } + + const isEqual = timingSafeEqual(hashBuffer, derivedKey); + resolve(isEqual); + }); + }); +}; + +//encrypt +const signToken = (user) => { + try{ + return jwt.sign(user, JWT_SECRET, {expiresIn: '1h'}); + } catch (error){ + return error; + } +}; + +//decrypt +const verifyToken = (token) => { + try{ + return jwt.verify(token, JWT_SECRET); + } catch(error){ + return error; + } +} + +export { hash, compare, signToken, verifyToken};