commit e531e27c27912914e931aebdedc19ab17d6ba279 Author: Flatlogic Bot Date: Fri Mar 13 11:05:30 2026 +0000 Initial import diff --git a/.env b/.env new file mode 100644 index 0000000..d785839 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +VITE_BACKEND=false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b6e53b8 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,33 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Lint + run: npm run lint + + - name: Build + run: npm run build + + - name: Test + run: npm test diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1708cb0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/node_modules/ +/.idea/ +build \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..2bd5a0a --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..cedf9c7 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "quoteProps": "as-needed", + "jsxSingleQuote": true, + "bracketSpacing": true, + "bracketSameLine": false, + "arrowParens": "always" +} diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..0bf7005 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,6 @@ +module.exports = { + trailingComma: "es5", + tabWidth: 4, + semi: false, + singleQuote: true +}; diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..8b809fe --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2022 Flatlogic LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..119f791 --- /dev/null +++ b/README.md @@ -0,0 +1,145 @@ +# 🚀 React Material Admin - A Free Material-UI Dashboard Template! + +[View Demo](https://flatlogic.com/templates/react-material-admin-full/demo) | [Download](https://github.com/flatlogic/react-material-admin/archive/refs/heads/master.zip) | [More Templates](https://flatlogic.com/templates) | [Discord Community](https://discord.gg/flatlogic-community) | [Support Forum](https://flatlogic.com/forum) + +**Originally a premium product priced at $99+, now available for free!** 🎉 + +[![image](https://user-images.githubusercontent.com/24964748/55800639-df780300-5adc-11e9-84b7-7c2437088516.png)](https://flatlogic.com/templates/react-material-admin-full/demo) + +Looking for a perfect codebase generator for your Startup? Try [Flatlogic AI Web App Generator](https://flatlogic.com/generator) - our new tool, sort of a template++. + +--- + +## 🎯 Why React Material Admin? +- **Ex-Premium**: This template was previously paid. Enjoy it for free now. 😉 +- **Material-UI Based**: Built with Material-UI for a modern and sleek UI. +- **Join the Community**: [Flatlogic Discord](https://discord.gg/flatlogic-community) is where the action happens. +- **Free Node.js Backend**: Pair it up with [this backend](https://github.com/flatlogic/nodejs-backend) to go full-stack. + +--- + +## 🚀 Quick Start + +1. **Clone the repo** + ```bash + git clone https://github.com/flatlogic/react-material-admin.git + cd react-material-admin + ``` +2. **Use Node.js 22.x (recommended) or 20.19+** + ```bash + node -v + ``` +3. **Install dependencies** + ```bash + npm install + ``` +4. **Run frontend-only mode (default)** + ```bash + npm run dev + ``` +5. **Enable backend mode (optional)** + - Create `.env.local`: + ```bash + VITE_BACKEND=true + ``` + - Start backend API on `http://localhost:8080` + - Run: + ```bash + npm run dev + ``` +6. **Build for production** + ```bash + npm run build + ``` +7. **Preview production build (optional)** + ```bash + npm run preview + ``` + +--- + +## 📌 Current Stack Snapshot + +- React `19.2.4` +- MUI `7.x` + Emotion +- React Router `7.x` (`BrowserRouter`, hooks API) +- Context-based state for auth/users/layout/theme +- Vite `7.x` + `@vitejs/plugin-react-swc` +- Vitest `4.x` smoke tests + GitHub Actions CI (`lint`, `build`, `test`) +- Frontend-only users/auth fallback is available when backend is disabled + +--- + +## 🧩 Features + +- Three Color Themes +- Fully Responsive +- React 19 +- MUI 7 +- Authentication System +- Modular Architecture +- Charts Libraries +- Dashboard Pages +- CSS-in-JS Styling +- Vite-based build setup + +--- + +## 🛠 Built With + +- React 19 +- MUI 7 +- React Hooks & Context API +- React Router v7 +- Vite 7 + SWC React plugin +- Vitest + Testing Library +- Node.js (for backend) + +--- + +## 📦 Components + +- UI Elements (Buttons, Modals, Forms) +- Charts (Line, Bar, Pie) +- Authentication (Login, Signup) +- Tables (Static, Dynamic) +- Profile Page +- Notifications + +--- + +## 🌍 Available Variants + +| | **Material** | **Transparent** | **Classic** | **Sofia** | **Flatlogic** | +|---------------|-----------------------------------------------------------|---------------------------------------------------------|-------------------------------------------------------|-----------------------------------------------------|----------------------------------------------------| +| **React** | [React Material Admin](https://github.com/flatlogic/react-material-admin) | [Light Blue React](https://github.com/flatlogic/light-blue-react) | [Sing App React](https://github.com/flatlogic/sing-app-react) | [Sofia React](https://github.com/flatlogic/sofia-react) | [One React](https://github.com/flatlogic/one-react) | +| **Angular** | [Angular Material Admin](https://github.com/flatlogic/angular-material-admin-full) | [Light Blue Angular](https://github.com/flatlogic/light-blue-angular) | [Sing App Angular](https://github.com/flatlogic/sing-app-angular) | - | - | +| **Vue** | [Material Vue](https://github.com/flatlogic/material-vue-full) | [Light Blue Vue](https://github.com/flatlogic/light-blue-vue) | [Sing App Vue](https://github.com/flatlogic/sing-app-vue-dashboard) | - | - | +| **Bootstrap** | - | [Light Blue HTML5](https://github.com/flatlogic/light-blue-html5) | [Sing App HTML5](https://github.com/flatlogic/sing-app-html5) | - | [One Bootstrap](https://github.com/flatlogic/one-bootstrap-template-full) | + + +Additionally, these templates are tailored for specific business needs: +- [E-Commerce Frontend (React)](https://github.com/flatlogic/ecommerce-frontend) - A complete e-commerce solution. +- [Bookkeeper UI (React)](https://github.com/flatlogic/bookkeeper-ui) - Accounting dashboard for finance management. +- [User Management Template (React)](https://github.com/flatlogic/user-management-template) - User authentication and management. + +--- + +## 👨‍💻 How to Contribute + +- **Star this repo ⭐** - show some love. +- **Report bugs** - but be nice. +- **Join the [Discord](https://discord.gg/flatlogic-community)** - meet fellow devs. + +--- + +## 🔥 About Flatlogic + +[Flatlogic](https://flatlogic.com/ai-software-development-agent) builds modern business software so you don't have to. Our AI Software Development Agent helps you generate, deploy, and maintain enterprise applications with minimal effort. + +--- + +> **Questions or feedback?** +> Join our [Flatlogic Community Discord](https://discord.gg/flatlogic-community) or visit our [support forum](https://flatlogic.com/forum). We might even reply! + +--- diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..c7a2217 --- /dev/null +++ b/changelog.md @@ -0,0 +1,136 @@ +# Changelog + +## [3.0.1] - 22/02/2026 + +- Fixed CI build failure by restoring direct `uuid` dependency used in users/forms flows. +- Verified release checks after fix (`lint`, `build`, `test`) to keep pipeline green. + +## [3.0.0] - 22/02/2026 + +- Migrated build tooling from CRA/rewired to Vite (`dev`, `build`, `preview`) with npm-only workflow. +- Upgraded runtime stack to modern baseline: React Router 7 + Vite 7 + SWC React plugin. +- Removed legacy runtime layers (`connected-react-router`, old router/history glue, Babel project config, CRA polyfill path). +- Completed active-code UI modernization: no legacy `@material-ui/*`, class components migrated to hooks in active paths. +- Restored and modernized maps using `leaflet` + `react-leaflet` + `topojson-client`. +- Added smoke test coverage on critical routes (login, dashboard, users) with Vitest. +- Added CI quality gates (`lint`, `build`, `test`) and cleaned eslint output to zero warnings/errors. +- Refreshed README and modernization plan docs to match the current stack and release workflow. + +## [2.4.1] - 22/11/2024 + +- Updated dependencies + +## [2.4.0] - 10/09/2024 + +- Added react-scripts version 5 along with webpack version 5 support. +- Added support for node.js version > 20 +- Removed old webpack configs. +- Removed unnecessary dev dependencies. + +# [2.3.4] - 20/12/2023 + +- Update dependencies + +# [2.3.3] - 16/05/2023 + +- Update dependencies +- Update react version + +# [2.3.2] - 20/07/2022 + +- Fix ecommerce editing + +# [2.3.1] - 18/07/2022 + +- Fix users management + +# [2.3.0] - 01/06/2022 + +- Updated from MUI4 to MUI5, fixed Dark Theme +- Fixed Grid actions +- Fixed various bugs related to DataGrid +- Updated packages + +# [2.2.5] - 05/03/2021 + +- Fixed errors +- Clear code +- Hide warnings + +# [2.2.4] + +- Updated documentation + +# [2.2.3] + +### New Features +- Added Profile page +- Added Grid page +- Updated packages +- Updated README.md + +# [2.1.3] + +### Updated +- Added link to flatlogic on login and register pages + +# [2.1.2] + +### Updated +- Updated fullcalendar package to v5.3.0 + +# [2.1.1] + +### Improved +- Improved css + +# [2.1.0] + +### New Features +- Added upload image functionality + +# [2.0.0] + +### New Features +- Added user management table +- Added register functionality +- Added reset password functionality +- User invitation functionality +- Social Login + +# [1.2.1] + +### Fixed +- JWT token checking fix + +### Updated +- Update scrollbar color on Windows devices +- Some color improvements + +# [1.1.1] + +### Updated +- Adjust unused libs imports +- Updated Docs +- Minor components updates + +### New Features +- Docs full update + +### Fixed +- Wrappers of the components fix +- Performance improve + +## [1.1.0] + +### Fixed + +- set localStorage item of theme + +### Updated + +- redux updates + +## [1.0.0] + +Initial version of the project diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..ecd8e98 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + React Material Admin Full + + + + + +
+ + diff --git a/docs/assets/1-CmIqmZXz.jpg b/docs/assets/1-CmIqmZXz.jpg new file mode 100644 index 0000000..4d86516 Binary files /dev/null and b/docs/assets/1-CmIqmZXz.jpg differ diff --git a/docs/assets/2-MJzYJRzQ.jpg b/docs/assets/2-MJzYJRzQ.jpg new file mode 100644 index 0000000..6ccc83e Binary files /dev/null and b/docs/assets/2-MJzYJRzQ.jpg differ diff --git a/docs/assets/3-Dr4xpczX.jpg b/docs/assets/3-Dr4xpczX.jpg new file mode 100644 index 0000000..a9b8b6a Binary files /dev/null and b/docs/assets/3-Dr4xpczX.jpg differ diff --git a/docs/assets/FolderRedDark-Dp_8oWLe.svg b/docs/assets/FolderRedDark-Dp_8oWLe.svg new file mode 100644 index 0000000..80f388b --- /dev/null +++ b/docs/assets/FolderRedDark-Dp_8oWLe.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/FolderRedLight-C-vAuCj3.svg b/docs/assets/FolderRedLight-C-vAuCj3.svg new file mode 100644 index 0000000..5c4d5d3 --- /dev/null +++ b/docs/assets/FolderRedLight-C-vAuCj3.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/FolderYellowDark-C3qCzRZs.svg b/docs/assets/FolderYellowDark-C3qCzRZs.svg new file mode 100644 index 0000000..ec8e6e6 --- /dev/null +++ b/docs/assets/FolderYellowDark-C3qCzRZs.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/FolderYellowLight-oRKdS_lX.svg b/docs/assets/FolderYellowLight-oRKdS_lX.svg new file mode 100644 index 0000000..8df6469 --- /dev/null +++ b/docs/assets/FolderYellowLight-oRKdS_lX.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/a1-DgqnjE2v.jpg b/docs/assets/a1-DgqnjE2v.jpg new file mode 100644 index 0000000..d24e9d6 Binary files /dev/null and b/docs/assets/a1-DgqnjE2v.jpg differ diff --git a/docs/assets/a2-BF5wLY3O.jpg b/docs/assets/a2-BF5wLY3O.jpg new file mode 100644 index 0000000..17098ce Binary files /dev/null and b/docs/assets/a2-BF5wLY3O.jpg differ diff --git a/docs/assets/a3-BT44phKs.jpg b/docs/assets/a3-BT44phKs.jpg new file mode 100644 index 0000000..451a0b4 Binary files /dev/null and b/docs/assets/a3-BT44phKs.jpg differ diff --git a/docs/assets/a3-Q2dxtR85.jpg b/docs/assets/a3-Q2dxtR85.jpg new file mode 100644 index 0000000..f4591d5 Binary files /dev/null and b/docs/assets/a3-Q2dxtR85.jpg differ diff --git a/docs/assets/a4-CjndXA0d.jpg b/docs/assets/a4-CjndXA0d.jpg new file mode 100644 index 0000000..98f0310 Binary files /dev/null and b/docs/assets/a4-CjndXA0d.jpg differ diff --git a/docs/assets/aexpress-BqJuj5k3.svg b/docs/assets/aexpress-BqJuj5k3.svg new file mode 100644 index 0000000..bb6431f --- /dev/null +++ b/docs/assets/aexpress-BqJuj5k3.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/flatlogic-fzLmcyc0.jpeg b/docs/assets/flatlogic-fzLmcyc0.jpeg new file mode 100644 index 0000000..2a7cfef Binary files /dev/null and b/docs/assets/flatlogic-fzLmcyc0.jpeg differ diff --git a/docs/assets/gallery1-DGSLZf-L.jpg b/docs/assets/gallery1-DGSLZf-L.jpg new file mode 100644 index 0000000..9d2e666 Binary files /dev/null and b/docs/assets/gallery1-DGSLZf-L.jpg differ diff --git a/docs/assets/gallery10-DI1pvIyM.jpg b/docs/assets/gallery10-DI1pvIyM.jpg new file mode 100644 index 0000000..750bfd3 Binary files /dev/null and b/docs/assets/gallery10-DI1pvIyM.jpg differ diff --git a/docs/assets/gallery11-hZ8j93Gx.jpg b/docs/assets/gallery11-hZ8j93Gx.jpg new file mode 100644 index 0000000..04aa053 Binary files /dev/null and b/docs/assets/gallery11-hZ8j93Gx.jpg differ diff --git a/docs/assets/gallery12-Bl3gQrzf.jpg b/docs/assets/gallery12-Bl3gQrzf.jpg new file mode 100644 index 0000000..d1cedf9 Binary files /dev/null and b/docs/assets/gallery12-Bl3gQrzf.jpg differ diff --git a/docs/assets/gallery2-DjgoMOGX.jpg b/docs/assets/gallery2-DjgoMOGX.jpg new file mode 100644 index 0000000..cf4bcd3 Binary files /dev/null and b/docs/assets/gallery2-DjgoMOGX.jpg differ diff --git a/docs/assets/gallery3-P-rpFEKH.jpg b/docs/assets/gallery3-P-rpFEKH.jpg new file mode 100644 index 0000000..8aa58d7 Binary files /dev/null and b/docs/assets/gallery3-P-rpFEKH.jpg differ diff --git a/docs/assets/gallery4-DCtNJ_Qn.jpg b/docs/assets/gallery4-DCtNJ_Qn.jpg new file mode 100644 index 0000000..068f726 Binary files /dev/null and b/docs/assets/gallery4-DCtNJ_Qn.jpg differ diff --git a/docs/assets/gallery5-DNF09C0h.jpg b/docs/assets/gallery5-DNF09C0h.jpg new file mode 100644 index 0000000..5a12637 Binary files /dev/null and b/docs/assets/gallery5-DNF09C0h.jpg differ diff --git a/docs/assets/gallery6-BNFJM8Sz.jpg b/docs/assets/gallery6-BNFJM8Sz.jpg new file mode 100644 index 0000000..d095815 Binary files /dev/null and b/docs/assets/gallery6-BNFJM8Sz.jpg differ diff --git a/docs/assets/gallery7-DiAFQ1Bu.jpg b/docs/assets/gallery7-DiAFQ1Bu.jpg new file mode 100644 index 0000000..2ccf4ad Binary files /dev/null and b/docs/assets/gallery7-DiAFQ1Bu.jpg differ diff --git a/docs/assets/gallery8-B7RAOBcs.jpg b/docs/assets/gallery8-B7RAOBcs.jpg new file mode 100644 index 0000000..22118d6 Binary files /dev/null and b/docs/assets/gallery8-B7RAOBcs.jpg differ diff --git a/docs/assets/gallery9-Ca5uFBrN.jpg b/docs/assets/gallery9-Ca5uFBrN.jpg new file mode 100644 index 0000000..569f9ef Binary files /dev/null and b/docs/assets/gallery9-Ca5uFBrN.jpg differ diff --git a/docs/assets/img1-Dtu24cI6.jpg b/docs/assets/img1-Dtu24cI6.jpg new file mode 100644 index 0000000..31fac52 Binary files /dev/null and b/docs/assets/img1-Dtu24cI6.jpg differ diff --git a/docs/assets/img2-hCLBWyRx.jpg b/docs/assets/img2-hCLBWyRx.jpg new file mode 100644 index 0000000..bc56e75 Binary files /dev/null and b/docs/assets/img2-hCLBWyRx.jpg differ diff --git a/docs/assets/img3-BBd_mS8I.jpg b/docs/assets/img3-BBd_mS8I.jpg new file mode 100644 index 0000000..5eb68be Binary files /dev/null and b/docs/assets/img3-BBd_mS8I.jpg differ diff --git a/docs/assets/img4-DN0wnbGq.jpg b/docs/assets/img4-DN0wnbGq.jpg new file mode 100644 index 0000000..1d5a960 Binary files /dev/null and b/docs/assets/img4-DN0wnbGq.jpg differ diff --git a/docs/assets/img5-4MvFfME0.jpeg b/docs/assets/img5-4MvFfME0.jpeg new file mode 100644 index 0000000..f5e0e37 Binary files /dev/null and b/docs/assets/img5-4MvFfME0.jpeg differ diff --git a/docs/assets/img6-Bz8EYk5e.jpg b/docs/assets/img6-Bz8EYk5e.jpg new file mode 100644 index 0000000..8065737 Binary files /dev/null and b/docs/assets/img6-Bz8EYk5e.jpg differ diff --git a/docs/assets/index-DJaTQbrV.js b/docs/assets/index-DJaTQbrV.js new file mode 100644 index 0000000..2a3ee2c --- /dev/null +++ b/docs/assets/index-DJaTQbrV.js @@ -0,0 +1,1506 @@ +var P_e=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var bIt=P_e((Rl,Ol)=>{function k_e(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 a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function r(i){if(i.ep)return;i.ep=!0;const a=n(i);fetch(i.href,a)}})();function qa(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function mie(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var n=function r(){var i=!1;try{i=this instanceof r}catch{}return i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var cI={exports:{}},Uv={};var DH;function L_e(){if(DH)return Uv;DH=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,i,a){var o=null;if(a!==void 0&&(o=""+a),i.key!==void 0&&(o=""+i.key),"key"in i){a={};for(var s in i)s!=="key"&&(a[s]=i[s])}else a=i;return i=a.ref,{$$typeof:t,type:r,key:o,ref:i!==void 0?i:null,props:a}}return Uv.Fragment=e,Uv.jsx=n,Uv.jsxs=n,Uv}var PH;function B_e(){return PH||(PH=1,cI.exports=L_e()),cI.exports}var d=B_e(),uI={exports:{}},zv={},dI={exports:{}},fI={};var kH;function F_e(){return kH||(kH=1,(function(t){function e(H,W){var q=H.length;H.push(W);e:for(;0>>1,X=H[Q];if(0>>1;Q<$;){var K=2*(Q+1)-1,te=H[K],ie=K+1,se=H[ie];if(0>i(te,q))iei(se,te)?(H[Q]=se,H[ie]=q,Q=ie):(H[Q]=te,H[K]=q,Q=K);else if(iei(se,q))H[Q]=se,H[ie]=q,Q=ie;else break e}}return W}function i(H,W){var q=H.sortIndex-W.sortIndex;return q!==0?q:H.id-W.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();t.unstable_now=function(){return o.now()-s}}var l=[],u=[],c=1,f=null,h=3,m=!1,b=!1,_=!1,y=!1,x=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,A=typeof setImmediate<"u"?setImmediate:null;function R(H){for(var W=n(u);W!==null;){if(W.callback===null)r(u);else if(W.startTime<=H)r(u),W.sortIndex=W.expirationTime,e(l,W);else break;W=n(u)}}function I(H){if(_=!1,R(H),!b)if(n(l)!==null)b=!0,O||(O=!0,M());else{var W=n(u);W!==null&&Y(I,W.startTime-H)}}var O=!1,N=-1,k=5,D=-1;function P(){return y?!0:!(t.unstable_now()-DH&&P());){var Q=f.callback;if(typeof Q=="function"){f.callback=null,h=f.priorityLevel;var X=Q(f.expirationTime<=H);if(H=t.unstable_now(),typeof X=="function"){f.callback=X,R(H),W=!0;break t}f===n(l)&&r(l),R(H)}else r(l);f=n(l)}if(f!==null)W=!0;else{var $=n(u);$!==null&&Y(I,$.startTime-H),W=!1}}break e}finally{f=null,h=q,m=!1}W=void 0}}finally{W?M():O=!1}}}var M;if(typeof A=="function")M=function(){A(j)};else if(typeof MessageChannel<"u"){var z=new MessageChannel,G=z.port2;z.port1.onmessage=j,M=function(){G.postMessage(null)}}else M=function(){x(j,0)};function Y(H,W){N=x(function(){H(t.unstable_now())},W)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(H){H.callback=null},t.unstable_forceFrameRate=function(H){0>H||125Q?(H.sortIndex=q,e(u,H),n(l)===null&&H===n(u)&&(_?(C(N),N=-1):_=!0,Y(I,q-Q))):(H.sortIndex=X,e(l,H),b||m||(b=!0,O||(O=!0,M()))),H},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(H){var W=h;return function(){var q=h;h=W;try{return H.apply(this,arguments)}finally{h=q}}}})(fI)),fI}var LH;function j_e(){return LH||(LH=1,dI.exports=F_e()),dI.exports}var pI={exports:{}},Bn={};var BH;function U_e(){if(BH)return Bn;BH=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),c=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),h=Symbol.iterator;function m($){return $===null||typeof $!="object"?null:($=h&&$[h]||$["@@iterator"],typeof $=="function"?$:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,y={};function x($,K,te){this.props=$,this.context=K,this.refs=y,this.updater=te||b}x.prototype.isReactComponent={},x.prototype.setState=function($,K){if(typeof $!="object"&&typeof $!="function"&&$!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,$,K,"setState")},x.prototype.forceUpdate=function($){this.updater.enqueueForceUpdate(this,$,"forceUpdate")};function C(){}C.prototype=x.prototype;function A($,K,te){this.props=$,this.context=K,this.refs=y,this.updater=te||b}var R=A.prototype=new C;R.constructor=A,_(R,x.prototype),R.isPureReactComponent=!0;var I=Array.isArray;function O(){}var N={H:null,A:null,T:null,S:null},k=Object.prototype.hasOwnProperty;function D($,K,te){var ie=te.ref;return{$$typeof:t,type:$,key:K,ref:ie!==void 0?ie:null,props:te}}function P($,K){return D($.type,K,$.props)}function j($){return typeof $=="object"&&$!==null&&$.$$typeof===t}function M($){var K={"=":"=0",":":"=2"};return"$"+$.replace(/[=:]/g,function(te){return K[te]})}var z=/\/+/g;function G($,K){return typeof $=="object"&&$!==null&&$.key!=null?M(""+$.key):K.toString(36)}function Y($){switch($.status){case"fulfilled":return $.value;case"rejected":throw $.reason;default:switch(typeof $.status=="string"?$.then(O,O):($.status="pending",$.then(function(K){$.status==="pending"&&($.status="fulfilled",$.value=K)},function(K){$.status==="pending"&&($.status="rejected",$.reason=K)})),$.status){case"fulfilled":return $.value;case"rejected":throw $.reason}}throw $}function H($,K,te,ie,se){var le=typeof $;(le==="undefined"||le==="boolean")&&($=null);var be=!1;if($===null)be=!0;else switch(le){case"bigint":case"string":case"number":be=!0;break;case"object":switch($.$$typeof){case t:case e:be=!0;break;case c:return be=$._init,H(be($._payload),K,te,ie,se)}}if(be)return se=se($),be=ie===""?"."+G($,0):ie,I(se)?(te="",be!=null&&(te=be.replace(z,"$&/")+"/"),H(se,K,te,"",function(ye){return ye})):se!=null&&(j(se)&&(se=P(se,te+(se.key==null||$&&$.key===se.key?"":(""+se.key).replace(z,"$&/")+"/")+be)),K.push(se)),1;be=0;var we=ie===""?".":ie+":";if(I($))for(var ue=0;ue<$.length;ue++)ie=$[ue],le=we+G(ie,ue),be+=H(ie,K,te,le,se);else if(ue=m($),typeof ue=="function")for($=ue.call($),ue=0;!(ie=$.next()).done;)ie=ie.value,le=we+G(ie,ue++),be+=H(ie,K,te,le,se);else if(le==="object"){if(typeof $.then=="function")return H(Y($),K,te,ie,se);throw K=String($),Error("Objects are not valid as a React child (found: "+(K==="[object Object]"?"object with keys {"+Object.keys($).join(", ")+"}":K)+"). If you meant to render a collection of children, use an array instead.")}return be}function W($,K,te){if($==null)return $;var ie=[],se=0;return H($,ie,"","",function(le){return K.call(te,le,se++)}),ie}function q($){if($._status===-1){var K=$._result;K=K(),K.then(function(te){($._status===0||$._status===-1)&&($._status=1,$._result=te)},function(te){($._status===0||$._status===-1)&&($._status=2,$._result=te)}),$._status===-1&&($._status=0,$._result=K)}if($._status===1)return $._result.default;throw $._result}var Q=typeof reportError=="function"?reportError:function($){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var K=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof $=="object"&&$!==null&&typeof $.message=="string"?String($.message):String($),error:$});if(!window.dispatchEvent(K))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",$);return}console.error($)},X={map:W,forEach:function($,K,te){W($,function(){K.apply(this,arguments)},te)},count:function($){var K=0;return W($,function(){K++}),K},toArray:function($){return W($,function(K){return K})||[]},only:function($){if(!j($))throw Error("React.Children.only expected to receive a single React element child.");return $}};return Bn.Activity=f,Bn.Children=X,Bn.Component=x,Bn.Fragment=n,Bn.Profiler=i,Bn.PureComponent=A,Bn.StrictMode=r,Bn.Suspense=l,Bn.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=N,Bn.__COMPILER_RUNTIME={__proto__:null,c:function($){return N.H.useMemoCache($)}},Bn.cache=function($){return function(){return $.apply(null,arguments)}},Bn.cacheSignal=function(){return null},Bn.cloneElement=function($,K,te){if($==null)throw Error("The argument must be a React element, but you passed "+$+".");var ie=_({},$.props),se=$.key;if(K!=null)for(le in K.key!==void 0&&(se=""+K.key),K)!k.call(K,le)||le==="key"||le==="__self"||le==="__source"||le==="ref"&&K.ref===void 0||(ie[le]=K[le]);var le=arguments.length-2;if(le===1)ie.children=te;else if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),hI.exports=z_e(),hI.exports}var zH;function H_e(){if(zH)return zv;zH=1;var t=j_e(),e=Bm(),n=bie();function r(p){var g="https://react.dev/errors/"+p;if(1X||(p.current=Q[X],Q[X]=null,X--)}function te(p,g){X++,Q[X]=p.current,p.current=g}var ie=$(null),se=$(null),le=$(null),be=$(null);function we(p,g){switch(te(le,g),te(se,p),te(ie,null),g.nodeType){case 9:case 11:p=(p=g.documentElement)&&(p=p.namespaceURI)?nH(p):0;break;default:if(p=g.tagName,g=g.namespaceURI)g=nH(g),p=rH(g,p);else switch(p){case"svg":p=1;break;case"math":p=2;break;default:p=0}}K(ie),te(ie,p)}function ue(){K(ie),K(se),K(le)}function ye(p){p.memoizedState!==null&&te(be,p);var g=ie.current,S=rH(g,p.type);g!==S&&(te(se,p),te(ie,S))}function Ae(p){se.current===p&&(K(ie),K(se)),be.current===p&&(K(be),Lv._currentValue=q)}var ve,Xe;function Be(p){if(ve===void 0)try{throw Error()}catch(S){var g=S.stack.trim().match(/\n( *(at )?)/);ve=g&&g[1]||"",Xe=-1)":-1F||_e[T]!==ke[F]){var Qe=` +`+_e[T].replace(" at new "," at ");return p.displayName&&Qe.includes("")&&(Qe=Qe.replace("",p.displayName)),Qe}while(1<=T&&0<=F);break}}}finally{Ne=!1,Error.prepareStackTrace=S}return(S=p?p.displayName||p.name:"")?Be(S):""}function De(p,g){switch(p.tag){case 26:case 27:case 5:return Be(p.type);case 16:return Be("Lazy");case 13:return p.child!==g&&g!==null?Be("Suspense Fallback"):Be("Suspense");case 19:return Be("SuspenseList");case 0:case 15:return Je(p.type,!1);case 11:return Je(p.type.render,!1);case 1:return Je(p.type,!0);case 31:return Be("Activity");default:return""}}function Oe(p){try{var g="",S=null;do g+=De(p,S),S=p,p=p.return;while(p);return g}catch(T){return` +Error generating stack: `+T.message+` +`+T.stack}}var ht=Object.prototype.hasOwnProperty,ot=t.unstable_scheduleCallback,At=t.unstable_cancelCallback,ge=t.unstable_shouldYield,nt=t.unstable_requestPaint,ze=t.unstable_now,ut=t.unstable_getCurrentPriorityLevel,dt=t.unstable_ImmediatePriority,yt=t.unstable_UserBlockingPriority,jt=t.unstable_NormalPriority,ft=t.unstable_LowPriority,Pt=t.unstable_IdlePriority,rt=t.log,St=t.unstable_setDisableYieldValue,Mt=null,Yt=null;function Hn(p){if(typeof rt=="function"&&St(p),Yt&&typeof Yt.setStrictMode=="function")try{Yt.setStrictMode(Mt,p)}catch{}}var Un=Math.clz32?Math.clz32:Le,Dt=Math.log,Se=Math.LN2;function Le(p){return p>>>=0,p===0?32:31-(Dt(p)/Se|0)|0}var pt=256,Ut=262144,dn=4194304;function hn(p){var g=p&42;if(g!==0)return g;switch(p&-p){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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return p&261888;case 262144:case 524288:case 1048576:case 2097152:return p&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return p&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return p}}function Nn(p,g,S){var T=p.pendingLanes;if(T===0)return 0;var F=0,U=p.suspendedLanes,ee=p.pingedLanes;p=p.warmLanes;var ae=T&134217727;return ae!==0?(T=ae&~U,T!==0?F=hn(T):(ee&=ae,ee!==0?F=hn(ee):S||(S=ae&~p,S!==0&&(F=hn(S))))):(ae=T&~U,ae!==0?F=hn(ae):ee!==0?F=hn(ee):S||(S=T&~p,S!==0&&(F=hn(S)))),F===0?0:g!==0&&g!==F&&(g&U)===0&&(U=F&-F,S=g&-g,U>=S||U===32&&(S&4194048)!==0)?g:F}function wt(p,g){return(p.pendingLanes&~(p.suspendedLanes&~p.pingedLanes)&g)===0}function Ht(p,g){switch(p){case 1:case 2:case 4:case 8:case 64:return g+250;case 16:case 32: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 g+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Et(){var p=dn;return dn<<=1,(dn&62914560)===0&&(dn=4194304),p}function Xt(p){for(var g=[],S=0;31>S;S++)g.push(p);return g}function _t(p,g){p.pendingLanes|=g,g!==268435456&&(p.suspendedLanes=0,p.pingedLanes=0,p.warmLanes=0)}function qt(p,g,S,T,F,U){var ee=p.pendingLanes;p.pendingLanes=S,p.suspendedLanes=0,p.pingedLanes=0,p.warmLanes=0,p.expiredLanes&=S,p.entangledLanes&=S,p.errorRecoveryDisabledLanes&=S,p.shellSuspendCounter=0;var ae=p.entanglements,_e=p.expirationTimes,ke=p.hiddenUpdates;for(S=ee&~S;0"u")return null;try{return p.activeElement||p.body}catch{return p.body}}var Md=/[\n"\\]/g;function jr(p){return p.replace(Md,function(g){return"\\"+g.charCodeAt(0).toString(16)+" "})}function Dd(p,g,S,T,F,U,ee,ae){p.name="",ee!=null&&typeof ee!="function"&&typeof ee!="symbol"&&typeof ee!="boolean"?p.type=ee:p.removeAttribute("type"),g!=null?ee==="number"?(g===0&&p.value===""||p.value!=g)&&(p.value=""+Fr(g)):p.value!==""+Fr(g)&&(p.value=""+Fr(g)):ee!=="submit"&&ee!=="reset"||p.removeAttribute("value"),g!=null?as(p,ee,Fr(g)):S!=null?as(p,ee,Fr(S)):T!=null&&p.removeAttribute("value"),F==null&&U!=null&&(p.defaultChecked=!!U),F!=null&&(p.checked=F&&typeof F!="function"&&typeof F!="symbol"),ae!=null&&typeof ae!="function"&&typeof ae!="symbol"&&typeof ae!="boolean"?p.name=""+Fr(ae):p.removeAttribute("name")}function is(p,g,S,T,F,U,ee,ae){if(U!=null&&typeof U!="function"&&typeof U!="symbol"&&typeof U!="boolean"&&(p.type=U),g!=null||S!=null){if(!(U!=="submit"&&U!=="reset"||g!=null)){Mn(p);return}S=S!=null?""+Fr(S):"",g=g!=null?""+Fr(g):S,ae||g===p.value||(p.value=g),p.defaultValue=g}T=T??F,T=typeof T!="function"&&typeof T!="symbol"&&!!T,p.checked=ae?p.checked:!!T,p.defaultChecked=!!T,ee!=null&&typeof ee!="function"&&typeof ee!="symbol"&&typeof ee!="boolean"&&(p.name=ee),Mn(p)}function as(p,g,S){g==="number"&&Nc(p.ownerDocument)===p||p.defaultValue===""+S||(p.defaultValue=""+S)}function Ar(p,g,S,T){if(p=p.options,g){g={};for(var F=0;F"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),kh=!1;if(ll)try{var cl={};Object.defineProperty(cl,"passive",{get:function(){kh=!0}}),window.addEventListener("test",cl,cl),window.removeEventListener("test",cl,cl)}catch{kh=!1}var zl=null,kd=null,Ji=null;function Ru(){if(Ji)return Ji;var p,g=kd,S=g.length,T,F="value"in zl?zl.value:zl.textContent,U=F.length;for(p=0;p=Zf),i1=" ",Mx=!1;function Dx(p,g){switch(p){case"keyup":return Is.indexOf(g.keyCode)!==-1;case"keydown":return g.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function rv(p){return p=p.detail,typeof p=="object"&&"data"in p?p.data:null}var Jf=!1;function ul(p,g){switch(p){case"compositionend":return rv(g);case"keypress":return g.which!==32?null:(Mx=!0,i1);case"textInput":return p=g.data,p===i1&&Mx?null:p;default:return null}}function ep(p,g){if(Jf)return p==="compositionend"||!n1&&Dx(p,g)?(p=Ru(),Ji=kd=zl=null,Jf=!1,p):null;switch(p){case"paste":return null;case"keypress":if(!(g.ctrlKey||g.altKey||g.metaKey)||g.ctrlKey&&g.altKey){if(g.char&&1=g)return{node:S,offset:g-p};p=T}e:{for(;S;){if(S.nextSibling){S=S.nextSibling;break e}S=S.parentNode}S=void 0}S=o1(S)}}function s1(p,g){return p&&g?p===g?!0:p&&p.nodeType===3?!1:g&&g.nodeType===3?s1(p,g.parentNode):"contains"in p?p.contains(g):p.compareDocumentPosition?!!(p.compareDocumentPosition(g)&16):!1:!1}function Vh(p){p=p!=null&&p.ownerDocument!=null&&p.ownerDocument.defaultView!=null?p.ownerDocument.defaultView:window;for(var g=Nc(p.document);g instanceof p.HTMLIFrameElement;){try{var S=typeof g.contentWindow.location.href=="string"}catch{S=!1}if(S)p=g.contentWindow;else break;g=Nc(p.document)}return g}function Iu(p){var g=p&&p.nodeName&&p.nodeName.toLowerCase();return g&&(g==="input"&&(p.type==="text"||p.type==="search"||p.type==="tel"||p.type==="url"||p.type==="password")||g==="textarea"||p.contentEditable==="true")}var l1=ll&&"documentMode"in document&&11>=document.documentMode,Nu=null,c1=null,Yh=null,ip=!1;function Fx(p,g,S){var T=S.window===S?S.document:S.nodeType===9?S:S.ownerDocument;ip||Nu==null||Nu!==Nc(T)||(T=Nu,"selectionStart"in T&&Iu(T)?T={start:T.selectionStart,end:T.selectionEnd}:(T=(T.ownerDocument&&T.ownerDocument.defaultView||window).getSelection(),T={anchorNode:T.anchorNode,anchorOffset:T.anchorOffset,focusNode:T.focusNode,focusOffset:T.focusOffset}),Yh&&rp(Yh,T)||(Yh=T,T=CE(c1,"onSelect"),0>=ee,F-=ee,st=1<<32-Un(g)+F|S<Xn?(gr=cn,cn=null):gr=cn.sibling;var Dr=je(Re,cn,Pe[Xn],it);if(Dr===null){cn===null&&(cn=gr);break}p&&cn&&Dr.alternate===null&&g(Re,cn),Ce=U(Dr,Ce,Xn),Mr===null?_n=Dr:Mr.sibling=Dr,Mr=Dr,cn=gr}if(Xn===Pe.length)return S(Re,cn),lr&&fn(Re,Xn),_n;if(cn===null){for(;XnXn?(gr=cn,cn=null):gr=cn.sibling;var Tp=je(Re,cn,Dr.value,it);if(Tp===null){cn===null&&(cn=gr);break}p&&cn&&Tp.alternate===null&&g(Re,cn),Ce=U(Tp,Ce,Xn),Mr===null?_n=Tp:Mr.sibling=Tp,Mr=Tp,cn=gr}if(Dr.done)return S(Re,cn),lr&&fn(Re,Xn),_n;if(cn===null){for(;!Dr.done;Xn++,Dr=Pe.next())Dr=lt(Re,Dr.value,it),Dr!==null&&(Ce=U(Dr,Ce,Xn),Mr===null?_n=Dr:Mr.sibling=Dr,Mr=Dr);return lr&&fn(Re,Xn),_n}for(cn=T(cn);!Dr.done;Xn++,Dr=Pe.next())Dr=Ge(cn,Re,Xn,Dr.value,it),Dr!==null&&(p&&Dr.alternate!==null&&cn.delete(Dr.key===null?Xn:Dr.key),Ce=U(Dr,Ce,Xn),Mr===null?_n=Dr:Mr.sibling=Dr,Mr=Dr);return p&&cn.forEach(function(D_e){return g(Re,D_e)}),lr&&fn(Re,Xn),_n}function oi(Re,Ce,Pe,it){if(typeof Pe=="object"&&Pe!==null&&Pe.type===_&&Pe.key===null&&(Pe=Pe.props.children),typeof Pe=="object"&&Pe!==null){switch(Pe.$$typeof){case m:e:{for(var _n=Pe.key;Ce!==null;){if(Ce.key===_n){if(_n=Pe.type,_n===_){if(Ce.tag===7){S(Re,Ce.sibling),it=F(Ce,Pe.props.children),it.return=Re,Re=it;break e}}else if(Ce.elementType===_n||typeof _n=="object"&&_n!==null&&_n.$$typeof===k&&rg(_n)===Ce.type){S(Re,Ce.sibling),it=F(Ce,Pe.props),pv(it,Pe),it.return=Re,Re=it;break e}S(Re,Ce);break}else g(Re,Ce);Ce=Ce.sibling}Pe.type===_?(it=Fd(Pe.props.children,Re.mode,it,Pe.key),it.return=Re,Re=it):(it=Zh(Pe.type,Pe.key,Pe.props,null,Re.mode,it),pv(it,Pe),it.return=Re,Re=it)}return ee(Re);case b:e:{for(_n=Pe.key;Ce!==null;){if(Ce.key===_n)if(Ce.tag===4&&Ce.stateNode.containerInfo===Pe.containerInfo&&Ce.stateNode.implementation===Pe.implementation){S(Re,Ce.sibling),it=F(Ce,Pe.children||[]),it.return=Re,Re=it;break e}else{S(Re,Ce);break}else g(Re,Ce);Ce=Ce.sibling}it=sv(Pe,Re.mode,it),it.return=Re,Re=it}return ee(Re);case k:return Pe=rg(Pe),oi(Re,Ce,Pe,it)}if(Y(Pe))return tn(Re,Ce,Pe,it);if(M(Pe)){if(_n=M(Pe),typeof _n!="function")throw Error(r(150));return Pe=_n.call(Pe),Cn(Re,Ce,Pe,it)}if(typeof Pe.then=="function")return oi(Re,Ce,qx(Pe),it);if(Pe.$$typeof===A)return oi(Re,Ce,Gx(Re,Pe),it);Kx(Re,Pe)}return typeof Pe=="string"&&Pe!==""||typeof Pe=="number"||typeof Pe=="bigint"?(Pe=""+Pe,Ce!==null&&Ce.tag===6?(S(Re,Ce.sibling),it=F(Ce,Pe),it.return=Re,Re=it):(S(Re,Ce),it=p1(Pe,Re.mode,it),it.return=Re,Re=it),ee(Re)):S(Re,Ce)}return function(Re,Ce,Pe,it){try{fv=0;var _n=oi(Re,Ce,Pe,it);return v1=null,_n}catch(cn){if(cn===_1||cn===Yx)throw cn;var Mr=Fo(29,cn,null,Re.mode);return Mr.lanes=it,Mr.return=Re,Mr}}}var ag=Wj(!0),qj=Wj(!1),cp=!1;function jO(p){p.updateQueue={baseState:p.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function UO(p,g){p=p.updateQueue,g.updateQueue===p&&(g.updateQueue={baseState:p.baseState,firstBaseUpdate:p.firstBaseUpdate,lastBaseUpdate:p.lastBaseUpdate,shared:p.shared,callbacks:null})}function up(p){return{lane:p,tag:0,payload:null,callback:null,next:null}}function dp(p,g,S){var T=p.updateQueue;if(T===null)return null;if(T=T.shared,(zr&2)!==0){var F=T.pending;return F===null?g.next=g:(g.next=F.next,F.next=g),T.pending=g,g=Qh(p),sp(p,null,S),g}return Pu(p,T,g,S),Qh(p)}function hv(p,g,S){if(g=g.updateQueue,g!==null&&(g=g.shared,(S&4194048)!==0)){var T=g.lanes;T&=p.pendingLanes,S|=T,g.lanes=S,On(p,S)}}function zO(p,g){var S=p.updateQueue,T=p.alternate;if(T!==null&&(T=T.updateQueue,S===T)){var F=null,U=null;if(S=S.firstBaseUpdate,S!==null){do{var ee={lane:S.lane,tag:S.tag,payload:S.payload,callback:null,next:null};U===null?F=U=ee:U=U.next=ee,S=S.next}while(S!==null);U===null?F=U=g:U=U.next=g}else F=U=g;S={baseState:T.baseState,firstBaseUpdate:F,lastBaseUpdate:U,shared:T.shared,callbacks:T.callbacks},p.updateQueue=S;return}p=S.lastBaseUpdate,p===null?S.firstBaseUpdate=g:p.next=g,S.lastBaseUpdate=g}var HO=!1;function gv(){if(HO){var p=b1;if(p!==null)throw p}}function mv(p,g,S,T){HO=!1;var F=p.updateQueue;cp=!1;var U=F.firstBaseUpdate,ee=F.lastBaseUpdate,ae=F.shared.pending;if(ae!==null){F.shared.pending=null;var _e=ae,ke=_e.next;_e.next=null,ee===null?U=ke:ee.next=ke,ee=_e;var Qe=p.alternate;Qe!==null&&(Qe=Qe.updateQueue,ae=Qe.lastBaseUpdate,ae!==ee&&(ae===null?Qe.firstBaseUpdate=ke:ae.next=ke,Qe.lastBaseUpdate=_e))}if(U!==null){var lt=F.baseState;ee=0,Qe=ke=_e=null,ae=U;do{var je=ae.lane&-536870913,Ge=je!==ae.lane;if(Ge?(hr&je)===je:(T&je)===je){je!==0&&je===m1&&(HO=!0),Qe!==null&&(Qe=Qe.next={lane:0,tag:ae.tag,payload:ae.payload,callback:null,next:null});e:{var tn=p,Cn=ae;je=g;var oi=S;switch(Cn.tag){case 1:if(tn=Cn.payload,typeof tn=="function"){lt=tn.call(oi,lt,je);break e}lt=tn;break e;case 3:tn.flags=tn.flags&-65537|128;case 0:if(tn=Cn.payload,je=typeof tn=="function"?tn.call(oi,lt,je):tn,je==null)break e;lt=f({},lt,je);break e;case 2:cp=!0}}je=ae.callback,je!==null&&(p.flags|=64,Ge&&(p.flags|=8192),Ge=F.callbacks,Ge===null?F.callbacks=[je]:Ge.push(je))}else Ge={lane:je,tag:ae.tag,payload:ae.payload,callback:ae.callback,next:null},Qe===null?(ke=Qe=Ge,_e=lt):Qe=Qe.next=Ge,ee|=je;if(ae=ae.next,ae===null){if(ae=F.shared.pending,ae===null)break;Ge=ae,ae=Ge.next,Ge.next=null,F.lastBaseUpdate=Ge,F.shared.pending=null}}while(!0);Qe===null&&(_e=lt),F.baseState=_e,F.firstBaseUpdate=ke,F.lastBaseUpdate=Qe,U===null&&(F.shared.lanes=0),mp|=ee,p.lanes=ee,p.memoizedState=lt}}function Kj(p,g){if(typeof p!="function")throw Error(r(191,p));p.call(g)}function Xj(p,g){var S=p.callbacks;if(S!==null)for(p.callbacks=null,p=0;pU?U:8;var ee=H.T,ae={};H.T=ae,s3(p,!1,g,S);try{var _e=F(),ke=H.S;if(ke!==null&&ke(ae,_e),_e!==null&&typeof _e=="object"&&typeof _e.then=="function"){var Qe=xbe(_e,T);vv(p,g,Qe,gl(p))}else vv(p,g,T,gl(p))}catch(lt){vv(p,g,{then:function(){},status:"rejected",reason:lt},gl())}finally{W.p=U,ee!==null&&ae.types!==null&&(ee.types=ae.types),H.T=ee}}function Rbe(){}function a3(p,g,S,T){if(p.tag!==5)throw Error(r(476));var F=RU(p).queue;AU(p,F,g,q,S===null?Rbe:function(){return OU(p),S(T)})}function RU(p){var g=p.memoizedState;if(g!==null)return g;g={memoizedState:q,baseState:q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Hd,lastRenderedState:q},next:null};var S={};return g.next={memoizedState:S,baseState:S,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Hd,lastRenderedState:S},next:null},p.memoizedState=g,p=p.alternate,p!==null&&(p.memoizedState=g),g}function OU(p){var g=RU(p);g.next===null&&(g=p.alternate.memoizedState),vv(p,g.next.queue,{},gl())}function o3(){return bo(Lv)}function IU(){return ya().memoizedState}function NU(){return ya().memoizedState}function Obe(p){for(var g=p.return;g!==null;){switch(g.tag){case 24:case 3:var S=gl();p=up(S);var T=dp(g,p,S);T!==null&&(Fs(T,g,S),hv(T,g,S)),g={cache:kO()},p.payload=g;return}g=g.return}}function Ibe(p,g,S){var T=gl();S={lane:T,revertLane:0,gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},aE(p)?DU(g,S):(S=iv(p,g,S,T),S!==null&&(Fs(S,p,T),PU(S,g,T)))}function MU(p,g,S){var T=gl();vv(p,g,S,T)}function vv(p,g,S,T){var F={lane:T,revertLane:0,gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null};if(aE(p))DU(g,F);else{var U=p.alternate;if(p.lanes===0&&(U===null||U.lanes===0)&&(U=g.lastRenderedReducer,U!==null))try{var ee=g.lastRenderedState,ae=U(ee,S);if(F.hasEagerState=!0,F.eagerState=ae,eo(ae,ee))return Pu(p,g,F,0),fi===null&&Xh(),!1}catch{}if(S=iv(p,g,F,T),S!==null)return Fs(S,p,T),PU(S,g,T),!0}return!1}function s3(p,g,S,T){if(T={lane:2,revertLane:j3(),gesture:null,action:T,hasEagerState:!1,eagerState:null,next:null},aE(p)){if(g)throw Error(r(479))}else g=iv(p,S,T,2),g!==null&&Fs(g,p,2)}function aE(p){var g=p.alternate;return p===Gn||g!==null&&g===Gn}function DU(p,g){S1=Zx=!0;var S=p.pending;S===null?g.next=g:(g.next=S.next,S.next=g),p.pending=g}function PU(p,g,S){if((S&4194048)!==0){var T=g.lanes;T&=p.pendingLanes,S|=T,g.lanes=S,On(p,S)}}var yv={readContext:bo,use:tE,useCallback:ta,useContext:ta,useEffect:ta,useImperativeHandle:ta,useLayoutEffect:ta,useInsertionEffect:ta,useMemo:ta,useReducer:ta,useRef:ta,useState:ta,useDebugValue:ta,useDeferredValue:ta,useTransition:ta,useSyncExternalStore:ta,useId:ta,useHostTransitionStatus:ta,useFormState:ta,useActionState:ta,useOptimistic:ta,useMemoCache:ta,useCacheRefresh:ta};yv.useEffectEvent=ta;var kU={readContext:bo,use:tE,useCallback:function(p,g){return cs().memoizedState=[p,g===void 0?null:g],p},useContext:bo,useEffect:_U,useImperativeHandle:function(p,g,S){S=S!=null?S.concat([p]):null,rE(4194308,4,xU.bind(null,g,p),S)},useLayoutEffect:function(p,g){return rE(4194308,4,p,g)},useInsertionEffect:function(p,g){rE(4,2,p,g)},useMemo:function(p,g){var S=cs();g=g===void 0?null:g;var T=p();if(og){Hn(!0);try{p()}finally{Hn(!1)}}return S.memoizedState=[T,g],T},useReducer:function(p,g,S){var T=cs();if(S!==void 0){var F=S(g);if(og){Hn(!0);try{S(g)}finally{Hn(!1)}}}else F=g;return T.memoizedState=T.baseState=F,p={pending:null,lanes:0,dispatch:null,lastRenderedReducer:p,lastRenderedState:F},T.queue=p,p=p.dispatch=Ibe.bind(null,Gn,p),[T.memoizedState,p]},useRef:function(p){var g=cs();return p={current:p},g.memoizedState=p},useState:function(p){p=e3(p);var g=p.queue,S=MU.bind(null,Gn,g);return g.dispatch=S,[p.memoizedState,S]},useDebugValue:r3,useDeferredValue:function(p,g){var S=cs();return i3(S,p,g)},useTransition:function(){var p=e3(!1);return p=AU.bind(null,Gn,p.queue,!0,!1),cs().memoizedState=p,[!1,p]},useSyncExternalStore:function(p,g,S){var T=Gn,F=cs();if(lr){if(S===void 0)throw Error(r(407));S=S()}else{if(S=g(),fi===null)throw Error(r(349));(hr&127)!==0||nU(T,g,S)}F.memoizedState=S;var U={value:S,getSnapshot:g};return F.queue=U,_U(iU.bind(null,T,U,p),[p]),T.flags|=2048,E1(9,{destroy:void 0},rU.bind(null,T,U,S,g),null),S},useId:function(){var p=cs(),g=fi.identifierPrefix;if(lr){var S=Bt,T=st;S=(T&~(1<<32-Un(T)-1)).toString(32)+S,g="_"+g+"R_"+S,S=Jx++,0<\/script>",U=U.removeChild(U.firstChild);break;case"select":U=typeof T.is=="string"?ee.createElement("select",{is:T.is}):ee.createElement("select"),T.multiple?U.multiple=!0:T.size&&(U.size=T.size);break;default:U=typeof T.is=="string"?ee.createElement(F,{is:T.is}):ee.createElement(F)}}U[zn]=g,U[$n]=T;e:for(ee=g.child;ee!==null;){if(ee.tag===5||ee.tag===6)U.appendChild(ee.stateNode);else if(ee.tag!==4&&ee.tag!==27&&ee.child!==null){ee.child.return=ee,ee=ee.child;continue}if(ee===g)break e;for(;ee.sibling===null;){if(ee.return===null||ee.return===g)break e;ee=ee.return}ee.sibling.return=ee.return,ee=ee.sibling}g.stateNode=U;e:switch(vo(U,F,T),F){case"button":case"input":case"select":case"textarea":T=!!T.autoFocus;break e;case"img":T=!0;break e;default:T=!1}T&&Gd(g)}}return Ti(g),S3(g,g.type,p===null?null:p.memoizedProps,g.pendingProps,S),null;case 6:if(p&&g.stateNode!=null)p.memoizedProps!==T&&Gd(g);else{if(typeof T!="string"&&g.stateNode===null)throw Error(r(166));if(p=le.current,Lc(g)){if(p=g.stateNode,S=g.memoizedProps,T=null,F=Ir,F!==null)switch(F.tag){case 27:case 5:T=F.memoizedProps}p[zn]=g,p=!!(p.nodeValue===S||T!==null&&T.suppressHydrationWarning===!0||eH(p.nodeValue,S)),p||Lu(g,!0)}else p=wE(p).createTextNode(T),p[zn]=g,g.stateNode=p}return Ti(g),null;case 31:if(S=g.memoizedState,p===null||p.memoizedState!==null){if(T=Lc(g),S!==null){if(p===null){if(!T)throw Error(r(318));if(p=g.memoizedState,p=p!==null?p.dehydrated:null,!p)throw Error(r(557));p[zn]=g}else jd(),(g.flags&128)===0&&(g.memoizedState=null),g.flags|=4;Ti(g),p=!1}else S=cv(),p!==null&&p.memoizedState!==null&&(p.memoizedState.hydrationErrors=S),p=!0;if(!p)return g.flags&256?(fl(g),g):(fl(g),null);if((g.flags&128)!==0)throw Error(r(558))}return Ti(g),null;case 13:if(T=g.memoizedState,p===null||p.memoizedState!==null&&p.memoizedState.dehydrated!==null){if(F=Lc(g),T!==null&&T.dehydrated!==null){if(p===null){if(!F)throw Error(r(318));if(F=g.memoizedState,F=F!==null?F.dehydrated:null,!F)throw Error(r(317));F[zn]=g}else jd(),(g.flags&128)===0&&(g.memoizedState=null),g.flags|=4;Ti(g),F=!1}else F=cv(),p!==null&&p.memoizedState!==null&&(p.memoizedState.hydrationErrors=F),F=!0;if(!F)return g.flags&256?(fl(g),g):(fl(g),null)}return fl(g),(g.flags&128)!==0?(g.lanes=S,g):(S=T!==null,p=p!==null&&p.memoizedState!==null,S&&(T=g.child,F=null,T.alternate!==null&&T.alternate.memoizedState!==null&&T.alternate.memoizedState.cachePool!==null&&(F=T.alternate.memoizedState.cachePool.pool),U=null,T.memoizedState!==null&&T.memoizedState.cachePool!==null&&(U=T.memoizedState.cachePool.pool),U!==F&&(T.flags|=2048)),S!==p&&S&&(g.child.flags|=8192),uE(g,g.updateQueue),Ti(g),null);case 4:return ue(),p===null&&$3(g.stateNode.containerInfo),Ti(g),null;case 10:return Ud(g.type),Ti(g),null;case 19:if(K(va),T=g.memoizedState,T===null)return Ti(g),null;if(F=(g.flags&128)!==0,U=T.rendering,U===null)if(F)xv(T,!1);else{if(na!==0||p!==null&&(p.flags&128)!==0)for(p=g.child;p!==null;){if(U=Qx(p),U!==null){for(g.flags|=128,xv(T,!1),p=U.updateQueue,g.updateQueue=p,uE(g,p),g.subtreeFlags=0,p=S,S=g.child;S!==null;)av(S,p),S=S.sibling;return te(va,va.current&1|2),lr&&fn(g,T.treeForkCount),g.child}p=p.sibling}T.tail!==null&&ze()>gE&&(g.flags|=128,F=!0,xv(T,!1),g.lanes=4194304)}else{if(!F)if(p=Qx(U),p!==null){if(g.flags|=128,F=!0,p=p.updateQueue,g.updateQueue=p,uE(g,p),xv(T,!0),T.tail===null&&T.tailMode==="hidden"&&!U.alternate&&!lr)return Ti(g),null}else 2*ze()-T.renderingStartTime>gE&&S!==536870912&&(g.flags|=128,F=!0,xv(T,!1),g.lanes=4194304);T.isBackwards?(U.sibling=g.child,g.child=U):(p=T.last,p!==null?p.sibling=U:g.child=U,T.last=U)}return T.tail!==null?(p=T.tail,T.rendering=p,T.tail=p.sibling,T.renderingStartTime=ze(),p.sibling=null,S=va.current,te(va,F?S&1|2:S&1),lr&&fn(g,T.treeForkCount),p):(Ti(g),null);case 22:case 23:return fl(g),GO(),T=g.memoizedState!==null,p!==null?p.memoizedState!==null!==T&&(g.flags|=8192):T&&(g.flags|=8192),T?(S&536870912)!==0&&(g.flags&128)===0&&(Ti(g),g.subtreeFlags&6&&(g.flags|=8192)):Ti(g),S=g.updateQueue,S!==null&&uE(g,S.retryQueue),S=null,p!==null&&p.memoizedState!==null&&p.memoizedState.cachePool!==null&&(S=p.memoizedState.cachePool.pool),T=null,g.memoizedState!==null&&g.memoizedState.cachePool!==null&&(T=g.memoizedState.cachePool.pool),T!==S&&(g.flags|=2048),p!==null&&K(ng),null;case 24:return S=null,p!==null&&(S=p.memoizedState.cache),g.memoizedState.cache!==S&&(g.flags|=2048),Ud(Ca),Ti(g),null;case 25:return null;case 30:return null}throw Error(r(156,g.tag))}function kbe(p,g){switch(ea(g),g.tag){case 1:return p=g.flags,p&65536?(g.flags=p&-65537|128,g):null;case 3:return Ud(Ca),ue(),p=g.flags,(p&65536)!==0&&(p&128)===0?(g.flags=p&-65537|128,g):null;case 26:case 27:case 5:return Ae(g),null;case 31:if(g.memoizedState!==null){if(fl(g),g.alternate===null)throw Error(r(340));jd()}return p=g.flags,p&65536?(g.flags=p&-65537|128,g):null;case 13:if(fl(g),p=g.memoizedState,p!==null&&p.dehydrated!==null){if(g.alternate===null)throw Error(r(340));jd()}return p=g.flags,p&65536?(g.flags=p&-65537|128,g):null;case 19:return K(va),null;case 4:return ue(),null;case 10:return Ud(g.type),null;case 22:case 23:return fl(g),GO(),p!==null&&K(ng),p=g.flags,p&65536?(g.flags=p&-65537|128,g):null;case 24:return Ud(Ca),null;case 25:return null;default:return null}}function az(p,g){switch(ea(g),g.tag){case 3:Ud(Ca),ue();break;case 26:case 27:case 5:Ae(g);break;case 4:ue();break;case 31:g.memoizedState!==null&&fl(g);break;case 13:fl(g);break;case 19:K(va);break;case 10:Ud(g.type);break;case 22:case 23:fl(g),GO(),p!==null&&K(ng);break;case 24:Ud(Ca)}}function Ev(p,g){try{var S=g.updateQueue,T=S!==null?S.lastEffect:null;if(T!==null){var F=T.next;S=F;do{if((S.tag&p)===p){T=void 0;var U=S.create,ee=S.inst;T=U(),ee.destroy=T}S=S.next}while(S!==F)}}catch(ae){Zr(g,g.return,ae)}}function hp(p,g,S){try{var T=g.updateQueue,F=T!==null?T.lastEffect:null;if(F!==null){var U=F.next;T=U;do{if((T.tag&p)===p){var ee=T.inst,ae=ee.destroy;if(ae!==void 0){ee.destroy=void 0,F=g;var _e=S,ke=ae;try{ke()}catch(Qe){Zr(F,_e,Qe)}}}T=T.next}while(T!==U)}}catch(Qe){Zr(g,g.return,Qe)}}function oz(p){var g=p.updateQueue;if(g!==null){var S=p.stateNode;try{Xj(g,S)}catch(T){Zr(p,p.return,T)}}}function sz(p,g,S){S.props=sg(p.type,p.memoizedProps),S.state=p.memoizedState;try{S.componentWillUnmount()}catch(T){Zr(p,g,T)}}function Cv(p,g){try{var S=p.ref;if(S!==null){switch(p.tag){case 26:case 27:case 5:var T=p.stateNode;break;case 30:T=p.stateNode;break;default:T=p.stateNode}typeof S=="function"?p.refCleanup=S(T):S.current=T}}catch(F){Zr(p,g,F)}}function Fu(p,g){var S=p.ref,T=p.refCleanup;if(S!==null)if(typeof T=="function")try{T()}catch(F){Zr(p,g,F)}finally{p.refCleanup=null,p=p.alternate,p!=null&&(p.refCleanup=null)}else if(typeof S=="function")try{S(null)}catch(F){Zr(p,g,F)}else S.current=null}function lz(p){var g=p.type,S=p.memoizedProps,T=p.stateNode;try{e:switch(g){case"button":case"input":case"select":case"textarea":S.autoFocus&&T.focus();break e;case"img":S.src?T.src=S.src:S.srcSet&&(T.srcset=S.srcSet)}}catch(F){Zr(p,p.return,F)}}function x3(p,g,S){try{var T=p.stateNode;r_e(T,p.type,S,g),T[$n]=g}catch(F){Zr(p,p.return,F)}}function cz(p){return p.tag===5||p.tag===3||p.tag===26||p.tag===27&&Sp(p.type)||p.tag===4}function E3(p){e:for(;;){for(;p.sibling===null;){if(p.return===null||cz(p.return))return null;p=p.return}for(p.sibling.return=p.return,p=p.sibling;p.tag!==5&&p.tag!==6&&p.tag!==18;){if(p.tag===27&&Sp(p.type)||p.flags&2||p.child===null||p.tag===4)continue e;p.child.return=p,p=p.child}if(!(p.flags&2))return p.stateNode}}function C3(p,g,S){var T=p.tag;if(T===5||T===6)p=p.stateNode,g?(S.nodeType===9?S.body:S.nodeName==="HTML"?S.ownerDocument.body:S).insertBefore(p,g):(g=S.nodeType===9?S.body:S.nodeName==="HTML"?S.ownerDocument.body:S,g.appendChild(p),S=S._reactRootContainer,S!=null||g.onclick!==null||(g.onclick=bn));else if(T!==4&&(T===27&&Sp(p.type)&&(S=p.stateNode,g=null),p=p.child,p!==null))for(C3(p,g,S),p=p.sibling;p!==null;)C3(p,g,S),p=p.sibling}function dE(p,g,S){var T=p.tag;if(T===5||T===6)p=p.stateNode,g?S.insertBefore(p,g):S.appendChild(p);else if(T!==4&&(T===27&&Sp(p.type)&&(S=p.stateNode),p=p.child,p!==null))for(dE(p,g,S),p=p.sibling;p!==null;)dE(p,g,S),p=p.sibling}function uz(p){var g=p.stateNode,S=p.memoizedProps;try{for(var T=p.type,F=g.attributes;F.length;)g.removeAttributeNode(F[0]);vo(g,T,S),g[zn]=p,g[$n]=S}catch(U){Zr(p,p.return,U)}}var Vd=!1,Aa=!1,w3=!1,dz=typeof WeakSet=="function"?WeakSet:Set,no=null;function Lbe(p,g){if(p=p.containerInfo,Y3=ME,p=Vh(p),Iu(p)){if("selectionStart"in p)var S={start:p.selectionStart,end:p.selectionEnd};else e:{S=(S=p.ownerDocument)&&S.defaultView||window;var T=S.getSelection&&S.getSelection();if(T&&T.rangeCount!==0){S=T.anchorNode;var F=T.anchorOffset,U=T.focusNode;T=T.focusOffset;try{S.nodeType,U.nodeType}catch{S=null;break e}var ee=0,ae=-1,_e=-1,ke=0,Qe=0,lt=p,je=null;t:for(;;){for(var Ge;lt!==S||F!==0&<.nodeType!==3||(ae=ee+F),lt!==U||T!==0&<.nodeType!==3||(_e=ee+T),lt.nodeType===3&&(ee+=lt.nodeValue.length),(Ge=lt.firstChild)!==null;)je=lt,lt=Ge;for(;;){if(lt===p)break t;if(je===S&&++ke===F&&(ae=ee),je===U&&++Qe===T&&(_e=ee),(Ge=lt.nextSibling)!==null)break;lt=je,je=lt.parentNode}lt=Ge}S=ae===-1||_e===-1?null:{start:ae,end:_e}}else S=null}S=S||{start:0,end:0}}else S=null;for(W3={focusedElem:p,selectionRange:S},ME=!1,no=g;no!==null;)if(g=no,p=g.child,(g.subtreeFlags&1028)!==0&&p!==null)p.return=g,no=p;else for(;no!==null;){switch(g=no,U=g.alternate,p=g.flags,g.tag){case 0:if((p&4)!==0&&(p=g.updateQueue,p=p!==null?p.events:null,p!==null))for(S=0;S title"))),vo(U,T,S),U[zn]=p,_r(U),T=U;break e;case"link":var ee=bH("link","href",F).get(T+(S.href||""));if(ee){for(var ae=0;aeoi&&(ee=oi,oi=Cn,Cn=ee);var Re=Gh(ae,Cn),Ce=Gh(ae,oi);if(Re&&Ce&&(Ge.rangeCount!==1||Ge.anchorNode!==Re.node||Ge.anchorOffset!==Re.offset||Ge.focusNode!==Ce.node||Ge.focusOffset!==Ce.offset)){var Pe=lt.createRange();Pe.setStart(Re.node,Re.offset),Ge.removeAllRanges(),Cn>oi?(Ge.addRange(Pe),Ge.extend(Ce.node,Ce.offset)):(Pe.setEnd(Ce.node,Ce.offset),Ge.addRange(Pe))}}}}for(lt=[],Ge=ae;Ge=Ge.parentNode;)Ge.nodeType===1&<.push({element:Ge,left:Ge.scrollLeft,top:Ge.scrollTop});for(typeof ae.focus=="function"&&ae.focus(),ae=0;aeS?32:S,H.T=null,S=M3,M3=null;var U=_p,ee=Xd;if(Ha=0,R1=_p=null,Xd=0,(zr&6)!==0)throw Error(r(331));var ae=zr;if(zr|=4,xz(U.current),vz(U,U.current,ee,S),zr=ae,Iv(0,!1),Yt&&typeof Yt.onPostCommitFiberRoot=="function")try{Yt.onPostCommitFiberRoot(Mt,U)}catch{}return!0}finally{W.p=F,H.T=T,Uz(p,g)}}function Hz(p,g,S){g=w(S,g),g=d3(p.stateNode,g,2),p=dp(p,g,2),p!==null&&(_t(p,2),ju(p))}function Zr(p,g,S){if(p.tag===3)Hz(p,p,S);else for(;g!==null;){if(g.tag===3){Hz(g,p,S);break}else if(g.tag===1){var T=g.stateNode;if(typeof g.type.getDerivedStateFromError=="function"||typeof T.componentDidCatch=="function"&&(bp===null||!bp.has(T))){p=w(S,p),S=$U(2),T=dp(g,S,2),T!==null&&(GU(S,T,g,p),_t(T,2),ju(T));break}}g=g.return}}function L3(p,g,S){var T=p.pingCache;if(T===null){T=p.pingCache=new jbe;var F=new Set;T.set(g,F)}else F=T.get(g),F===void 0&&(F=new Set,T.set(g,F));F.has(S)||(R3=!0,F.add(S),p=Gbe.bind(null,p,g,S),g.then(p,p))}function Gbe(p,g,S){var T=p.pingCache;T!==null&&T.delete(g),p.pingedLanes|=p.suspendedLanes&S,p.warmLanes&=~S,fi===p&&(hr&S)===S&&(na===4||na===3&&(hr&62914560)===hr&&300>ze()-hE?(zr&2)===0&&O1(p,0):O3|=S,A1===hr&&(A1=0)),ju(p)}function $z(p,g){g===0&&(g=Et()),p=Yl(p,g),p!==null&&(_t(p,g),ju(p))}function Vbe(p){var g=p.memoizedState,S=0;g!==null&&(S=g.retryLane),$z(p,S)}function Ybe(p,g){var S=0;switch(p.tag){case 31:case 13:var T=p.stateNode,F=p.memoizedState;F!==null&&(S=F.retryLane);break;case 19:T=p.stateNode;break;case 22:T=p.stateNode._retryCache;break;default:throw Error(r(314))}T!==null&&T.delete(g),$z(p,S)}function Wbe(p,g){return ot(p,g)}var SE=null,N1=null,B3=!1,xE=!1,F3=!1,yp=0;function ju(p){p!==N1&&p.next===null&&(N1===null?SE=N1=p:N1=N1.next=p),xE=!0,B3||(B3=!0,Kbe())}function Iv(p,g){if(!F3&&xE){F3=!0;do for(var S=!1,T=SE;T!==null;){if(p!==0){var F=T.pendingLanes;if(F===0)var U=0;else{var ee=T.suspendedLanes,ae=T.pingedLanes;U=(1<<31-Un(42|p)+1)-1,U&=F&~(ee&~ae),U=U&201326741?U&201326741|1:U?U|2:0}U!==0&&(S=!0,Wz(T,U))}else U=hr,U=Nn(T,T===fi?U:0,T.cancelPendingCommit!==null||T.timeoutHandle!==-1),(U&3)===0||wt(T,U)||(S=!0,Wz(T,U));T=T.next}while(S);F3=!1}}function qbe(){Gz()}function Gz(){xE=B3=!1;var p=0;yp!==0&&a_e()&&(p=yp);for(var g=ze(),S=null,T=SE;T!==null;){var F=T.next,U=Vz(T,g);U===0?(T.next=null,S===null?SE=F:S.next=F,F===null&&(N1=S)):(S=T,(p!==0||(U&3)!==0)&&(xE=!0)),T=F}Ha!==0&&Ha!==5||Iv(p),yp!==0&&(yp=0)}function Vz(p,g){for(var S=p.suspendedLanes,T=p.pingedLanes,F=p.expirationTimes,U=p.pendingLanes&-62914561;0ae)break;var Qe=_e.transferSize,lt=_e.initiatorType;Qe&&tH(lt)&&(_e=_e.responseEnd,ee+=Qe*(_e"u"?null:document;function pH(p,g,S){var T=M1;if(T&&typeof g=="string"&&g){var F=jr(g);F='link[rel="'+p+'"][href="'+F+'"]',typeof S=="string"&&(F+='[crossorigin="'+S+'"]'),fH.has(F)||(fH.add(F),p={rel:p,crossOrigin:S,href:g},T.querySelector(F)===null&&(g=T.createElement("link"),vo(g,"link",p),_r(g),T.head.appendChild(g)))}}function h_e(p){Qd.D(p),pH("dns-prefetch",p,null)}function g_e(p,g){Qd.C(p,g),pH("preconnect",p,g)}function m_e(p,g,S){Qd.L(p,g,S);var T=M1;if(T&&p&&g){var F='link[rel="preload"][as="'+jr(g)+'"]';g==="image"&&S&&S.imageSrcSet?(F+='[imagesrcset="'+jr(S.imageSrcSet)+'"]',typeof S.imageSizes=="string"&&(F+='[imagesizes="'+jr(S.imageSizes)+'"]')):F+='[href="'+jr(p)+'"]';var U=F;switch(g){case"style":U=D1(p);break;case"script":U=P1(p)}Xl.has(U)||(p=f({rel:"preload",href:g==="image"&&S&&S.imageSrcSet?void 0:p,as:g},S),Xl.set(U,p),T.querySelector(F)!==null||g==="style"&&T.querySelector(Pv(U))||g==="script"&&T.querySelector(kv(U))||(g=T.createElement("link"),vo(g,"link",p),_r(g),T.head.appendChild(g)))}}function b_e(p,g){Qd.m(p,g);var S=M1;if(S&&p){var T=g&&typeof g.as=="string"?g.as:"script",F='link[rel="modulepreload"][as="'+jr(T)+'"][href="'+jr(p)+'"]',U=F;switch(T){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":U=P1(p)}if(!Xl.has(U)&&(p=f({rel:"modulepreload",href:p},g),Xl.set(U,p),S.querySelector(F)===null)){switch(T){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(S.querySelector(kv(U)))return}T=S.createElement("link"),vo(T,"link",p),_r(T),S.head.appendChild(T)}}}function __e(p,g,S){Qd.S(p,g,S);var T=M1;if(T&&p){var F=Er(T).hoistableStyles,U=D1(p);g=g||"default";var ee=F.get(U);if(!ee){var ae={loading:0,preload:null};if(ee=T.querySelector(Pv(U)))ae.loading=5;else{p=f({rel:"stylesheet",href:p,"data-precedence":g},S),(S=Xl.get(U))&&eI(p,S);var _e=ee=T.createElement("link");_r(_e),vo(_e,"link",p),_e._p=new Promise(function(ke,Qe){_e.onload=ke,_e.onerror=Qe}),_e.addEventListener("load",function(){ae.loading|=1}),_e.addEventListener("error",function(){ae.loading|=2}),ae.loading|=4,AE(ee,g,T)}ee={type:"stylesheet",instance:ee,count:1,state:ae},F.set(U,ee)}}}function v_e(p,g){Qd.X(p,g);var S=M1;if(S&&p){var T=Er(S).hoistableScripts,F=P1(p),U=T.get(F);U||(U=S.querySelector(kv(F)),U||(p=f({src:p,async:!0},g),(g=Xl.get(F))&&tI(p,g),U=S.createElement("script"),_r(U),vo(U,"link",p),S.head.appendChild(U)),U={type:"script",instance:U,count:1,state:null},T.set(F,U))}}function y_e(p,g){Qd.M(p,g);var S=M1;if(S&&p){var T=Er(S).hoistableScripts,F=P1(p),U=T.get(F);U||(U=S.querySelector(kv(F)),U||(p=f({src:p,async:!0,type:"module"},g),(g=Xl.get(F))&&tI(p,g),U=S.createElement("script"),_r(U),vo(U,"link",p),S.head.appendChild(U)),U={type:"script",instance:U,count:1,state:null},T.set(F,U))}}function hH(p,g,S,T){var F=(F=le.current)?TE(F):null;if(!F)throw Error(r(446));switch(p){case"meta":case"title":return null;case"style":return typeof S.precedence=="string"&&typeof S.href=="string"?(g=D1(S.href),S=Er(F).hoistableStyles,T=S.get(g),T||(T={type:"style",instance:null,count:0,state:null},S.set(g,T)),T):{type:"void",instance:null,count:0,state:null};case"link":if(S.rel==="stylesheet"&&typeof S.href=="string"&&typeof S.precedence=="string"){p=D1(S.href);var U=Er(F).hoistableStyles,ee=U.get(p);if(ee||(F=F.ownerDocument||F,ee={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},U.set(p,ee),(U=F.querySelector(Pv(p)))&&!U._p&&(ee.instance=U,ee.state.loading=5),Xl.has(p)||(S={rel:"preload",as:"style",href:S.href,crossOrigin:S.crossOrigin,integrity:S.integrity,media:S.media,hrefLang:S.hrefLang,referrerPolicy:S.referrerPolicy},Xl.set(p,S),U||S_e(F,p,S,ee.state))),g&&T===null)throw Error(r(528,""));return ee}if(g&&T!==null)throw Error(r(529,""));return null;case"script":return g=S.async,S=S.src,typeof S=="string"&&g&&typeof g!="function"&&typeof g!="symbol"?(g=P1(S),S=Er(F).hoistableScripts,T=S.get(g),T||(T={type:"script",instance:null,count:0,state:null},S.set(g,T)),T):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,p))}}function D1(p){return'href="'+jr(p)+'"'}function Pv(p){return'link[rel="stylesheet"]['+p+"]"}function gH(p){return f({},p,{"data-precedence":p.precedence,precedence:null})}function S_e(p,g,S,T){p.querySelector('link[rel="preload"][as="style"]['+g+"]")?T.loading=1:(g=p.createElement("link"),T.preload=g,g.addEventListener("load",function(){return T.loading|=1}),g.addEventListener("error",function(){return T.loading|=2}),vo(g,"link",S),_r(g),p.head.appendChild(g))}function P1(p){return'[src="'+jr(p)+'"]'}function kv(p){return"script[async]"+p}function mH(p,g,S){if(g.count++,g.instance===null)switch(g.type){case"style":var T=p.querySelector('style[data-href~="'+jr(S.href)+'"]');if(T)return g.instance=T,_r(T),T;var F=f({},S,{"data-href":S.href,"data-precedence":S.precedence,href:null,precedence:null});return T=(p.ownerDocument||p).createElement("style"),_r(T),vo(T,"style",F),AE(T,S.precedence,p),g.instance=T;case"stylesheet":F=D1(S.href);var U=p.querySelector(Pv(F));if(U)return g.state.loading|=4,g.instance=U,_r(U),U;T=gH(S),(F=Xl.get(F))&&eI(T,F),U=(p.ownerDocument||p).createElement("link"),_r(U);var ee=U;return ee._p=new Promise(function(ae,_e){ee.onload=ae,ee.onerror=_e}),vo(U,"link",T),g.state.loading|=4,AE(U,S.precedence,p),g.instance=U;case"script":return U=P1(S.src),(F=p.querySelector(kv(U)))?(g.instance=F,_r(F),F):(T=S,(F=Xl.get(U))&&(T=f({},S),tI(T,F)),p=p.ownerDocument||p,F=p.createElement("script"),_r(F),vo(F,"link",T),p.head.appendChild(F),g.instance=F);case"void":return null;default:throw Error(r(443,g.type))}else g.type==="stylesheet"&&(g.state.loading&4)===0&&(T=g.instance,g.state.loading|=4,AE(T,S.precedence,p));return g.instance}function AE(p,g,S){for(var T=S.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),F=T.length?T[T.length-1]:null,U=F,ee=0;ee title"):null)}function x_e(p,g,S){if(S===1||g.itemProp!=null)return!1;switch(p){case"meta":case"title":return!0;case"style":if(typeof g.precedence!="string"||typeof g.href!="string"||g.href==="")break;return!0;case"link":if(typeof g.rel!="string"||typeof g.href!="string"||g.href===""||g.onLoad||g.onError)break;return g.rel==="stylesheet"?(p=g.disabled,typeof g.precedence=="string"&&p==null):!0;case"script":if(g.async&&typeof g.async!="function"&&typeof g.async!="symbol"&&!g.onLoad&&!g.onError&&g.src&&typeof g.src=="string")return!0}return!1}function vH(p){return!(p.type==="stylesheet"&&(p.state.loading&3)===0)}function E_e(p,g,S,T){if(S.type==="stylesheet"&&(typeof T.media!="string"||matchMedia(T.media).matches!==!1)&&(S.state.loading&4)===0){if(S.instance===null){var F=D1(T.href),U=g.querySelector(Pv(F));if(U){g=U._p,g!==null&&typeof g=="object"&&typeof g.then=="function"&&(p.count++,p=OE.bind(p),g.then(p,p)),S.state.loading|=4,S.instance=U,_r(U);return}U=g.ownerDocument||g,T=gH(T),(F=Xl.get(F))&&eI(T,F),U=U.createElement("link"),_r(U);var ee=U;ee._p=new Promise(function(ae,_e){ee.onload=ae,ee.onerror=_e}),vo(U,"link",T),S.instance=U}p.stylesheets===null&&(p.stylesheets=new Map),p.stylesheets.set(S,g),(g=S.state.preload)&&(S.state.loading&3)===0&&(p.count++,S=OE.bind(p),g.addEventListener("load",S),g.addEventListener("error",S))}}var nI=0;function C_e(p,g){return p.stylesheets&&p.count===0&&NE(p,p.stylesheets),0nI?50:800)+g);return p.unsuspend=S,function(){p.unsuspend=null,clearTimeout(T),clearTimeout(F)}}:null}function OE(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)NE(this,this.stylesheets);else if(this.unsuspend){var p=this.unsuspend;this.unsuspend=null,p()}}}var IE=null;function NE(p,g){p.stylesheets=null,p.unsuspend!==null&&(p.count++,IE=new Map,g.forEach(w_e,p),IE=null,OE.call(p))}function w_e(p,g){if(!(g.state.loading&4)){var S=IE.get(p);if(S)var T=S.get(null);else{S=new Map,IE.set(p,S);for(var F=p.querySelectorAll("link[data-precedence],style[data-precedence]"),U=0;U"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),uI.exports=H_e(),uI.exports}var G_e=$_e();const V_e=qa(G_e);function _ie(t,e){return function(){return t.apply(e,arguments)}}const{toString:Y_e}=Object.prototype,{getPrototypeOf:B8}=Object,{iterator:WT,toStringTag:vie}=Symbol,qT=(t=>e=>{const n=Y_e.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),yu=t=>(t=t.toLowerCase(),e=>qT(e)===t),KT=t=>e=>typeof e===t,{isArray:__}=Array,Hb=KT("undefined");function dS(t){return t!==null&&!Hb(t)&&t.constructor!==null&&!Hb(t.constructor)&&Xs(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const yie=yu("ArrayBuffer");function W_e(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&yie(t.buffer),e}const q_e=KT("string"),Xs=KT("function"),Sie=KT("number"),fS=t=>t!==null&&typeof t=="object",K_e=t=>t===!0||t===!1,Z2=t=>{if(qT(t)!=="object")return!1;const e=B8(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(vie in t)&&!(WT in t)},X_e=t=>{if(!fS(t)||dS(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},Q_e=yu("Date"),Z_e=yu("File"),J_e=yu("Blob"),eve=yu("FileList"),tve=t=>fS(t)&&Xs(t.pipe),nve=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||Xs(t.append)&&((e=qT(t))==="formdata"||e==="object"&&Xs(t.toString)&&t.toString()==="[object FormData]"))},rve=yu("URLSearchParams"),[ive,ave,ove,sve]=["ReadableStream","Request","Response","Headers"].map(yu),lve=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function pS(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,i;if(typeof t!="object"&&(t=[t]),__(t))for(r=0,i=t.length;r0;)if(i=n[r],e===i.toLowerCase())return i;return null}const Fg=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:globalThis,Eie=t=>!Hb(t)&&t!==Fg;function Y6(){const{caseless:t,skipUndefined:e}=Eie(this)&&this||{},n={},r=(i,a)=>{if(a==="__proto__"||a==="constructor"||a==="prototype")return;const o=t&&xie(n,a)||a;Z2(n[o])&&Z2(i)?n[o]=Y6(n[o],i):Z2(i)?n[o]=Y6({},i):__(i)?n[o]=i.slice():(!e||!Hb(i))&&(n[o]=i)};for(let i=0,a=arguments.length;i(pS(e,(i,a)=>{n&&Xs(i)?Object.defineProperty(t,a,{value:_ie(i,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,a,{value:i,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:r}),t),uve=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),dve=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),Object.defineProperty(t.prototype,"constructor",{value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},fve=(t,e,n,r)=>{let i,a,o;const s={};if(e=e||{},t==null)return e;do{for(i=Object.getOwnPropertyNames(t),a=i.length;a-- >0;)o=i[a],(!r||r(o,t,e))&&!s[o]&&(e[o]=t[o],s[o]=!0);t=n!==!1&&B8(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},pve=(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},hve=t=>{if(!t)return null;if(__(t))return t;let e=t.length;if(!Sie(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},gve=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&B8(Uint8Array)),mve=(t,e)=>{const r=(t&&t[WT]).call(t);let i;for(;(i=r.next())&&!i.done;){const a=i.value;e.call(t,a[0],a[1])}},bve=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},_ve=yu("HTMLFormElement"),vve=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,i){return r.toUpperCase()+i}),$H=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),yve=yu("RegExp"),Cie=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};pS(n,(i,a)=>{let o;(o=e(i,a,t))!==!1&&(r[a]=o||i)}),Object.defineProperties(t,r)},Sve=t=>{Cie(t,(e,n)=>{if(Xs(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(Xs(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+"'")})}})},xve=(t,e)=>{const n={},r=i=>{i.forEach(a=>{n[a]=!0})};return __(t)?r(t):r(String(t).split(e)),n},Eve=()=>{},Cve=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function wve(t){return!!(t&&Xs(t.append)&&t[vie]==="FormData"&&t[WT])}const Tve=t=>{const e=new Array(10),n=(r,i)=>{if(fS(r)){if(e.indexOf(r)>=0)return;if(dS(r))return r;if(!("toJSON"in r)){e[i]=r;const a=__(r)?[]:{};return pS(r,(o,s)=>{const l=n(o,i+1);!Hb(l)&&(a[s]=l)}),e[i]=void 0,a}}return r};return n(t,0)},Ave=yu("AsyncFunction"),Rve=t=>t&&(fS(t)||Xs(t))&&Xs(t.then)&&Xs(t.catch),wie=((t,e)=>t?setImmediate:e?((n,r)=>(Fg.addEventListener("message",({source:i,data:a})=>{i===Fg&&a===n&&r.length&&r.shift()()},!1),i=>{r.push(i),Fg.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Xs(Fg.postMessage)),Ove=typeof queueMicrotask<"u"?queueMicrotask.bind(Fg):typeof process<"u"&&process.nextTick||wie,Ive=t=>t!=null&&Xs(t[WT]),$e={isArray:__,isArrayBuffer:yie,isBuffer:dS,isFormData:nve,isArrayBufferView:W_e,isString:q_e,isNumber:Sie,isBoolean:K_e,isObject:fS,isPlainObject:Z2,isEmptyObject:X_e,isReadableStream:ive,isRequest:ave,isResponse:ove,isHeaders:sve,isUndefined:Hb,isDate:Q_e,isFile:Z_e,isBlob:J_e,isRegExp:yve,isFunction:Xs,isStream:tve,isURLSearchParams:rve,isTypedArray:gve,isFileList:eve,forEach:pS,merge:Y6,extend:cve,trim:lve,stripBOM:uve,inherits:dve,toFlatObject:fve,kindOf:qT,kindOfTest:yu,endsWith:pve,toArray:hve,forEachEntry:mve,matchAll:bve,isHTMLForm:_ve,hasOwnProperty:$H,hasOwnProp:$H,reduceDescriptors:Cie,freezeMethods:Sve,toObjectSet:xve,toCamelCase:vve,noop:Eve,toFiniteNumber:Cve,findKey:xie,global:Fg,isContextDefined:Eie,isSpecCompliantForm:wve,toJSONObject:Tve,isAsyncFn:Ave,isThenable:Rve,setImmediate:wie,asap:Ove,isIterable:Ive};let In=class Tie extends Error{static from(e,n,r,i,a,o){const s=new Tie(e.message,n||e.code,r,i,a);return s.cause=e,s.name=e.name,o&&Object.assign(s,o),s}constructor(e,n,r,i,a){super(e),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),r&&(this.config=r),i&&(this.request=i),a&&(this.response=a,this.status=a.status)}toJSON(){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:$e.toJSONObject(this.config),code:this.code,status:this.status}}};In.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";In.ERR_BAD_OPTION="ERR_BAD_OPTION";In.ECONNABORTED="ECONNABORTED";In.ETIMEDOUT="ETIMEDOUT";In.ERR_NETWORK="ERR_NETWORK";In.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";In.ERR_DEPRECATED="ERR_DEPRECATED";In.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";In.ERR_BAD_REQUEST="ERR_BAD_REQUEST";In.ERR_CANCELED="ERR_CANCELED";In.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";In.ERR_INVALID_URL="ERR_INVALID_URL";const Nve=null;function W6(t){return $e.isPlainObject(t)||$e.isArray(t)}function Aie(t){return $e.endsWith(t,"[]")?t.slice(0,-2):t}function GH(t,e,n){return t?t.concat(e).map(function(i,a){return i=Aie(i),!n&&a?"["+i+"]":i}).join(n?".":""):e}function Mve(t){return $e.isArray(t)&&!t.some(W6)}const Dve=$e.toFlatObject($e,{},null,function(e){return/^is[A-Z]/.test(e)});function XT(t,e,n){if(!$e.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=$e.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(_,y){return!$e.isUndefined(y[_])});const r=n.metaTokens,i=n.visitor||c,a=n.dots,o=n.indexes,l=(n.Blob||typeof Blob<"u"&&Blob)&&$e.isSpecCompliantForm(e);if(!$e.isFunction(i))throw new TypeError("visitor must be a function");function u(b){if(b===null)return"";if($e.isDate(b))return b.toISOString();if($e.isBoolean(b))return b.toString();if(!l&&$e.isBlob(b))throw new In("Blob is not supported. Use a Buffer instead.");return $e.isArrayBuffer(b)||$e.isTypedArray(b)?l&&typeof Blob=="function"?new Blob([b]):Buffer.from(b):b}function c(b,_,y){let x=b;if(b&&!y&&typeof b=="object"){if($e.endsWith(_,"{}"))_=r?_:_.slice(0,-2),b=JSON.stringify(b);else if($e.isArray(b)&&Mve(b)||($e.isFileList(b)||$e.endsWith(_,"[]"))&&(x=$e.toArray(b)))return _=Aie(_),x.forEach(function(A,R){!($e.isUndefined(A)||A===null)&&e.append(o===!0?GH([_],R,a):o===null?_:_+"[]",u(A))}),!1}return W6(b)?!0:(e.append(GH(y,_,a),u(b)),!1)}const f=[],h=Object.assign(Dve,{defaultVisitor:c,convertValue:u,isVisitable:W6});function m(b,_){if(!$e.isUndefined(b)){if(f.indexOf(b)!==-1)throw Error("Circular reference detected in "+_.join("."));f.push(b),$e.forEach(b,function(x,C){(!($e.isUndefined(x)||x===null)&&i.call(e,x,$e.isString(C)?C.trim():C,_,h))===!0&&m(x,_?_.concat(C):[C])}),f.pop()}}if(!$e.isObject(t))throw new TypeError("data must be an object");return m(t),e}function VH(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function F8(t,e){this._pairs=[],t&&XT(t,this,e)}const Rie=F8.prototype;Rie.append=function(e,n){this._pairs.push([e,n])};Rie.toString=function(e){const n=e?function(r){return e.call(this,r,VH)}:VH;return this._pairs.map(function(i){return n(i[0])+"="+n(i[1])},"").join("&")};function Pve(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Oie(t,e,n){if(!e)return t;const r=n&&n.encode||Pve,i=$e.isFunction(n)?{serialize:n}:n,a=i&&i.serialize;let o;if(a?o=a(e,i):o=$e.isURLSearchParams(e)?e.toString():new F8(e,i).toString(r),o){const s=t.indexOf("#");s!==-1&&(t=t.slice(0,s)),t+=(t.indexOf("?")===-1?"?":"&")+o}return t}class YH{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){$e.forEach(this.handlers,function(r){r!==null&&e(r)})}}const j8={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},kve=typeof URLSearchParams<"u"?URLSearchParams:F8,Lve=typeof FormData<"u"?FormData:null,Bve=typeof Blob<"u"?Blob:null,Fve={isBrowser:!0,classes:{URLSearchParams:kve,FormData:Lve,Blob:Bve},protocols:["http","https","file","blob","url","data"]},U8=typeof window<"u"&&typeof document<"u",q6=typeof navigator=="object"&&navigator||void 0,jve=U8&&(!q6||["ReactNative","NativeScript","NS"].indexOf(q6.product)<0),Uve=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",zve=U8&&window.location.href||"http://localhost",Hve=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:U8,hasStandardBrowserEnv:jve,hasStandardBrowserWebWorkerEnv:Uve,navigator:q6,origin:zve},Symbol.toStringTag,{value:"Module"})),Wo={...Hve,...Fve};function $ve(t,e){return XT(t,new Wo.classes.URLSearchParams,{visitor:function(n,r,i,a){return Wo.isNode&&$e.isBuffer(n)?(this.append(r,n.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...e})}function Gve(t){return $e.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function Vve(t){const e={},n=Object.keys(t);let r;const i=n.length;let a;for(r=0;r=n.length;return o=!o&&$e.isArray(i)?i.length:o,l?($e.hasOwnProp(i,o)?i[o]=[i[o],r]:i[o]=r,!s):((!i[o]||!$e.isObject(i[o]))&&(i[o]=[]),e(n,r,i[o],a)&&$e.isArray(i[o])&&(i[o]=Vve(i[o])),!s)}if($e.isFormData(t)&&$e.isFunction(t.entries)){const n={};return $e.forEachEntry(t,(r,i)=>{e(Gve(r),i,n,0)}),n}return null}function Yve(t,e,n){if($e.isString(t))try{return(e||JSON.parse)(t),$e.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const hS={transitional:j8,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",i=r.indexOf("application/json")>-1,a=$e.isObject(e);if(a&&$e.isHTMLForm(e)&&(e=new FormData(e)),$e.isFormData(e))return i?JSON.stringify(Iie(e)):e;if($e.isArrayBuffer(e)||$e.isBuffer(e)||$e.isStream(e)||$e.isFile(e)||$e.isBlob(e)||$e.isReadableStream(e))return e;if($e.isArrayBufferView(e))return e.buffer;if($e.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(a){if(r.indexOf("application/x-www-form-urlencoded")>-1)return $ve(e,this.formSerializer).toString();if((s=$e.isFileList(e))||r.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return XT(s?{"files[]":e}:e,l&&new l,this.formSerializer)}}return a||i?(n.setContentType("application/json",!1),Yve(e)):e}],transformResponse:[function(e){const n=this.transitional||hS.transitional,r=n&&n.forcedJSONParsing,i=this.responseType==="json";if($e.isResponse(e)||$e.isReadableStream(e))return e;if(e&&$e.isString(e)&&(r&&!this.responseType||i)){const o=!(n&&n.silentJSONParsing)&&i;try{return JSON.parse(e,this.parseReviver)}catch(s){if(o)throw s.name==="SyntaxError"?In.from(s,In.ERR_BAD_RESPONSE,this,null,this.response):s}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Wo.classes.FormData,Blob:Wo.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};$e.forEach(["delete","get","head","post","put","patch"],t=>{hS.headers[t]={}});const Wve=$e.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"]),qve=t=>{const e={};let n,r,i;return t&&t.split(` +`).forEach(function(o){i=o.indexOf(":"),n=o.substring(0,i).trim().toLowerCase(),r=o.substring(i+1).trim(),!(!n||e[n]&&Wve[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},WH=Symbol("internals");function Hv(t){return t&&String(t).trim().toLowerCase()}function J2(t){return t===!1||t==null?t:$e.isArray(t)?t.map(J2):String(t)}function Kve(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 Xve=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function gI(t,e,n,r,i){if($e.isFunction(r))return r.call(this,e,n);if(i&&(e=n),!!$e.isString(e)){if($e.isString(r))return e.indexOf(r)!==-1;if($e.isRegExp(r))return r.test(e)}}function Qve(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function Zve(t,e){const n=$e.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(i,a,o){return this[r].call(this,e,i,a,o)},configurable:!0})})}let Qs=class{constructor(e){e&&this.set(e)}set(e,n,r){const i=this;function a(s,l,u){const c=Hv(l);if(!c)throw new Error("header name must be a non-empty string");const f=$e.findKey(i,c);(!f||i[f]===void 0||u===!0||u===void 0&&i[f]!==!1)&&(i[f||l]=J2(s))}const o=(s,l)=>$e.forEach(s,(u,c)=>a(u,c,l));if($e.isPlainObject(e)||e instanceof this.constructor)o(e,n);else if($e.isString(e)&&(e=e.trim())&&!Xve(e))o(qve(e),n);else if($e.isObject(e)&&$e.isIterable(e)){let s={},l,u;for(const c of e){if(!$e.isArray(c))throw TypeError("Object iterator must return a key-value pair");s[u=c[0]]=(l=s[u])?$e.isArray(l)?[...l,c[1]]:[l,c[1]]:c[1]}o(s,n)}else e!=null&&a(n,e,r);return this}get(e,n){if(e=Hv(e),e){const r=$e.findKey(this,e);if(r){const i=this[r];if(!n)return i;if(n===!0)return Kve(i);if($e.isFunction(n))return n.call(this,i,r);if($e.isRegExp(n))return n.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Hv(e),e){const r=$e.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||gI(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let i=!1;function a(o){if(o=Hv(o),o){const s=$e.findKey(r,o);s&&(!n||gI(r,r[s],s,n))&&(delete r[s],i=!0)}}return $e.isArray(e)?e.forEach(a):a(e),i}clear(e){const n=Object.keys(this);let r=n.length,i=!1;for(;r--;){const a=n[r];(!e||gI(this,this[a],a,e,!0))&&(delete this[a],i=!0)}return i}normalize(e){const n=this,r={};return $e.forEach(this,(i,a)=>{const o=$e.findKey(r,a);if(o){n[o]=J2(i),delete n[a];return}const s=e?Qve(a):String(a).trim();s!==a&&delete n[a],n[s]=J2(i),r[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return $e.forEach(this,(r,i)=>{r!=null&&r!==!1&&(n[i]=e&&$e.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(` +`)}getSetCookie(){return this.get("set-cookie")||[]}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[WH]=this[WH]={accessors:{}}).accessors,i=this.prototype;function a(o){const s=Hv(o);r[s]||(Zve(i,o),r[s]=!0)}return $e.isArray(e)?e.forEach(a):a(e),this}};Qs.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);$e.reduceDescriptors(Qs.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});$e.freezeMethods(Qs);function mI(t,e){const n=this||hS,r=e||n,i=Qs.from(r.headers);let a=r.data;return $e.forEach(t,function(s){a=s.call(n,a,i.normalize(),e?e.status:void 0)}),i.normalize(),a}function Nie(t){return!!(t&&t.__CANCEL__)}let gS=class extends In{constructor(e,n,r){super(e??"canceled",In.ERR_CANCELED,n,r),this.name="CanceledError",this.__CANCEL__=!0}};function Mie(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new In("Request failed with status code "+n.status,[In.ERR_BAD_REQUEST,In.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Jve(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function e0e(t,e){t=t||10;const n=new Array(t),r=new Array(t);let i=0,a=0,o;return e=e!==void 0?e:1e3,function(l){const u=Date.now(),c=r[a];o||(o=u),n[i]=l,r[i]=u;let f=a,h=0;for(;f!==i;)h+=n[f++],f=f%t;if(i=(i+1)%t,i===a&&(a=(a+1)%t),u-o{n=c,i=null,a&&(clearTimeout(a),a=null),t(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=r?o(u,c):(i=u,a||(a=setTimeout(()=>{a=null,o(i)},r-f)))},()=>i&&o(i)]}const $C=(t,e,n=3)=>{let r=0;const i=e0e(50,250);return t0e(a=>{const o=a.loaded,s=a.lengthComputable?a.total:void 0,l=o-r,u=i(l),c=o<=s;r=o;const f={loaded:o,total:s,progress:s?o/s:void 0,bytes:l,rate:u||void 0,estimated:u&&s&&c?(s-o)/u:void 0,event:a,lengthComputable:s!=null,[e?"download":"upload"]:!0};t(f)},n)},qH=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},KH=t=>(...e)=>$e.asap(()=>t(...e)),n0e=Wo.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,Wo.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(Wo.origin),Wo.navigator&&/(msie|trident)/i.test(Wo.navigator.userAgent)):()=>!0,r0e=Wo.hasStandardBrowserEnv?{write(t,e,n,r,i,a,o){if(typeof document>"u")return;const s=[`${t}=${encodeURIComponent(e)}`];$e.isNumber(n)&&s.push(`expires=${new Date(n).toUTCString()}`),$e.isString(r)&&s.push(`path=${r}`),$e.isString(i)&&s.push(`domain=${i}`),a===!0&&s.push("secure"),$e.isString(o)&&s.push(`SameSite=${o}`),document.cookie=s.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function i0e(t){return typeof t!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function a0e(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function Die(t,e,n){let r=!i0e(e);return t&&(r||n==!1)?a0e(t,e):e}const XH=t=>t instanceof Qs?{...t}:t;function pm(t,e){e=e||{};const n={};function r(u,c,f,h){return $e.isPlainObject(u)&&$e.isPlainObject(c)?$e.merge.call({caseless:h},u,c):$e.isPlainObject(c)?$e.merge({},c):$e.isArray(c)?c.slice():c}function i(u,c,f,h){if($e.isUndefined(c)){if(!$e.isUndefined(u))return r(void 0,u,f,h)}else return r(u,c,f,h)}function a(u,c){if(!$e.isUndefined(c))return r(void 0,c)}function o(u,c){if($e.isUndefined(c)){if(!$e.isUndefined(u))return r(void 0,u)}else return r(void 0,c)}function s(u,c,f){if(f in e)return r(u,c);if(f in t)return r(void 0,u)}const l={url:a,method:a,data:a,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:s,headers:(u,c,f)=>i(XH(u),XH(c),f,!0)};return $e.forEach(Object.keys({...t,...e}),function(c){if(c==="__proto__"||c==="constructor"||c==="prototype")return;const f=$e.hasOwnProp(l,c)?l[c]:i,h=f(t[c],e[c],c);$e.isUndefined(h)&&f!==s||(n[c]=h)}),n}const Pie=t=>{const e=pm({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:a,headers:o,auth:s}=e;if(e.headers=o=Qs.from(o),e.url=Oie(Die(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),s&&o.set("Authorization","Basic "+btoa((s.username||"")+":"+(s.password?unescape(encodeURIComponent(s.password)):""))),$e.isFormData(n)){if(Wo.hasStandardBrowserEnv||Wo.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if($e.isFunction(n.getHeaders)){const l=n.getHeaders(),u=["content-type","content-length"];Object.entries(l).forEach(([c,f])=>{u.includes(c.toLowerCase())&&o.set(c,f)})}}if(Wo.hasStandardBrowserEnv&&(r&&$e.isFunction(r)&&(r=r(e)),r||r!==!1&&n0e(e.url))){const l=i&&a&&r0e.read(a);l&&o.set(i,l)}return e},o0e=typeof XMLHttpRequest<"u",s0e=o0e&&function(t){return new Promise(function(n,r){const i=Pie(t);let a=i.data;const o=Qs.from(i.headers).normalize();let{responseType:s,onUploadProgress:l,onDownloadProgress:u}=i,c,f,h,m,b;function _(){m&&m(),b&&b(),i.cancelToken&&i.cancelToken.unsubscribe(c),i.signal&&i.signal.removeEventListener("abort",c)}let y=new XMLHttpRequest;y.open(i.method.toUpperCase(),i.url,!0),y.timeout=i.timeout;function x(){if(!y)return;const A=Qs.from("getAllResponseHeaders"in y&&y.getAllResponseHeaders()),I={data:!s||s==="text"||s==="json"?y.responseText:y.response,status:y.status,statusText:y.statusText,headers:A,config:t,request:y};Mie(function(N){n(N),_()},function(N){r(N),_()},I),y=null}"onloadend"in y?y.onloadend=x:y.onreadystatechange=function(){!y||y.readyState!==4||y.status===0&&!(y.responseURL&&y.responseURL.indexOf("file:")===0)||setTimeout(x)},y.onabort=function(){y&&(r(new In("Request aborted",In.ECONNABORTED,t,y)),y=null)},y.onerror=function(R){const I=R&&R.message?R.message:"Network Error",O=new In(I,In.ERR_NETWORK,t,y);O.event=R||null,r(O),y=null},y.ontimeout=function(){let R=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const I=i.transitional||j8;i.timeoutErrorMessage&&(R=i.timeoutErrorMessage),r(new In(R,I.clarifyTimeoutError?In.ETIMEDOUT:In.ECONNABORTED,t,y)),y=null},a===void 0&&o.setContentType(null),"setRequestHeader"in y&&$e.forEach(o.toJSON(),function(R,I){y.setRequestHeader(I,R)}),$e.isUndefined(i.withCredentials)||(y.withCredentials=!!i.withCredentials),s&&s!=="json"&&(y.responseType=i.responseType),u&&([h,b]=$C(u,!0),y.addEventListener("progress",h)),l&&y.upload&&([f,m]=$C(l),y.upload.addEventListener("progress",f),y.upload.addEventListener("loadend",m)),(i.cancelToken||i.signal)&&(c=A=>{y&&(r(!A||A.type?new gS(null,t,y):A),y.abort(),y=null)},i.cancelToken&&i.cancelToken.subscribe(c),i.signal&&(i.signal.aborted?c():i.signal.addEventListener("abort",c)));const C=Jve(i.url);if(C&&Wo.protocols.indexOf(C)===-1){r(new In("Unsupported protocol "+C+":",In.ERR_BAD_REQUEST,t));return}y.send(a||null)})},l0e=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,i;const a=function(u){if(!i){i=!0,s();const c=u instanceof Error?u:this.reason;r.abort(c instanceof In?c:new gS(c instanceof Error?c.message:c))}};let o=e&&setTimeout(()=>{o=null,a(new In(`timeout of ${e}ms exceeded`,In.ETIMEDOUT))},e);const s=()=>{t&&(o&&clearTimeout(o),o=null,t.forEach(u=>{u.unsubscribe?u.unsubscribe(a):u.removeEventListener("abort",a)}),t=null)};t.forEach(u=>u.addEventListener("abort",a));const{signal:l}=r;return l.unsubscribe=()=>$e.asap(s),l}},c0e=function*(t,e){let n=t.byteLength;if(n{const i=u0e(t,e);let a=0,o,s=l=>{o||(o=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:u,value:c}=await i.next();if(u){s(),l.close();return}let f=c.byteLength;if(n){let h=a+=f;n(h)}l.enqueue(new Uint8Array(c))}catch(u){throw s(u),u}},cancel(l){return s(l),i.return()}},{highWaterMark:2})},ZH=64*1024,{isFunction:jE}=$e,f0e=(({Request:t,Response:e})=>({Request:t,Response:e}))($e.global),{ReadableStream:JH,TextEncoder:e$}=$e.global,t$=(t,...e)=>{try{return!!t(...e)}catch{return!1}},p0e=t=>{t=$e.merge.call({skipUndefined:!0},f0e,t);const{fetch:e,Request:n,Response:r}=t,i=e?jE(e):typeof fetch=="function",a=jE(n),o=jE(r);if(!i)return!1;const s=i&&jE(JH),l=i&&(typeof e$=="function"?(b=>_=>b.encode(_))(new e$):async b=>new Uint8Array(await new n(b).arrayBuffer())),u=a&&s&&t$(()=>{let b=!1;const _=new n(Wo.origin,{body:new JH,method:"POST",get duplex(){return b=!0,"half"}}).headers.has("Content-Type");return b&&!_}),c=o&&s&&t$(()=>$e.isReadableStream(new r("").body)),f={stream:c&&(b=>b.body)};i&&["text","arrayBuffer","blob","formData","stream"].forEach(b=>{!f[b]&&(f[b]=(_,y)=>{let x=_&&_[b];if(x)return x.call(_);throw new In(`Response type '${b}' is not supported`,In.ERR_NOT_SUPPORT,y)})});const h=async b=>{if(b==null)return 0;if($e.isBlob(b))return b.size;if($e.isSpecCompliantForm(b))return(await new n(Wo.origin,{method:"POST",body:b}).arrayBuffer()).byteLength;if($e.isArrayBufferView(b)||$e.isArrayBuffer(b))return b.byteLength;if($e.isURLSearchParams(b)&&(b=b+""),$e.isString(b))return(await l(b)).byteLength},m=async(b,_)=>{const y=$e.toFiniteNumber(b.getContentLength());return y??h(_)};return async b=>{let{url:_,method:y,data:x,signal:C,cancelToken:A,timeout:R,onDownloadProgress:I,onUploadProgress:O,responseType:N,headers:k,withCredentials:D="same-origin",fetchOptions:P}=Pie(b),j=e||fetch;N=N?(N+"").toLowerCase():"text";let M=l0e([C,A&&A.toAbortSignal()],R),z=null;const G=M&&M.unsubscribe&&(()=>{M.unsubscribe()});let Y;try{if(O&&u&&y!=="get"&&y!=="head"&&(Y=await m(k,x))!==0){let $=new n(_,{method:"POST",body:x,duplex:"half"}),K;if($e.isFormData(x)&&(K=$.headers.get("content-type"))&&k.setContentType(K),$.body){const[te,ie]=qH(Y,$C(KH(O)));x=QH($.body,ZH,te,ie)}}$e.isString(D)||(D=D?"include":"omit");const H=a&&"credentials"in n.prototype,W={...P,signal:M,method:y.toUpperCase(),headers:k.normalize().toJSON(),body:x,duplex:"half",credentials:H?D:void 0};z=a&&new n(_,W);let q=await(a?j(z,P):j(_,W));const Q=c&&(N==="stream"||N==="response");if(c&&(I||Q&&G)){const $={};["status","statusText","headers"].forEach(se=>{$[se]=q[se]});const K=$e.toFiniteNumber(q.headers.get("content-length")),[te,ie]=I&&qH(K,$C(KH(I),!0))||[];q=new r(QH(q.body,ZH,te,()=>{ie&&ie(),G&&G()}),$)}N=N||"text";let X=await f[$e.findKey(f,N)||"text"](q,b);return!Q&&G&&G(),await new Promise(($,K)=>{Mie($,K,{data:X,headers:Qs.from(q.headers),status:q.status,statusText:q.statusText,config:b,request:z})})}catch(H){throw G&&G(),H&&H.name==="TypeError"&&/Load failed|fetch/i.test(H.message)?Object.assign(new In("Network Error",In.ERR_NETWORK,b,z,H&&H.response),{cause:H.cause||H}):In.from(H,H&&H.code,b,z,H&&H.response)}}},h0e=new Map,kie=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:i}=e,a=[r,i,n];let o=a.length,s=o,l,u,c=h0e;for(;s--;)l=a[s],u=c.get(l),u===void 0&&c.set(l,u=s?new Map:p0e(e)),c=u;return u};kie();const z8={http:Nve,xhr:s0e,fetch:{get:kie}};$e.forEach(z8,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const n$=t=>`- ${t}`,g0e=t=>$e.isFunction(t)||t===null||t===!1;function m0e(t,e){t=$e.isArray(t)?t:[t];const{length:n}=t;let r,i;const a={};for(let o=0;o`adapter ${l} `+(u===!1?"is not supported by the environment":"is not available in the build"));let s=n?o.length>1?`since : +`+o.map(n$).join(` +`):" "+n$(o[0]):"as no adapter specified";throw new In("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return i}const Lie={getAdapter:m0e,adapters:z8};function bI(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new gS(null,t)}function r$(t){return bI(t),t.headers=Qs.from(t.headers),t.data=mI.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),Lie.getAdapter(t.adapter||hS.adapter,t)(t).then(function(r){return bI(t),r.data=mI.call(t,t.transformResponse,r),r.headers=Qs.from(r.headers),r},function(r){return Nie(r)||(bI(t),r&&r.response&&(r.response.data=mI.call(t,t.transformResponse,r.response),r.response.headers=Qs.from(r.response.headers))),Promise.reject(r)})}const Bie="1.13.5",QT={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{QT[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const i$={};QT.transitional=function(e,n,r){function i(a,o){return"[Axios v"+Bie+"] Transitional option '"+a+"'"+o+(r?". "+r:"")}return(a,o,s)=>{if(e===!1)throw new In(i(o," has been removed"+(n?" in "+n:"")),In.ERR_DEPRECATED);return n&&!i$[o]&&(i$[o]=!0,console.warn(i(o," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(a,o,s):!0}};QT.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function b0e(t,e,n){if(typeof t!="object")throw new In("options must be an object",In.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let i=r.length;for(;i-- >0;){const a=r[i],o=e[a];if(o){const s=t[a],l=s===void 0||o(s,a,t);if(l!==!0)throw new In("option "+a+" must be "+l,In.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new In("Unknown option "+a,In.ERR_BAD_OPTION)}}const eC={assertOptions:b0e,validators:QT},Ql=eC.validators;let Qg=class{constructor(e){this.defaults=e||{},this.interceptors={request:new YH,response:new YH}}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 a=i.stack?i.stack.replace(/^.+\n/,""):"";try{r.stack?a&&!String(r.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(r.stack+=` +`+a):r.stack=a}catch{}}throw r}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=pm(this.defaults,n);const{transitional:r,paramsSerializer:i,headers:a}=n;r!==void 0&&eC.assertOptions(r,{silentJSONParsing:Ql.transitional(Ql.boolean),forcedJSONParsing:Ql.transitional(Ql.boolean),clarifyTimeoutError:Ql.transitional(Ql.boolean),legacyInterceptorReqResOrdering:Ql.transitional(Ql.boolean)},!1),i!=null&&($e.isFunction(i)?n.paramsSerializer={serialize:i}:eC.assertOptions(i,{encode:Ql.function,serialize:Ql.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),eC.assertOptions(n,{baseUrl:Ql.spelling("baseURL"),withXsrfToken:Ql.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=a&&$e.merge(a.common,a[n.method]);a&&$e.forEach(["delete","get","head","post","put","patch","common"],b=>{delete a[b]}),n.headers=Qs.concat(o,a);const s=[];let l=!0;this.interceptors.request.forEach(function(_){if(typeof _.runWhen=="function"&&_.runWhen(n)===!1)return;l=l&&_.synchronous;const y=n.transitional||j8;y&&y.legacyInterceptorReqResOrdering?s.unshift(_.fulfilled,_.rejected):s.push(_.fulfilled,_.rejected)});const u=[];this.interceptors.response.forEach(function(_){u.push(_.fulfilled,_.rejected)});let c,f=0,h;if(!l){const b=[r$.bind(this),void 0];for(b.unshift(...s),b.push(...u),h=b.length,c=Promise.resolve(n);f{if(!r._listeners)return;let a=r._listeners.length;for(;a-- >0;)r._listeners[a](i);r._listeners=null}),this.promise.then=i=>{let a;const o=new Promise(s=>{r.subscribe(s),a=s}).then(i);return o.cancel=function(){r.unsubscribe(a)},o},e(function(a,o,s){r.reason||(r.reason=new gS(a,o,s),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 Fie(function(i){e=i}),cancel:e}}};function v0e(t){return function(n){return t.apply(null,n)}}function y0e(t){return $e.isObject(t)&&t.isAxiosError===!0}const K6={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(K6).forEach(([t,e])=>{K6[e]=t});function jie(t){const e=new Qg(t),n=_ie(Qg.prototype.request,e);return $e.extend(n,Qg.prototype,e,{allOwnKeys:!0}),$e.extend(n,e,null,{allOwnKeys:!0}),n.create=function(i){return jie(pm(t,i))},n}const Ln=jie(hS);Ln.Axios=Qg;Ln.CanceledError=gS;Ln.CancelToken=_0e;Ln.isCancel=Nie;Ln.VERSION=Bie;Ln.toFormData=XT;Ln.AxiosError=In;Ln.Cancel=Ln.CanceledError;Ln.all=function(e){return Promise.all(e)};Ln.spread=v0e;Ln.isAxiosError=y0e;Ln.mergeConfig=pm;Ln.AxiosHeaders=Qs;Ln.formToJSON=t=>Iie($e.isHTMLForm(t)?new FormData(t):t);Ln.getAdapter=Lie.getAdapter;Ln.HttpStatusCode=K6;Ln.default=Ln;const{Axios:xIt,AxiosError:EIt,CanceledError:CIt,isCancel:wIt,CancelToken:TIt,VERSION:AIt,all:RIt,Cancel:OIt,isAxiosError:IIt,spread:NIt,toFormData:MIt,AxiosHeaders:DIt,HttpStatusCode:PIt,formToJSON:kIt,getAdapter:LIt,mergeConfig:BIt}=Ln;function Rf(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 sd="$$material";function Z(){return Z=Object.assign?Object.assign.bind():function(t){for(var e=1;e0?wo(v_,--el):0,$b--,Ia===10&&($b=1,JT--),Ia}function Il(){return Ia=el2||gy(Ia)>3?"":" "}function D0e(t,e){for(;--e&&Il()&&!(Ia<48||Ia>102||Ia>57&&Ia<65||Ia>70&&Ia<97););return mS(t,tC()+(e<6&&ld()==32&&Il()==32))}function Q6(t){for(;Il();)switch(Ia){case t:return el;case 34:case 39:t!==34&&t!==39&&Q6(Ia);break;case 40:t===41&&Q6(t);break;case 92:Il();break}return el}function P0e(t,e){for(;Il()&&t+Ia!==57;)if(t+Ia===84&&ld()===47)break;return"/*"+mS(e,el-1)+"*"+ZT(t===47?t:Il())}function k0e(t){for(;!gy(ld());)Il();return mS(t,el)}function L0e(t){return Yie(rC("",null,null,null,[""],t=Vie(t),0,[0],t))}function rC(t,e,n,r,i,a,o,s,l){for(var u=0,c=0,f=o,h=0,m=0,b=0,_=1,y=1,x=1,C=0,A="",R=i,I=a,O=r,N=A;y;)switch(b=C,C=Il()){case 40:if(b!=108&&wo(N,f-1)==58){X6(N+=$r(nC(C),"&","&\f"),"&\f")!=-1&&(x=-1);break}case 34:case 39:case 91:N+=nC(C);break;case 9:case 10:case 13:case 32:N+=M0e(b);break;case 92:N+=D0e(tC()-1,7);continue;case 47:switch(ld()){case 42:case 47:UE(B0e(P0e(Il(),tC()),e,n),l);break;default:N+="/"}break;case 123*_:s[u++]=Yu(N)*x;case 125*_:case 59:case 0:switch(C){case 0:case 125:y=0;case 59+c:x==-1&&(N=$r(N,/\f/g,"")),m>0&&Yu(N)-f&&UE(m>32?o$(N+";",r,n,f-1):o$($r(N," ","")+";",r,n,f-2),l);break;case 59:N+=";";default:if(UE(O=a$(N,e,n,u,c,i,s,A,R=[],I=[],f),a),C===123)if(c===0)rC(N,e,O,O,R,a,f,s,I);else switch(h===99&&wo(N,3)===110?100:h){case 100:case 108:case 109:case 115:rC(t,O,O,r&&UE(a$(t,O,O,0,0,i,s,A,i,R=[],f),I),i,I,f,s,r?R:I);break;default:rC(N,O,O,O,[""],I,0,s,I)}}u=c=m=0,_=x=1,A=N="",f=o;break;case 58:f=1+Yu(N),m=b;default:if(_<1){if(C==123)--_;else if(C==125&&_++==0&&N0e()==125)continue}switch(N+=ZT(C),C*_){case 38:x=c>0?1:(N+="\f",-1);break;case 44:s[u++]=(Yu(N)-1)*x,x=1;break;case 64:ld()===45&&(N+=nC(Il())),h=ld(),c=f=Yu(A=N+=k0e(tC())),C++;break;case 45:b===45&&Yu(N)==2&&(_=0)}}return a}function a$(t,e,n,r,i,a,o,s,l,u,c){for(var f=i-1,h=i===0?a:[""],m=G8(h),b=0,_=0,y=0;b0?h[x]+" "+C:$r(C,/&\f/g,h[x])))&&(l[y++]=A);return eA(t,e,n,i===0?H8:s,l,u,c)}function B0e(t,e,n){return eA(t,e,n,zie,ZT(I0e()),hy(t,2,-2),0)}function o$(t,e,n,r){return eA(t,e,n,$8,hy(t,0,r),hy(t,r+1,-1),r)}function Rb(t,e){for(var n="",r=G8(t),i=0;i6)switch(wo(t,e+1)){case 109:if(wo(t,e+4)!==45)break;case 102:return $r(t,/(.+:)(.+)-([^]+)/,"$1"+Hr+"$2-$3$1"+VC+(wo(t,e+3)==108?"$3":"$2-$3"))+t;case 115:return~X6(t,"stretch")?qie($r(t,"stretch","fill-available"),e)+t:t}break;case 4949:if(wo(t,e+1)!==115)break;case 6444:switch(wo(t,Yu(t)-3-(~X6(t,"!important")&&10))){case 107:return $r(t,":",":"+Hr)+t;case 101:return $r(t,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Hr+(wo(t,14)===45?"inline-":"")+"box$3$1"+Hr+"$2$3$1"+zo+"$2box$3")+t}break;case 5936:switch(wo(t,e+11)){case 114:return Hr+t+zo+$r(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return Hr+t+zo+$r(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return Hr+t+zo+$r(t,/[svh]\w+-[tblr]{2}/,"lr")+t}return Hr+t+zo+t+t}return t}var Y0e=function(e,n,r,i){if(e.length>-1&&!e.return)switch(e.type){case $8:e.return=qie(e.value,e.length);break;case Hie:return Rb([$v(e,{value:$r(e.value,"@","@"+Hr)})],i);case H8:if(e.length)return O0e(e.props,function(a){switch(R0e(a,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Rb([$v(e,{props:[$r(a,/:(read-\w+)/,":"+VC+"$1")]})],i);case"::placeholder":return Rb([$v(e,{props:[$r(a,/:(plac\w+)/,":"+Hr+"input-$1")]}),$v(e,{props:[$r(a,/:(plac\w+)/,":"+VC+"$1")]}),$v(e,{props:[$r(a,/:(plac\w+)/,zo+"input-$1")]})],i)}return""})}},W0e=[Y0e],Kie=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(_){var y=_.getAttribute("data-emotion");y.indexOf(" ")!==-1&&(document.head.appendChild(_),_.setAttribute("data-s",""))})}var i=e.stylisPlugins||W0e,a={},o,s=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(_){for(var y=_.getAttribute("data-emotion").split(" "),x=1;x=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 tye={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},nye=/[A-Z]|^ms/g,rye=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Xie=function(e){return e.charCodeAt(1)===45},d$=function(e){return e!=null&&typeof e!="boolean"},yI=Wie(function(t){return Xie(t)?t:t.replace(nye,"-$&").toLowerCase()}),f$=function(e,n){switch(e){case"animation":case"animationName":if(typeof n=="string")return n.replace(rye,function(r,i,a){return Wu={name:i,styles:a,next:Wu},i})}return tye[e]!==1&&!Xie(e)&&typeof n=="number"&&n!==0?n+"px":n};function my(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 Wu={name:i.name,styles:i.styles,next:Wu},i.name;var a=n;if(a.styles!==void 0){var o=a.next;if(o!==void 0)for(;o!==void 0;)Wu={name:o.name,styles:o.styles,next:Wu},o=o.next;var s=a.styles+";";return s}return iye(t,e,n)}case"function":{if(t!==void 0){var l=Wu,u=n(t);return Wu=l,my(t,e,u)}break}}var c=n;if(e==null)return c;var f=e[c];return f!==void 0?f:c}function iye(t,e,n){var r="";if(Array.isArray(n))for(var i=0;i96?gye:mye},b$=function(e,n,r){var i;if(n){var a=n.shouldForwardProp;i=e.__emotion_forwardProp&&a?function(o){return e.__emotion_forwardProp(o)&&a(o)}:a}return typeof i!="function"&&r&&(i=e.__emotion_forwardProp),i},bye=function(e){var n=e.cache,r=e.serialized,i=e.isStringTag;return Y8(n,r,i),Zie(function(){return tA(n,r,i)}),null},_ye=function t(e,n){var r=e.__emotion_real===e,i=r&&e.__emotion_base||e,a,o;n!==void 0&&(a=n.label,o=n.target);var s=b$(e,n,r),l=s||m$(i),u=!l("as");return function(){var c=arguments,f=r&&e.__emotion_styles!==void 0?e.__emotion_styles.slice(0):[];if(a!==void 0&&f.push("label:"+a+";"),c[0]==null||c[0].raw===void 0)f.push.apply(f,c);else{var h=c[0];f.push(h[0]);for(var m=c.length,b=1;b{const n=Kie(t);return n.sheet=new e({key:n.key,nonce:n.sheet.nonce,container:n.sheet.container,speedy:n.sheet.isSpeedy,prepend:n.sheet.prepend,insertionPoint:n.sheet.insertionPoint}),n};let Np;if(typeof document=="object"&&(Np=document.querySelector('[name="emotion-insertion-point"]'),!Np)){Np=document.createElement("meta"),Np.setAttribute("name","emotion-insertion-point"),Np.setAttribute("content","");const t=document.querySelector("head");t&&t.prepend(Np)}function wye(t,e){if(t||e){class n extends Uie{insert(a,o){return this.key&&this.key.endsWith("global")&&(this.before=Np),super.insert(a,o)}}const r=Cye({key:"css",insertionPoint:t?Np:void 0},n);if(e){const i=r.insert;r.insert=(...a)=>(a[1].styles.match(/^@layer\s+[^{]*$/)||(a[1].styles=`@layer mui {${a[1].styles}}`),i(...a))}return r}}function Tye(t){const{injectFirst:e,enableCssLayer:n,children:r}=t,i=E.useMemo(()=>{const a=`${e}-${n}`;if(typeof document=="object"&&CI.has(a))return CI.get(a);const o=wye(e,n);return CI.set(a,o),o},[e,n]);return i?d.jsx(oye,{value:i,children:r}):r}function Aye(t){return t==null||Object.keys(t).length===0}function Jie(t){const{styles:e,defaultTheme:n={}}=t,r=typeof e=="function"?i=>e(Aye(i)?n:i):e;return d.jsx(fye,{styles:r})}function eae(t,e){return J6(t,e)}function Rye(t,e){Array.isArray(t.__emotion_styles)&&(t.__emotion_styles=e(t.__emotion_styles))}const S$=[];function eh(t){return S$[0]=t,y_(S$)}var wI={exports:{}},si={};var x$;function Oye(){if(x$)return si;x$=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),u=Symbol.for("react.suspense_list"),c=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),h=Symbol.for("react.view_transition"),m=Symbol.for("react.client.reference");function b(_){if(typeof _=="object"&&_!==null){var y=_.$$typeof;switch(y){case t:switch(_=_.type,_){case n:case i:case r:case l:case u:case h:return _;default:switch(_=_&&_.$$typeof,_){case o:case s:case f:case c:return _;case a:return _;default:return y}}case e:return y}}}return si.ContextConsumer=a,si.ContextProvider=o,si.Element=t,si.ForwardRef=s,si.Fragment=n,si.Lazy=f,si.Memo=c,si.Portal=e,si.Profiler=i,si.StrictMode=r,si.Suspense=l,si.SuspenseList=u,si.isContextConsumer=function(_){return b(_)===a},si.isContextProvider=function(_){return b(_)===o},si.isElement=function(_){return typeof _=="object"&&_!==null&&_.$$typeof===t},si.isForwardRef=function(_){return b(_)===s},si.isFragment=function(_){return b(_)===n},si.isLazy=function(_){return b(_)===f},si.isMemo=function(_){return b(_)===c},si.isPortal=function(_){return b(_)===e},si.isProfiler=function(_){return b(_)===i},si.isStrictMode=function(_){return b(_)===r},si.isSuspense=function(_){return b(_)===l},si.isSuspenseList=function(_){return b(_)===u},si.isValidElementType=function(_){return typeof _=="string"||typeof _=="function"||_===n||_===i||_===r||_===l||_===u||typeof _=="object"&&_!==null&&(_.$$typeof===f||_.$$typeof===c||_.$$typeof===o||_.$$typeof===a||_.$$typeof===s||_.$$typeof===m||_.getModuleId!==void 0)},si.typeOf=b,si}var E$;function Iye(){return E$||(E$=1,wI.exports=Oye()),wI.exports}var X8=Iye();function nd(t){if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)}function tae(t){if(E.isValidElement(t)||X8.isValidElementType(t)||!nd(t))return t;const e={};return Object.keys(t).forEach(n=>{e[n]=tae(t[n])}),e}function uo(t,e,n={clone:!0}){const r=n.clone?{...t}:t;return nd(t)&&nd(e)&&Object.keys(e).forEach(i=>{E.isValidElement(e[i])||X8.isValidElementType(e[i])?r[i]=e[i]:nd(e[i])&&Object.prototype.hasOwnProperty.call(t,i)&&nd(t[i])?r[i]=uo(t[i],e[i],n):n.clone?r[i]=nd(e[i])?tae(e[i]):e[i]:r[i]=e[i]}),r}const Nye=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 Mye(t){const{values:e={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5,...i}=t,a=Nye(e),o=Object.keys(a);function s(h){return`@media (min-width:${typeof e[h]=="number"?e[h]:h}${n})`}function l(h){return`@media (max-width:${(typeof e[h]=="number"?e[h]:h)-r/100}${n})`}function u(h,m){const b=o.indexOf(m);return`@media (min-width:${typeof e[h]=="number"?e[h]:h}${n}) and (max-width:${(b!==-1&&typeof e[o[b]]=="number"?e[o[b]]:m)-r/100}${n})`}function c(h){return o.indexOf(h)+1r.startsWith("@container")).sort((r,i)=>{const a=/min-width:\s*([0-9.]+)/;return+(r.match(a)?.[1]||0)-+(i.match(a)?.[1]||0)});return n.length?n.reduce((r,i)=>{const a=e[i];return delete r[i],r[i]=a,r},{...e}):e}function Dye(t,e){return e==="@"||e.startsWith("@")&&(t.some(n=>e.startsWith(`@${n}`))||!!e.match(/^@\d/))}function Pye(t,e){const n=e.match(/^@([^/]+)?\/?(.+)?$/);if(!n)return null;const[,r,i]=n,a=Number.isNaN(+r)?r||0:+r;return t.containerQueries(i).up(a)}function kye(t){const e=(a,o)=>a.replace("@media",o?`@container ${o}`:"@container");function n(a,o){a.up=(...s)=>e(t.breakpoints.up(...s),o),a.down=(...s)=>e(t.breakpoints.down(...s),o),a.between=(...s)=>e(t.breakpoints.between(...s),o),a.only=(...s)=>e(t.breakpoints.only(...s),o),a.not=(...s)=>{const l=e(t.breakpoints.not(...s),o);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=a=>(n(r,a),r);return n(i),{...t,containerQueries:i}}const Lye={borderRadius:4};function G0(t,e){return e?uo(t,e,{clone:!1}):t}const nA={xs:0,sm:600,md:900,lg:1200,xl:1536},w$={keys:["xs","sm","md","lg","xl"],up:t=>`@media (min-width:${nA[t]}px)`},Bye={containerQueries:t=>({up:e=>{let n=typeof e=="number"?e:nA[e]||e;return typeof n=="number"&&(n=`${n}px`),t?`@container ${t} (min-width:${n})`:`@container (min-width:${n})`}})};function pu(t,e,n){const r=t.theme||{};if(Array.isArray(e)){const a=r.breakpoints||w$;return e.reduce((o,s,l)=>(o[a.up(a.keys[l])]=n(e[l]),o),{})}if(typeof e=="object"){const a=r.breakpoints||w$;return Object.keys(e).reduce((o,s)=>{if(Dye(a.keys,s)){const l=Pye(r.containerQueries?r:Bye,s);l&&(o[l]=n(e[s],s))}else if(Object.keys(a.values||nA).includes(s)){const l=a.up(s);o[l]=n(e[s],s)}else{const l=s;o[l]=e[l]}return o},{})}return n(e)}function nae(t={}){return t.keys?.reduce((n,r)=>{const i=t.up(r);return n[i]={},n},{})||{}}function ek(t,e){return t.reduce((n,r)=>{const i=n[r];return(!i||Object.keys(i).length===0)&&delete n[r],n},e)}function Fye(t,...e){const n=nae(t),r=[n,...e].reduce((i,a)=>uo(i,a),{});return ek(Object.keys(n),r)}function jye(t,e){if(typeof t!="object")return{};const n={},r=Object.keys(e);return Array.isArray(t)?r.forEach((i,a)=>{a{t[i]!=null&&(n[i]=!0)}),n}function TI({values:t,breakpoints:e,base:n}){const r=n||jye(t,e),i=Object.keys(r);if(i.length===0)return t;let a;return i.reduce((o,s,l)=>(Array.isArray(t)?(o[s]=t[l]!=null?t[l]:t[a],a=l):typeof t=="object"?(o[s]=t[s]!=null?t[s]:t[a],a=s):o[s]=t,o),{})}function Te(t){if(typeof t!="string")throw new Error(Rf(7));return t.charAt(0).toUpperCase()+t.slice(1)}function qu(t,e,n=!0){if(!e||typeof e!="string")return null;if(t&&t.vars&&n){const r=`vars.${e}`.split(".").reduce((i,a)=>i&&i[a]?i[a]:null,t);if(r!=null)return r}return e.split(".").reduce((r,i)=>r&&r[i]!=null?r[i]:null,t)}function YC(t,e,n,r=n){let i;return typeof t=="function"?i=t(n):Array.isArray(t)?i=t[n]||r:i=qu(t,n)||r,e&&(i=e(i,r,t)),i}function Ea(t){const{prop:e,cssProperty:n=t.prop,themeKey:r,transform:i}=t,a=o=>{if(o[e]==null)return null;const s=o[e],l=o.theme,u=qu(l,r)||{};return pu(o,s,f=>{let h=YC(u,i,f);return f===h&&typeof f=="string"&&(h=YC(u,i,`${e}${f==="default"?"":Te(f)}`,f)),n===!1?h:{[n]:h}})};return a.propTypes={},a.filterProps=[e],a}function Uye(t){const e={};return n=>(e[n]===void 0&&(e[n]=t(n)),e[n])}const zye={m:"margin",p:"padding"},Hye={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},T$={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},$ye=Uye(t=>{if(t.length>2)if(T$[t])t=T$[t];else return[t];const[e,n]=t.split(""),r=zye[e],i=Hye[n]||"";return Array.isArray(i)?i.map(a=>r+a):[r+i]}),Q8=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],Z8=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...Q8,...Z8];function _S(t,e,n,r){const i=qu(t,e,!0)??n;return typeof i=="number"||typeof i=="string"?a=>typeof a=="string"?a:typeof i=="string"?i.startsWith("var(")&&a===0?0:i.startsWith("var(")&&a===1?i:`calc(${a} * ${i})`:i*a:Array.isArray(i)?a=>{if(typeof a=="string")return a;const o=Math.abs(a),s=i[o];return a>=0?s:typeof s=="number"?-s:typeof s=="string"&&s.startsWith("var(")?`calc(-1 * ${s})`:`-${s}`}:typeof i=="function"?i:()=>{}}function rA(t){return _S(t,"spacing",8)}function hm(t,e){return typeof e=="string"||e==null?e:t(e)}function Gye(t,e){return n=>t.reduce((r,i)=>(r[i]=hm(e,n),r),{})}function Vye(t,e,n,r){if(!e.includes(n))return null;const i=$ye(n),a=Gye(i,r),o=t[n];return pu(t,o,a)}function rae(t,e){const n=rA(t.theme);return Object.keys(t).map(r=>Vye(t,e,r,n)).reduce(G0,{})}function ia(t){return rae(t,Q8)}ia.propTypes={};ia.filterProps=Q8;function aa(t){return rae(t,Z8)}aa.propTypes={};aa.filterProps=Z8;function iae(t=8,e=rA({spacing:t})){if(t.mui)return t;const n=(...r)=>(r.length===0?[1]:r).map(a=>{const o=e(a);return typeof o=="number"?`${o}px`:o}).join(" ");return n.mui=!0,n}function iA(...t){const e=t.reduce((r,i)=>(i.filterProps.forEach(a=>{r[a]=i}),r),{}),n=r=>Object.keys(r).reduce((i,a)=>e[a]?G0(i,e[a](r)):i,{});return n.propTypes={},n.filterProps=t.reduce((r,i)=>r.concat(i.filterProps),[]),n}function uc(t){return typeof t!="number"?t:`${t}px solid`}function Ac(t,e){return Ea({prop:t,themeKey:"borders",transform:e})}const Yye=Ac("border",uc),Wye=Ac("borderTop",uc),qye=Ac("borderRight",uc),Kye=Ac("borderBottom",uc),Xye=Ac("borderLeft",uc),Qye=Ac("borderColor"),Zye=Ac("borderTopColor"),Jye=Ac("borderRightColor"),eSe=Ac("borderBottomColor"),tSe=Ac("borderLeftColor"),nSe=Ac("outline",uc),rSe=Ac("outlineColor"),aA=t=>{if(t.borderRadius!==void 0&&t.borderRadius!==null){const e=_S(t.theme,"shape.borderRadius",4),n=r=>({borderRadius:hm(e,r)});return pu(t,t.borderRadius,n)}return null};aA.propTypes={};aA.filterProps=["borderRadius"];iA(Yye,Wye,qye,Kye,Xye,Qye,Zye,Jye,eSe,tSe,aA,nSe,rSe);const oA=t=>{if(t.gap!==void 0&&t.gap!==null){const e=_S(t.theme,"spacing",8),n=r=>({gap:hm(e,r)});return pu(t,t.gap,n)}return null};oA.propTypes={};oA.filterProps=["gap"];const sA=t=>{if(t.columnGap!==void 0&&t.columnGap!==null){const e=_S(t.theme,"spacing",8),n=r=>({columnGap:hm(e,r)});return pu(t,t.columnGap,n)}return null};sA.propTypes={};sA.filterProps=["columnGap"];const lA=t=>{if(t.rowGap!==void 0&&t.rowGap!==null){const e=_S(t.theme,"spacing",8),n=r=>({rowGap:hm(e,r)});return pu(t,t.rowGap,n)}return null};lA.propTypes={};lA.filterProps=["rowGap"];const iSe=Ea({prop:"gridColumn"}),aSe=Ea({prop:"gridRow"}),oSe=Ea({prop:"gridAutoFlow"}),sSe=Ea({prop:"gridAutoColumns"}),lSe=Ea({prop:"gridAutoRows"}),cSe=Ea({prop:"gridTemplateColumns"}),uSe=Ea({prop:"gridTemplateRows"}),dSe=Ea({prop:"gridTemplateAreas"}),fSe=Ea({prop:"gridArea"});iA(oA,sA,lA,iSe,aSe,oSe,sSe,lSe,cSe,uSe,dSe,fSe);function Ob(t,e){return e==="grey"?e:t}const pSe=Ea({prop:"color",themeKey:"palette",transform:Ob}),hSe=Ea({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:Ob}),gSe=Ea({prop:"backgroundColor",themeKey:"palette",transform:Ob});iA(pSe,hSe,gSe);function El(t){return t<=1&&t!==0?`${t*100}%`:t}const mSe=Ea({prop:"width",transform:El}),J8=t=>{if(t.maxWidth!==void 0&&t.maxWidth!==null){const e=n=>{const r=t.theme?.breakpoints?.values?.[n]||nA[n];return r?t.theme?.breakpoints?.unit!=="px"?{maxWidth:`${r}${t.theme.breakpoints.unit}`}:{maxWidth:r}:{maxWidth:El(n)}};return pu(t,t.maxWidth,e)}return null};J8.filterProps=["maxWidth"];const bSe=Ea({prop:"minWidth",transform:El}),_Se=Ea({prop:"height",transform:El}),vSe=Ea({prop:"maxHeight",transform:El}),ySe=Ea({prop:"minHeight",transform:El});Ea({prop:"size",cssProperty:"width",transform:El});Ea({prop:"size",cssProperty:"height",transform:El});const SSe=Ea({prop:"boxSizing"});iA(mSe,J8,bSe,_Se,vSe,ySe,SSe);const vS={border:{themeKey:"borders",transform:uc},borderTop:{themeKey:"borders",transform:uc},borderRight:{themeKey:"borders",transform:uc},borderBottom:{themeKey:"borders",transform:uc},borderLeft:{themeKey:"borders",transform:uc},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:uc},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:aA},color:{themeKey:"palette",transform:Ob},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:Ob},backgroundColor:{themeKey:"palette",transform:Ob},p:{style:aa},pt:{style:aa},pr:{style:aa},pb:{style:aa},pl:{style:aa},px:{style:aa},py:{style:aa},padding:{style:aa},paddingTop:{style:aa},paddingRight:{style:aa},paddingBottom:{style:aa},paddingLeft:{style:aa},paddingX:{style:aa},paddingY:{style:aa},paddingInline:{style:aa},paddingInlineStart:{style:aa},paddingInlineEnd:{style:aa},paddingBlock:{style:aa},paddingBlockStart:{style:aa},paddingBlockEnd:{style:aa},m:{style:ia},mt:{style:ia},mr:{style:ia},mb:{style:ia},ml:{style:ia},mx:{style:ia},my:{style:ia},margin:{style:ia},marginTop:{style:ia},marginRight:{style:ia},marginBottom:{style:ia},marginLeft:{style:ia},marginX:{style:ia},marginY:{style:ia},marginInline:{style:ia},marginInlineStart:{style:ia},marginInlineEnd:{style:ia},marginBlock:{style:ia},marginBlockStart:{style:ia},marginBlockEnd:{style:ia},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:oA},rowGap:{style:lA},columnGap:{style:sA},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:El},maxWidth:{style:J8},minWidth:{transform:El},height:{transform:El},maxHeight:{transform:El},minHeight:{transform:El},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 xSe(...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 ESe(t,e){return typeof t=="function"?t(e):t}function CSe(){function t(n,r,i,a){const o={[n]:r,theme:i},s=a[n];if(!s)return{[n]:r};const{cssProperty:l=n,themeKey:u,transform:c,style:f}=s;if(r==null)return null;if(u==="typography"&&r==="inherit")return{[n]:r};const h=qu(i,u)||{};return f?f(o):pu(o,r,b=>{let _=YC(h,c,b);return b===_&&typeof b=="string"&&(_=YC(h,c,`${n}${b==="default"?"":Te(b)}`,b)),l===!1?_:{[l]:_}})}function e(n){const{sx:r,theme:i={},nested:a}=n||{};if(!r)return null;const o=i.unstable_sxConfig??vS;function s(l){let u=l;if(typeof l=="function")u=l(i);else if(typeof l!="object")return l;if(!u)return null;const c=nae(i.breakpoints),f=Object.keys(c);let h=c;return Object.keys(u).forEach(m=>{const b=ESe(u[m],i);if(b!=null)if(typeof b=="object")if(o[m])h=G0(h,t(m,b,i,o));else{const _=pu({theme:i},b,y=>({[m]:y}));xSe(_,b)?h[m]=e({sx:b,theme:i,nested:!0}):h=G0(h,_)}else h=G0(h,t(m,b,i,o))}),!a&&i.modularCssLayers?{"@layer sx":C$(i,ek(f,h))}:C$(i,ek(f,h))}return Array.isArray(r)?r.map(s):s(r)}return e}const ah=CSe();ah.filterProps=["sx"];function wSe(t,e){const n=this;if(n.vars){if(!n.colorSchemes?.[t]||typeof n.getColorSchemeSelector!="function")return{};let r=n.getColorSchemeSelector(t);return r==="&"?e:((r.includes("data-")||r.includes("."))&&(r=`*:where(${r.replace(/\s*&$/,"")}) &`),{[r]:e})}return n.palette.mode===t?e:{}}function yS(t={},...e){const{breakpoints:n={},palette:r={},spacing:i,shape:a={},...o}=t,s=Mye(n),l=iae(i);let u=uo({breakpoints:s,direction:"ltr",components:{},palette:{mode:"light",...r},spacing:l,shape:{...Lye,...a}},o);return u=kye(u),u.applyStyles=wSe,u=e.reduce((c,f)=>uo(c,f),u),u.unstable_sxConfig={...vS,...o?.unstable_sxConfig},u.unstable_sx=function(f){return ah({sx:f,theme:this})},u}function TSe(t){return Object.keys(t).length===0}function e9(t=null){const e=E.useContext(bS);return!e||TSe(e)?t:e}const ASe=yS();function SS(t=ASe){return e9(t)}function AI(t){const e=eh(t);return t!==e&&e.styles?(e.styles.match(/^@layer\s+[^{]*$/)||(e.styles=`@layer global{${e.styles}}`),e):t}function aae({styles:t,themeId:e,defaultTheme:n={}}){const r=SS(n),i=e&&r[e]||r;let a=typeof t=="function"?t(i):t;return i.modularCssLayers&&(Array.isArray(a)?a=a.map(o=>AI(typeof o=="function"?o(i):o)):a=AI(a)),d.jsx(Jie,{styles:a})}const RSe=t=>{const e={systemProps:{},otherProps:{}},n=t?.theme?.unstable_sxConfig??vS;return Object.keys(t).forEach(r=>{n[r]?e.systemProps[r]=t[r]:e.otherProps[r]=t[r]}),e};function cA(t){const{sx:e,...n}=t,{systemProps:r,otherProps:i}=RSe(n);let a;return Array.isArray(e)?a=[r,...e]:typeof e=="function"?a=(...o)=>{const s=e(...o);return nd(s)?{...r,...s}:r}:a={...r,...e},{...i,sx:a}}const A$=t=>t,OSe=()=>{let t=A$;return{configure(e){t=e},generate(e){return t(e)},reset(){t=A$}}},oae=OSe();function sae(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;es!=="theme"&&s!=="sx"&&s!=="as"})(ah);return E.forwardRef(function(l,u){const c=SS(n),{className:f,component:h="div",...m}=cA(l);return d.jsx(a,{as:h,ref:u,className:xe(f,i?i(r):r),theme:e&&c[e]||c,...m})})}const NSe={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function Rt(t,e,n="Mui"){const r=NSe[e];return r?`${n}-${r}`:`${oae.generate(t)}-${e}`}function Ot(t,e,n="Mui"){const r={};return e.forEach(i=>{r[i]=Rt(t,i,n)}),r}function lae(t){const{variants:e,...n}=t,r={variants:e,style:eh(n),isProcessed:!0};return r.style===n||e&&e.forEach(i=>{typeof i.style!="function"&&(i.style=eh(i.style))}),r}const MSe=yS();function iC(t){return t!=="ownerState"&&t!=="theme"&&t!=="sx"&&t!=="as"}function jg(t,e){return e&&t&&typeof t=="object"&&t.styles&&!t.styles.startsWith("@layer")&&(t.styles=`@layer ${e}{${String(t.styles)}}`),t}function DSe(t){return t?(e,n)=>n[t]:null}function PSe(t,e,n){t.theme=LSe(t.theme)?n:t.theme[e]||t.theme}function aC(t,e,n){const r=typeof e=="function"?e(t):e;if(Array.isArray(r))return r.flatMap(i=>aC(t,i,n));if(Array.isArray(r?.variants)){let i;if(r.isProcessed)i=n?jg(r.style,n):r.style;else{const{variants:a,...o}=r;i=n?jg(eh(o),n):o}return cae(t,r.variants,[i],n)}return r?.isProcessed?n?jg(eh(r.style),n):r.style:n?jg(eh(r),n):r}function cae(t,e,n=[],r=void 0){let i;e:for(let a=0;a{Rye(s,O=>O.filter(N=>N!==ah));const{name:u,slot:c,skipVariantsResolver:f,skipSx:h,overridesResolver:m=DSe(FSe(c)),...b}=l,_=u&&u.startsWith("Mui")||c?"components":"custom",y=f!==void 0?f:c&&c!=="Root"&&c!=="root"||!1,x=h||!1;let C=iC;c==="Root"||c==="root"?C=r:c?C=i:BSe(s)&&(C=void 0);const A=eae(s,{shouldForwardProp:C,label:kSe(),...b}),R=O=>{if(O.__emotion_real===O)return O;if(typeof O=="function")return function(k){return aC(k,O,k.theme.modularCssLayers?_:void 0)};if(nd(O)){const N=lae(O);return function(D){return N.variants?aC(D,N,D.theme.modularCssLayers?_:void 0):D.theme.modularCssLayers?jg(N.style,_):N.style}}return O},I=(...O)=>{const N=[],k=O.map(R),D=[];if(N.push(a),u&&m&&D.push(function(z){const Y=z.theme.components?.[u]?.styleOverrides;if(!Y)return null;const H={};for(const W in Y)H[W]=aC(z,Y[W],z.theme.modularCssLayers?"theme":void 0);return m(z,H)}),u&&!y&&D.push(function(z){const Y=z.theme?.components?.[u]?.variants;return Y?cae(z,Y,[],z.theme.modularCssLayers?"theme":void 0):null}),x||D.push(ah),Array.isArray(k[0])){const M=k.shift(),z=new Array(N.length).fill(""),G=new Array(D.length).fill("");let Y;Y=[...z,...M,...G],Y.raw=[...z,...M.raw,...G],N.unshift(Y)}const P=[...N,...k,...D],j=A(...P);return s.muiName&&(j.muiName=s.muiName),j};return A.withConfig&&(I.withConfig=A.withConfig),I}}function kSe(t,e){return void 0}function LSe(t){for(const e in t)return!1;return!0}function BSe(t){return typeof t=="string"&&t.charCodeAt(0)>96}function FSe(t){return t&&t.charAt(0).toLowerCase()+t.slice(1)}const Su=uae();function gm(t,e,n=!1){const r={...e};for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)){const a=i;if(a==="components"||a==="slots")r[a]={...t[a],...r[a]};else if(a==="componentsProps"||a==="slotProps"){const o=t[a],s=e[a];if(!s)r[a]=o||{};else if(!o)r[a]=s;else{r[a]={...s};for(const l in o)if(Object.prototype.hasOwnProperty.call(o,l)){const u=l;r[a][u]=gm(o[u],s[u],n)}}}else a==="className"&&n&&e.className?r.className=xe(t?.className,e?.className):a==="style"&&n&&e.style?r.style={...t?.style,...e?.style}:r[a]===void 0&&(r[a]=t[a])}return r}function dae(t){const{theme:e,name:n,props:r}=t;return!e||!e.components||!e.components[n]||!e.components[n].defaultProps?r:gm(e.components[n].defaultProps,r)}function fae({props:t,name:e,defaultTheme:n,themeId:r}){let i=SS(n);return r&&(i=i[r]||i),dae({theme:i,name:e,props:t})}const mr=typeof window<"u"?E.useLayoutEffect:E.useEffect;function jSe(t,e=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(e,Math.min(t,n))}function t9(t,e=0,n=1){return jSe(t,e,n)}function USe(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 oh(t){if(t.type)return t;if(t.charAt(0)==="#")return oh(USe(t));const e=t.indexOf("("),n=t.substring(0,e);if(!["rgb","rgba","hsl","hsla","color"].includes(n))throw new Error(Rf(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(Rf(10,i))}else r=r.split(",");return r=r.map(a=>parseFloat(a)),{type:n,values:r,colorSpace:i}}const zSe=t=>{const e=oh(t);return e.values.slice(0,3).map((n,r)=>e.type.includes("hsl")&&r!==0?`${n}%`:n).join(" ")},A0=(t,e)=>{try{return zSe(t)}catch{return t}};function uA(t){const{type:e,colorSpace:n}=t;let{values:r}=t;return e.includes("rgb")?r=r.map((i,a)=>a<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 pae(t){t=oh(t);const{values:e}=t,n=e[0],r=e[1]/100,i=e[2]/100,a=r*Math.min(i,1-i),o=(u,c=(u+n/30)%12)=>i-a*Math.max(Math.min(c-3,9-c,1),-1);let s="rgb";const l=[Math.round(o(0)*255),Math.round(o(8)*255),Math.round(o(4)*255)];return t.type==="hsla"&&(s+="a",l.push(e[3])),uA({type:s,values:l})}function tk(t){t=oh(t);let e=t.type==="hsl"||t.type==="hsla"?oh(pae(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 HSe(t,e){const n=tk(t),r=tk(e);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function Ss(t,e){return t=oh(t),e=t9(e),(t.type==="rgb"||t.type==="hsl")&&(t.type+="a"),t.type==="color"?t.values[3]=`/${e}`:t.values[3]=e,uA(t)}function ug(t,e,n){try{return Ss(t,e)}catch{return t}}function xS(t,e){if(t=oh(t),e=t9(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 uA(t)}function Jr(t,e,n){try{return xS(t,e)}catch{return t}}function Sh(t,e){if(t=oh(t),e=t9(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 uA(t)}function ei(t,e,n){try{return Sh(t,e)}catch{return t}}function by(t,e=.15){return tk(t)>.5?xS(t,e):Sh(t,e)}function zE(t,e,n){try{return by(t,e)}catch{return t}}const hae=E.createContext(null);function n9(){return E.useContext(hae)}const $Se=typeof Symbol=="function"&&Symbol.for,GSe=$Se?Symbol.for("mui.nested"):"__THEME_NESTED__";function VSe(t,e){return typeof e=="function"?e(t):{...t,...e}}function YSe(t){const{children:e,theme:n}=t,r=n9(),i=E.useMemo(()=>{const a=r===null?{...n}:VSe(r,n);return a!=null&&(a[GSe]=r!==null),a},[n,r]);return d.jsx(hae.Provider,{value:i,children:e})}const gae=E.createContext();function WSe({value:t,...e}){return d.jsx(gae.Provider,{value:t??!0,...e})}const Fa=()=>E.useContext(gae)??!1,mae=E.createContext(void 0);function qSe({value:t,children:e}){return d.jsx(mae.Provider,{value:t,children:e})}function KSe(t){const{theme:e,name:n,props:r}=t;if(!e||!e.components||!e.components[n])return r;const i=e.components[n];return i.defaultProps?gm(i.defaultProps,r,e.components.mergeClassNameAndStyle):!i.styleOverrides&&!i.variants?gm(i,r,e.components.mergeClassNameAndStyle):r}function XSe({props:t,name:e}){const n=E.useContext(mae);return KSe({props:t,name:e,theme:{components:n}})}let R$=0;function QSe(t){const[e,n]=E.useState(t),r=t||e;return E.useEffect(()=>{e==null&&(R$+=1,n(`mui-${R$}`))},[e]),r}const ZSe={...GC},O$=ZSe.useId;function Wn(t){if(O$!==void 0){const e=O$();return t??e}return QSe(t)}function JSe(t){const e=e9(),n=Wn()||"",{modularCssLayers:r}=t;let i="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return!r||e!==null?i="":typeof r=="string"?i=r.replace(/mui(?!\.)/g,i):i=`@layer ${i};`,mr(()=>{const a=document.querySelector("head");if(!a)return;const o=a.firstChild;if(i){if(o&&o.hasAttribute?.("data-mui-layer-order")&&o.getAttribute("data-mui-layer-order")===n)return;const s=document.createElement("style");s.setAttribute("data-mui-layer-order",n),s.textContent=i,a.prepend(s)}else a.querySelector(`style[data-mui-layer-order="${n}"]`)?.remove()},[i,n]),i?d.jsx(aae,{styles:i}):null}const I$={};function N$(t,e,n,r=!1){return E.useMemo(()=>{const i=t&&e[t]||e;if(typeof n=="function"){const a=n(i),o=t?{...e,[t]:a}:a;return r?()=>o:o}return t?{...e,[t]:n}:{...e,...n}},[t,e,n,r])}function bae(t){const{children:e,theme:n,themeId:r}=t,i=e9(I$),a=n9()||I$,o=N$(r,i,n),s=N$(r,a,n,!0),l=(r?o[r]:o).direction==="rtl",u=JSe(o);return d.jsx(YSe,{theme:s,children:d.jsx(bS.Provider,{value:o,children:d.jsx(WSe,{value:l,children:d.jsxs(qSe,{value:r?o[r].components:o.components,children:[u,e]})})})})}const M$={theme:void 0};function exe(t){let e,n;return function(i){let a=e;return(a===void 0||i.theme!==n)&&(M$.theme=i.theme,a=lae(t(M$)),e=a,n=i.theme),a}}const r9="mode",i9="color-scheme",txe="data-color-scheme";function nxe(t){const{defaultMode:e="system",defaultLightColorScheme:n="light",defaultDarkColorScheme:r="dark",modeStorageKey:i=r9,colorSchemeStorageKey:a=i9,attribute:o=txe,colorSchemeNode:s="document.documentElement",nonce:l}=t||{};let u="",c=o;if(o==="class"&&(c=".%s"),o==="data"&&(c="[data-%s]"),c.startsWith(".")){const h=c.substring(1);u+=`${s}.classList.remove('${h}'.replace('%s', light), '${h}'.replace('%s', dark)); + ${s}.classList.add('${h}'.replace('%s', colorScheme));`}const f=c.match(/\[([^[\]]+)\]/);if(f){const[h,m]=f[1].split("=");m||(u+=`${s}.removeAttribute('${h}'.replace('%s', light)); + ${s}.removeAttribute('${h}'.replace('%s', dark));`),u+=` + ${s}.setAttribute('${h}'.replace('%s', colorScheme), ${m?`${m}.replace('%s', colorScheme)`:'""'});`}else c!==".%s"&&(u+=`${s}.setAttribute('${c}', colorScheme);`);return d.jsx("script",{suppressHydrationWarning:!0,nonce:typeof window>"u"?l:"",dangerouslySetInnerHTML:{__html:`(function() { +try { + let colorScheme = ''; + const mode = localStorage.getItem('${i}') || '${e}'; + const dark = localStorage.getItem('${a}-dark') || '${r}'; + const light = localStorage.getItem('${a}-light') || '${n}'; + if (mode === 'system') { + // handle system mode + const mql = window.matchMedia('(prefers-color-scheme: dark)'); + if (mql.matches) { + colorScheme = dark + } else { + colorScheme = light + } + } + if (mode === 'light') { + colorScheme = light; + } + if (mode === 'dark') { + colorScheme = dark; + } + if (colorScheme) { + ${u} + } +} catch(e){}})();`}},"mui-color-scheme-init")}function rxe(){}const ixe=({key:t,storageWindow:e})=>(!e&&typeof window<"u"&&(e=window),{get(n){if(typeof window>"u")return;if(!e)return n;let r;try{r=e.localStorage.getItem(t)}catch{}return r||n},set:n=>{if(e)try{e.localStorage.setItem(t,n)}catch{}},subscribe:n=>{if(!e)return rxe;const r=i=>{const a=i.newValue;i.key===t&&n(a)};return e.addEventListener("storage",r),()=>{e.removeEventListener("storage",r)}}});function RI(){}function D$(t){if(typeof window<"u"&&typeof window.matchMedia=="function"&&t==="system")return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function _ae(t,e){if(t.mode==="light"||t.mode==="system"&&t.systemMode==="light")return e("light");if(t.mode==="dark"||t.mode==="system"&&t.systemMode==="dark")return e("dark")}function axe(t){return _ae(t,e=>{if(e==="light")return t.lightColorScheme;if(e==="dark")return t.darkColorScheme})}function oxe(t){const{defaultMode:e="light",defaultLightColorScheme:n,defaultDarkColorScheme:r,supportedColorSchemes:i=[],modeStorageKey:a=r9,colorSchemeStorageKey:o=i9,storageWindow:s=typeof window>"u"?void 0:window,storageManager:l=ixe,noSsr:u=!1}=t,c=i.join(","),f=i.length>1,h=E.useMemo(()=>l?.({key:a,storageWindow:s}),[l,a,s]),m=E.useMemo(()=>l?.({key:`${o}-light`,storageWindow:s}),[l,o,s]),b=E.useMemo(()=>l?.({key:`${o}-dark`,storageWindow:s}),[l,o,s]),[_,y]=E.useState(()=>{const k=h?.get(e)||e,D=m?.get(n)||n,P=b?.get(r)||r;return{mode:k,systemMode:D$(k),lightColorScheme:D,darkColorScheme:P}}),[x,C]=E.useState(u||!f);E.useEffect(()=>{C(!0)},[]);const A=axe(_),R=E.useCallback(k=>{y(D=>{if(k===D.mode)return D;const P=k??e;return h?.set(P),{...D,mode:P,systemMode:D$(P)}})},[h,e]),I=E.useCallback(k=>{k?typeof k=="string"?k&&!c.includes(k)?console.error(`\`${k}\` does not exist in \`theme.colorSchemes\`.`):y(D=>{const P={...D};return _ae(D,j=>{j==="light"&&(m?.set(k),P.lightColorScheme=k),j==="dark"&&(b?.set(k),P.darkColorScheme=k)}),P}):y(D=>{const P={...D},j=k.light===null?n:k.light,M=k.dark===null?r:k.dark;return j&&(c.includes(j)?(P.lightColorScheme=j,m?.set(j)):console.error(`\`${j}\` does not exist in \`theme.colorSchemes\`.`)),M&&(c.includes(M)?(P.darkColorScheme=M,b?.set(M)):console.error(`\`${M}\` does not exist in \`theme.colorSchemes\`.`)),P}):y(D=>(m?.set(n),b?.set(r),{...D,lightColorScheme:n,darkColorScheme:r}))},[c,m,b,n,r]),O=E.useCallback(k=>{_.mode==="system"&&y(D=>{const P=k?.matches?"dark":"light";return D.systemMode===P?D:{...D,systemMode:P}})},[_.mode]),N=E.useRef(O);return N.current=O,E.useEffect(()=>{if(typeof window.matchMedia!="function"||!f)return;const k=(...P)=>N.current(...P),D=window.matchMedia("(prefers-color-scheme: dark)");return D.addListener(k),k(D),()=>{D.removeListener(k)}},[f]),E.useEffect(()=>{if(f){const k=h?.subscribe(j=>{(!j||["light","dark","system"].includes(j))&&R(j||e)})||RI,D=m?.subscribe(j=>{(!j||c.match(j))&&I({light:j})})||RI,P=b?.subscribe(j=>{(!j||c.match(j))&&I({dark:j})})||RI;return()=>{k(),D(),P()}}},[I,R,c,e,s,f,h,m,b]),{..._,mode:x?_.mode:void 0,systemMode:x?_.systemMode:void 0,colorScheme:x?A:void 0,setMode:R,setColorScheme:I}}const sxe="*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function lxe(t){const{themeId:e,theme:n={},modeStorageKey:r=r9,colorSchemeStorageKey:i=i9,disableTransitionOnChange:a=!1,defaultColorScheme:o,resolveTheme:s}=t,l={allColorSchemes:[],colorScheme:void 0,darkColorScheme:void 0,lightColorScheme:void 0,mode:void 0,setColorScheme:()=>{},setMode:()=>{},systemMode:void 0},u=E.createContext(void 0),c=()=>E.useContext(u)||l,f={},h={};function m(x){const{children:C,theme:A,modeStorageKey:R=r,colorSchemeStorageKey:I=i,disableTransitionOnChange:O=a,storageManager:N,storageWindow:k=typeof window>"u"?void 0:window,documentNode:D=typeof document>"u"?void 0:document,colorSchemeNode:P=typeof document>"u"?void 0:document.documentElement,disableNestedContext:j=!1,disableStyleSheetGeneration:M=!1,defaultMode:z="system",forceThemeRerender:G=!1,noSsr:Y}=x,H=E.useRef(!1),W=n9(),q=E.useContext(u),Q=!!q&&!j,X=E.useMemo(()=>A||(typeof n=="function"?n():n),[A]),$=X[e],K=$||X,{colorSchemes:te=f,components:ie=h,cssVarPrefix:se}=K,le=Object.keys(te).filter(dt=>!!te[dt]).join(","),be=E.useMemo(()=>le.split(","),[le]),we=typeof o=="string"?o:o.light,ue=typeof o=="string"?o:o.dark,ye=te[we]&&te[ue]?z:te[K.defaultColorScheme]?.palette?.mode||K.palette?.mode,{mode:Ae,setMode:ve,systemMode:Xe,lightColorScheme:Be,darkColorScheme:Ne,colorScheme:Je,setColorScheme:De}=oxe({supportedColorSchemes:be,defaultLightColorScheme:we,defaultDarkColorScheme:ue,modeStorageKey:R,colorSchemeStorageKey:I,defaultMode:ye,storageManager:N,storageWindow:k,noSsr:Y});let Oe=Ae,ht=Je;Q&&(Oe=q.mode,ht=q.colorScheme);let ot=ht||K.defaultColorScheme;K.vars&&!G&&(ot=K.defaultColorScheme);const At=E.useMemo(()=>{const dt=K.generateThemeVars?.()||K.vars,yt={...K,components:ie,colorSchemes:te,cssVarPrefix:se,vars:dt};if(typeof yt.generateSpacing=="function"&&(yt.spacing=yt.generateSpacing()),ot){const jt=te[ot];jt&&typeof jt=="object"&&Object.keys(jt).forEach(ft=>{jt[ft]&&typeof jt[ft]=="object"?yt[ft]={...yt[ft],...jt[ft]}:yt[ft]=jt[ft]})}return s?s(yt):yt},[K,ot,ie,te,se]),ge=K.colorSchemeSelector;mr(()=>{if(ht&&P&&ge&&ge!=="media"){const dt=ge;let yt=ge;if(dt==="class"&&(yt=".%s"),dt==="data"&&(yt="[data-%s]"),dt?.startsWith("data-")&&!dt.includes("%s")&&(yt=`[${dt}="%s"]`),yt.startsWith("."))P.classList.remove(...be.map(jt=>yt.substring(1).replace("%s",jt))),P.classList.add(yt.substring(1).replace("%s",ht));else{const jt=yt.replace("%s",ht).match(/\[([^\]]+)\]/);if(jt){const[ft,Pt]=jt[1].split("=");Pt||be.forEach(rt=>{P.removeAttribute(ft.replace(ht,rt))}),P.setAttribute(ft,Pt?Pt.replace(/"|'/g,""):"")}else P.setAttribute(yt,ht)}}},[ht,ge,P,be]),E.useEffect(()=>{let dt;if(O&&H.current&&D){const yt=D.createElement("style");yt.appendChild(D.createTextNode(sxe)),D.head.appendChild(yt),window.getComputedStyle(D.body),dt=setTimeout(()=>{D.head.removeChild(yt)},1)}return()=>{clearTimeout(dt)}},[ht,O,D]),E.useEffect(()=>(H.current=!0,()=>{H.current=!1}),[]);const nt=E.useMemo(()=>({allColorSchemes:be,colorScheme:ht,darkColorScheme:Ne,lightColorScheme:Be,mode:Oe,setColorScheme:De,setMode:ve,systemMode:Xe}),[be,ht,Ne,Be,Oe,De,ve,Xe,At.colorSchemeSelector]);let ze=!0;(M||K.cssVariables===!1||Q&&W?.cssVarPrefix===se)&&(ze=!1);const ut=d.jsxs(E.Fragment,{children:[d.jsx(bae,{themeId:$?e:void 0,theme:At,children:C}),ze&&d.jsx(Jie,{styles:At.generateStyleSheets?.()||[]})]});return Q?ut:d.jsx(u.Provider,{value:nt,children:ut})}const b=typeof o=="string"?o:o.light,_=typeof o=="string"?o:o.dark;return{CssVarsProvider:m,useColorScheme:c,getInitColorSchemeScript:x=>nxe({colorSchemeStorageKey:i,defaultLightColorScheme:b,defaultDarkColorScheme:_,modeStorageKey:r,...x})}}function cxe(t=""){function e(...r){if(!r.length)return"";const i=r[0];return typeof i=="string"&&!i.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, var(--${t?`${t}-`:""}${i}${e(...r.slice(1))})`:`, ${i}`}return(r,...i)=>`var(--${t?`${t}-`:""}${r}${e(...i)})`}const P$=(t,e,n,r=[])=>{let i=t;e.forEach((a,o)=>{o===e.length-1?Array.isArray(i)?i[Number(a)]=n:i&&typeof i=="object"&&(i[a]=n):i&&typeof i=="object"&&(i[a]||(i[a]=r.includes(a)?[]:{}),i=i[a])})},uxe=(t,e,n)=>{function r(i,a=[],o=[]){Object.entries(i).forEach(([s,l])=>{(!n||n&&!n([...a,s]))&&l!=null&&(typeof l=="object"&&Object.keys(l).length>0?r(l,[...a,s],Array.isArray(l)?[...o,s]:o):e([...a,s],l,o))})}r(t)},dxe=(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 OI(t,e){const{prefix:n,shouldSkipGeneratingVar:r}=e||{},i={},a={},o={};return uxe(t,(s,l,u)=>{if((typeof l=="string"||typeof l=="number")&&(!r||!r(s,l))){const c=`--${n?`${n}-`:""}${s.join("-")}`,f=dxe(s,l);Object.assign(i,{[c]:f}),P$(a,s,`var(${c})`,u),P$(o,s,`var(${c}, ${f})`,u)}},s=>s[0]==="vars"),{css:i,vars:a,varsWithDefaults:o}}function fxe(t,e={}){const{getSelector:n=x,disableCssColorScheme:r,colorSchemeSelector:i,enableContrastVars:a}=e,{colorSchemes:o={},components:s,defaultColorScheme:l="light",...u}=t,{vars:c,css:f,varsWithDefaults:h}=OI(u,e);let m=h;const b={},{[l]:_,...y}=o;if(Object.entries(y||{}).forEach(([R,I])=>{const{vars:O,css:N,varsWithDefaults:k}=OI(I,e);m=uo(m,k),b[R]={css:N,vars:O}}),_){const{css:R,vars:I,varsWithDefaults:O}=OI(_,e);m=uo(m,O),b[l]={css:R,vars:I}}function x(R,I){let O=i;if(i==="class"&&(O=".%s"),i==="data"&&(O="[data-%s]"),i?.startsWith("data-")&&!i.includes("%s")&&(O=`[${i}="%s"]`),R){if(O==="media")return t.defaultColorScheme===R?":root":{[`@media (prefers-color-scheme: ${o[R]?.palette?.mode||R})`]:{":root":I}};if(O)return t.defaultColorScheme===R?`:root, ${O.replace("%s",String(R))}`:O.replace("%s",String(R))}return":root"}return{vars:m,generateThemeVars:()=>{let R={...c};return Object.entries(b).forEach(([,{vars:I}])=>{R=uo(R,I)}),R},generateStyleSheets:()=>{const R=[],I=t.defaultColorScheme||"light";function O(D,P){Object.keys(P).length&&R.push(typeof D=="string"?{[D]:{...P}}:D)}O(n(void 0,{...f}),f);const{[I]:N,...k}=b;if(N){const{css:D}=N,P=o[I]?.palette?.mode,j=!r&&P?{colorScheme:P,...D}:{...D};O(n(I,{...j}),j)}return Object.entries(k).forEach(([D,{css:P}])=>{const j=o[D]?.palette?.mode,M=!r&&j?{colorScheme:j,...P}:{...P};O(n(D,{...M}),M)}),a&&R.push({":root":{"--__l-threshold":"0.7","--__l":"clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)","--__a":"clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)"}}),R}}}function pxe(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)} &`:"&"}}function We(t,e,n=void 0){const r={};for(const i in t){const a=t[i];let o="",s=!0;for(let l=0;lt.filter(n=>e.includes(n)),S_=(t,e,n)=>{const r=t.keys[0];Array.isArray(e)?e.forEach((i,a)=>{n((o,s)=>{a<=t.keys.length-1&&(a===0?Object.assign(o,s):o[t.up(t.keys[a])]=s)},i)}):e&&typeof e=="object"?(Object.keys(e).length>t.keys.length?t.keys:hxe(t.keys,Object.keys(e))).forEach(a=>{if(t.keys.includes(a)){const o=e[a];o!==void 0&&n((s,l)=>{r===a?Object.assign(s,l):s[t.up(a)]=l},o)}}):(typeof e=="number"||typeof e=="string")&&n((i,a)=>{Object.assign(i,a)},e)};function WC(t){return`--Grid-${t}Spacing`}function dA(t){return`--Grid-parent-${t}Spacing`}const k$="--Grid-columns",Ib="--Grid-parent-columns",gxe=({theme:t,ownerState:e})=>{const n={};return S_(t.breakpoints,e.size,(r,i)=>{let a={};i==="grow"&&(a={flexBasis:0,flexGrow:1,maxWidth:"100%"}),i==="auto"&&(a={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"}),typeof i=="number"&&(a={flexGrow:0,flexBasis:"auto",width:`calc(100% * ${i} / var(${Ib}) - (var(${Ib}) - ${i}) * (var(${dA("column")}) / var(${Ib})))`}),r(n,a)}),n},mxe=({theme:t,ownerState:e})=>{const n={};return S_(t.breakpoints,e.offset,(r,i)=>{let a={};i==="auto"&&(a={marginLeft:"auto"}),typeof i=="number"&&(a={marginLeft:i===0?"0px":`calc(100% * ${i} / var(${Ib}) + var(${dA("column")}) * ${i} / var(${Ib}))`}),r(n,a)}),n},bxe=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={[k$]:12};return S_(t.breakpoints,e.columns,(r,i)=>{const a=i??12;r(n,{[k$]:a,"> *":{[Ib]:a}})}),n},_xe=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={};return S_(t.breakpoints,e.rowSpacing,(r,i)=>{const a=typeof i=="string"?i:t.spacing?.(i);r(n,{[WC("row")]:a,"> *":{[dA("row")]:a}})}),n},vxe=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={};return S_(t.breakpoints,e.columnSpacing,(r,i)=>{const a=typeof i=="string"?i:t.spacing?.(i);r(n,{[WC("column")]:a,"> *":{[dA("column")]:a}})}),n},yxe=({theme:t,ownerState:e})=>{if(!e.container)return{};const n={};return S_(t.breakpoints,e.direction,(r,i)=>{r(n,{flexDirection:i})}),n},Sxe=({ownerState:t})=>({minWidth:0,boxSizing:"border-box",...t.container&&{display:"flex",flexWrap:"wrap",...t.wrap&&t.wrap!=="wrap"&&{flexWrap:t.wrap},gap:`var(${WC("row")}) var(${WC("column")})`}}),xxe=t=>{const e=[];return Object.entries(t).forEach(([n,r])=>{r!==!1&&r!==void 0&&e.push(`grid-${n}-${String(r)}`)}),e},Exe=(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,a])=>{n(a)&&r.push(`spacing-${i}-${String(a)}`)}),r}return[]},Cxe=t=>t===void 0?[]:typeof t=="object"?Object.entries(t).map(([e,n])=>`direction-${e}-${n}`):[`direction-xs-${String(t)}`];function wxe(t,e){t.item!==void 0&&delete t.item,t.zeroMinWidth!==void 0&&delete t.zeroMinWidth,e.keys.forEach(n=>{t[n]!==void 0&&delete t[n]})}const Txe=yS(),Axe=Su("div",{name:"MuiGrid",slot:"Root"});function Rxe(t){return fae({props:t,name:"MuiGrid",defaultTheme:Txe})}function Oxe(t={}){const{createStyledComponent:e=Axe,useThemeProps:n=Rxe,useTheme:r=SS,componentName:i="MuiGrid"}=t,a=(u,c)=>{const{container:f,direction:h,spacing:m,wrap:b,size:_}=u,y={root:["root",f&&"container",b!=="wrap"&&`wrap-xs-${String(b)}`,...Cxe(h),...xxe(_),...f?Exe(m,c.breakpoints.keys[0]):[]]};return We(y,x=>Rt(i,x),{})};function o(u,c,f=()=>!0){const h={};return u===null||(Array.isArray(u)?u.forEach((m,b)=>{m!==null&&f(m)&&c.keys[b]&&(h[c.keys[b]]=m)}):typeof u=="object"?Object.keys(u).forEach(m=>{const b=u[m];b!=null&&f(b)&&(h[m]=b)}):h[c.keys[0]]=u),h}const s=e(bxe,vxe,_xe,gxe,yxe,Sxe,mxe),l=E.forwardRef(function(c,f){const h=r(),m=n(c),b=cA(m);wxe(b,h.breakpoints);const{className:_,children:y,columns:x=12,container:C=!1,component:A="div",direction:R="row",wrap:I="wrap",size:O={},offset:N={},spacing:k=0,rowSpacing:D=k,columnSpacing:P=k,unstable_level:j=0,...M}=b,z=o(O,h.breakpoints,$=>$!==!1),G=o(N,h.breakpoints),Y=c.columns??(j?void 0:x),H=c.spacing??(j?void 0:k),W=c.rowSpacing??c.spacing??(j?void 0:D),q=c.columnSpacing??c.spacing??(j?void 0:P),Q={...b,level:j,columns:Y,container:C,direction:R,wrap:I,spacing:H,rowSpacing:W,columnSpacing:q,size:z,offset:G},X=a(Q,h);return d.jsx(s,{ref:f,as:A,ownerState:Q,className:xe(X.root,_),...M,children:E.Children.map(y,$=>E.isValidElement($)&&V0($,["Grid"])&&C&&$.props.container?E.cloneElement($,{unstable_level:$.props?.unstable_level??j+1}):$)})});return l.muiName="Grid",l}const Ixe=yS(),Nxe=Su("div",{name:"MuiStack",slot:"Root"});function Mxe(t){return fae({props:t,name:"MuiStack",defaultTheme:Ixe})}function Dxe(t,e){const n=E.Children.toArray(t).filter(Boolean);return n.reduce((r,i,a)=>(r.push(i),a({row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"})[t],kxe=({ownerState:t,theme:e})=>{let n={display:"flex",flexDirection:"column",...pu({theme:e},TI({values:t.direction,breakpoints:e.breakpoints.values}),r=>({flexDirection:r}))};if(t.spacing){const r=rA(e),i=Object.keys(e.breakpoints.values).reduce((l,u)=>((typeof t.spacing=="object"&&t.spacing[u]!=null||typeof t.direction=="object"&&t.direction[u]!=null)&&(l[u]=!0),l),{}),a=TI({values:t.direction,base:i}),o=TI({values:t.spacing,base:i});typeof a=="object"&&Object.keys(a).forEach((l,u,c)=>{if(!a[l]){const h=u>0?a[c[u-1]]:"column";a[l]=h}}),n=uo(n,pu({theme:e},o,(l,u)=>t.useFlexGap?{gap:hm(r,l)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{[`margin${Pxe(u?a[u]:t.direction)}`]:hm(r,l)}}))}return n=Fye(e.breakpoints,n),n};function Lxe(t={}){const{createStyledComponent:e=Nxe,useThemeProps:n=Mxe,componentName:r="MuiStack"}=t,i=()=>We({root:["root"]},l=>Rt(r,l),{}),a=e(kxe);return E.forwardRef(function(l,u){const c=n(l),f=cA(c),{component:h="div",direction:m="column",spacing:b=0,divider:_,children:y,className:x,useFlexGap:C=!1,...A}=f,R={direction:m,spacing:b,useFlexGap:C},I=i();return d.jsx(a,{as:h,ownerState:R,ref:u,className:xe(I.root,x),...A,children:_?Dxe(y,_):y})})}const _y={black:"#000",white:"#fff"},Bxe={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"},L1={50:"#f3e5f5",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",700:"#7b1fa2"},B1={300:"#e57373",400:"#ef5350",500:"#f44336",700:"#d32f2f",800:"#c62828"},Gv={300:"#ffb74d",400:"#ffa726",500:"#ff9800",700:"#f57c00",900:"#e65100"},F1={50:"#e3f2fd",200:"#90caf9",400:"#42a5f5",700:"#1976d2",800:"#1565c0"},j1={300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",700:"#0288d1",900:"#01579b"},U1={300:"#81c784",400:"#66bb6a",500:"#4caf50",700:"#388e3c",800:"#2e7d32",900:"#1b5e20"};function vae(){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:_y.white,default:_y.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 yae=vae();function Sae(){return{text:{primary:_y.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:_y.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 nk=Sae();function L$(t,e,n,r){const i=r.light||r,a=r.dark||r*1.5;t[e]||(t.hasOwnProperty(n)?t[e]=t[n]:e==="light"?t.light=Sh(t.main,i):e==="dark"&&(t.dark=xS(t.main,a)))}function B$(t,e,n,r,i){const a=i.light||i,o=i.dark||i*1.5;e[n]||(e.hasOwnProperty(r)?e[n]=e[r]:n==="light"?e.light=`color-mix(in ${t}, ${e.main}, #fff ${(a*100).toFixed(0)}%)`:n==="dark"&&(e.dark=`color-mix(in ${t}, ${e.main}, #000 ${(o*100).toFixed(0)}%)`))}function Fxe(t="light"){return t==="dark"?{main:F1[200],light:F1[50],dark:F1[400]}:{main:F1[700],light:F1[400],dark:F1[800]}}function jxe(t="light"){return t==="dark"?{main:L1[200],light:L1[50],dark:L1[400]}:{main:L1[500],light:L1[300],dark:L1[700]}}function Uxe(t="light"){return t==="dark"?{main:B1[500],light:B1[300],dark:B1[700]}:{main:B1[700],light:B1[400],dark:B1[800]}}function zxe(t="light"){return t==="dark"?{main:j1[400],light:j1[300],dark:j1[700]}:{main:j1[700],light:j1[500],dark:j1[900]}}function Hxe(t="light"){return t==="dark"?{main:U1[400],light:U1[300],dark:U1[700]}:{main:U1[800],light:U1[500],dark:U1[900]}}function $xe(t="light"){return t==="dark"?{main:Gv[400],light:Gv[300],dark:Gv[700]}:{main:"#ed6c02",light:Gv[500],dark:Gv[900]}}function Gxe(t){return`oklch(from ${t} var(--__l) 0 h / var(--__a))`}function a9(t){const{mode:e="light",contrastThreshold:n=3,tonalOffset:r=.2,colorSpace:i,...a}=t,o=t.primary||Fxe(e),s=t.secondary||jxe(e),l=t.error||Uxe(e),u=t.info||zxe(e),c=t.success||Hxe(e),f=t.warning||$xe(e);function h(y){return i?Gxe(y):HSe(y,nk.text.primary)>=n?nk.text.primary:yae.text.primary}const m=({color:y,name:x,mainShade:C=500,lightShade:A=300,darkShade:R=700})=>{if(y={...y},!y.main&&y[C]&&(y.main=y[C]),!y.hasOwnProperty("main"))throw new Error(Rf(11,x?` (${x})`:"",C));if(typeof y.main!="string")throw new Error(Rf(12,x?` (${x})`:"",JSON.stringify(y.main)));return i?(B$(i,y,"light",A,r),B$(i,y,"dark",R,r)):(L$(y,"light",A,r),L$(y,"dark",R,r)),y.contrastText||(y.contrastText=h(y.main)),y};let b;return e==="light"?b=vae():e==="dark"&&(b=Sae()),uo({common:{..._y},mode:e,primary:m({color:o,name:"primary"}),secondary:m({color:s,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:m({color:l,name:"error"}),warning:m({color:f,name:"warning"}),info:m({color:u,name:"info"}),success:m({color:c,name:"success"}),grey:Bxe,contrastThreshold:n,getContrastText:h,augmentColor:m,tonalOffset:r,...b},a)}function Vxe(t){const e={};return Object.entries(t).forEach(r=>{const[i,a]=r;typeof a=="object"&&(e[i]=`${a.fontStyle?`${a.fontStyle} `:""}${a.fontVariant?`${a.fontVariant} `:""}${a.fontWeight?`${a.fontWeight} `:""}${a.fontStretch?`${a.fontStretch} `:""}${a.fontSize||""}${a.lineHeight?`/${a.lineHeight} `:""}${a.fontFamily||""}`)}),e}function Yxe(t,e){return{toolbar:{minHeight:56,[t.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[t.up("sm")]:{minHeight:64}},...e}}function Wxe(t){return Math.round(t*1e5)/1e5}const F$={textTransform:"uppercase"},j$='"Roboto", "Helvetica", "Arial", sans-serif';function xae(t,e){const{fontFamily:n=j$,fontSize:r=14,fontWeightLight:i=300,fontWeightRegular:a=400,fontWeightMedium:o=500,fontWeightBold:s=700,htmlFontSize:l=16,allVariants:u,pxToRem:c,...f}=typeof e=="function"?e(t):e,h=r/14,m=c||(y=>`${y/l*h}rem`),b=(y,x,C,A,R)=>({fontFamily:n,fontWeight:y,fontSize:m(x),lineHeight:C,...n===j$?{letterSpacing:`${Wxe(A/x)}em`}:{},...R,...u}),_={h1:b(i,96,1.167,-1.5),h2:b(i,60,1.2,-.5),h3:b(a,48,1.167,0),h4:b(a,34,1.235,.25),h5:b(a,24,1.334,0),h6:b(o,20,1.6,.15),subtitle1:b(a,16,1.75,.15),subtitle2:b(o,14,1.57,.1),body1:b(a,16,1.5,.15),body2:b(a,14,1.43,.15),button:b(o,14,1.75,.4,F$),caption:b(a,12,1.66,.4),overline:b(a,12,2.66,1,F$),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return uo({htmlFontSize:l,pxToRem:m,fontFamily:n,fontSize:r,fontWeightLight:i,fontWeightRegular:a,fontWeightMedium:o,fontWeightBold:s,..._},f,{clone:!1})}const qxe=.2,Kxe=.14,Xxe=.12;function ki(...t){return[`${t[0]}px ${t[1]}px ${t[2]}px ${t[3]}px rgba(0,0,0,${qxe})`,`${t[4]}px ${t[5]}px ${t[6]}px ${t[7]}px rgba(0,0,0,${Kxe})`,`${t[8]}px ${t[9]}px ${t[10]}px ${t[11]}px rgba(0,0,0,${Xxe})`].join(",")}const Qxe=["none",ki(0,2,1,-1,0,1,1,0,0,1,3,0),ki(0,3,1,-2,0,2,2,0,0,1,5,0),ki(0,3,3,-2,0,3,4,0,0,1,8,0),ki(0,2,4,-1,0,4,5,0,0,1,10,0),ki(0,3,5,-1,0,5,8,0,0,1,14,0),ki(0,3,5,-1,0,6,10,0,0,1,18,0),ki(0,4,5,-2,0,7,10,1,0,2,16,1),ki(0,5,5,-3,0,8,10,1,0,3,14,2),ki(0,5,6,-3,0,9,12,1,0,3,16,2),ki(0,6,6,-3,0,10,14,1,0,4,18,3),ki(0,6,7,-4,0,11,15,1,0,4,20,3),ki(0,7,8,-4,0,12,17,2,0,5,22,4),ki(0,7,8,-4,0,13,19,2,0,5,24,4),ki(0,7,9,-4,0,14,21,2,0,5,26,4),ki(0,8,9,-5,0,15,22,2,0,6,28,5),ki(0,8,10,-5,0,16,24,2,0,6,30,5),ki(0,8,11,-5,0,17,26,2,0,6,32,5),ki(0,9,11,-5,0,18,28,2,0,7,34,6),ki(0,9,12,-6,0,19,29,2,0,7,36,6),ki(0,10,13,-6,0,20,31,3,0,8,38,7),ki(0,10,13,-6,0,21,33,3,0,8,40,7),ki(0,10,14,-6,0,22,35,3,0,8,42,7),ki(0,11,14,-7,0,23,36,3,0,9,44,8),ki(0,11,15,-7,0,24,38,3,0,9,46,8)],Zxe={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)"},Eae={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function U$(t){return`${Math.round(t)}ms`}function Jxe(t){if(!t)return 0;const e=t/36;return Math.min(Math.round((4+15*e**.25+e/5)*10),3e3)}function eEe(t){const e={...Zxe,...t.easing},n={...Eae,...t.duration};return{getAutoHeightDuration:Jxe,create:(i=["all"],a={})=>{const{duration:o=n.standard,easing:s=e.easeInOut,delay:l=0,...u}=a;return(Array.isArray(i)?i:[i]).map(c=>`${c} ${typeof o=="string"?o:U$(o)} ${s} ${typeof l=="string"?l:U$(l)}`).join(",")},...t,easing:e,duration:n}}const tEe={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};function nEe(t){return nd(t)||typeof t>"u"||typeof t=="string"||typeof t=="boolean"||typeof t=="number"||Array.isArray(t)}function Cae(t={}){const e={...t};function n(r){const i=Object.entries(r);for(let a=0;a{if(!Number.isNaN(+t))return+t;const e=t.match(/\d*\.?\d+/g);if(!e)return 0;let n=0;for(let r=0;ruo(b,_),m),m.unstable_sxConfig={...vS,...c?.unstable_sxConfig},m.unstable_sx=function(_){return ah({sx:_,theme:this})},m.toRuntimeSource=Cae,iEe(m),m}function ik(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 aEe=[...Array(25)].map((t,e)=>{if(e===0)return"none";const n=ik(e);return`linear-gradient(rgba(255 255 255 / ${n}), rgba(255 255 255 / ${n}))`});function wae(t){return{inputPlaceholder:t==="dark"?.5:.42,inputUnderline:t==="dark"?.7:.42,switchTrackDisabled:t==="dark"?.2:.12,switchTrack:t==="dark"?.3:.38}}function Tae(t){return t==="dark"?aEe:[]}function oEe(t){const{palette:e={mode:"light"},opacity:n,overlays:r,colorSpace:i,...a}=t,o=a9({...e,colorSpace:i});return{palette:o,opacity:{...wae(o.mode),...n},overlays:r||Tae(o.mode),...a}}function sEe(t){return!!t[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/)||!!t[0].match(/sxConfig$/)||t[0]==="palette"&&!!t[1]?.match(/(mode|contrastThreshold|tonalOffset)/)}const lEe=t=>[...[...Array(25)].map((e,n)=>`--${t?`${t}-`:""}overlays-${n}`),`--${t?`${t}-`:""}palette-AppBar-darkBg`,`--${t?`${t}-`:""}palette-AppBar-darkColor`],cEe=t=>(e,n)=>{const r=t.rootSelector||":root",i=t.colorSchemeSelector;let a=i;if(i==="class"&&(a=".%s"),i==="data"&&(a="[data-%s]"),i?.startsWith("data-")&&!i.includes("%s")&&(a=`[${i}="%s"]`),t.defaultColorScheme===e){if(e==="dark"){const o={};return lEe(t.cssVarPrefix).forEach(s=>{o[s]=n[s],delete n[s]}),a==="media"?{[r]:n,"@media (prefers-color-scheme: dark)":{[r]:o}}:a?{[a.replace("%s",e)]:o,[`${r}, ${a.replace("%s",e)}`]:n}:{[r]:{...n,...o}}}if(a&&a!=="media")return`${r}, ${a.replace("%s",String(e))}`}else if(e){if(a==="media")return{[`@media (prefers-color-scheme: ${String(e)})`]:{[r]:n}};if(a)return a.replace("%s",String(e))}return r};function uEe(t,e){e.forEach(n=>{t[n]||(t[n]={})})}function Ze(t,e,n){!t[e]&&n&&(t[e]=n)}function R0(t){return typeof t!="string"||!t.startsWith("hsl")?t:pae(t)}function Zd(t,e){`${e}Channel`in t||(t[`${e}Channel`]=A0(R0(t[e])))}function dEe(t){return typeof t=="number"?`${t}px`:typeof t=="string"||typeof t=="function"||Array.isArray(t)?t:"8px"}const Uu=t=>{try{return t()}catch{}},fEe=(t="mui")=>cxe(t);function II(t,e,n,r,i){if(!n)return;n=n===!0?{}:n;const a=i==="dark"?"dark":"light";if(!r){e[i]=oEe({...n,palette:{mode:a,...n?.palette},colorSpace:t});return}const{palette:o,...s}=rk({...r,palette:{mode:a,...n?.palette},colorSpace:t});return e[i]={...n,palette:o,opacity:{...wae(a),...n?.opacity},overlays:n?.overlays||Tae(a)},s}function pEe(t={},...e){const{colorSchemes:n={light:!0},defaultColorScheme:r,disableCssColorScheme:i=!1,cssVarPrefix:a="mui",nativeColor:o=!1,shouldSkipGeneratingVar:s=sEe,colorSchemeSelector:l=n.light&&n.dark?"media":void 0,rootSelector:u=":root",...c}=t,f=Object.keys(n)[0],h=r||(n.light&&f!=="light"?"light":f),m=fEe(a),{[h]:b,light:_,dark:y,...x}=n,C={...x};let A=b;if((h==="dark"&&!("dark"in n)||h==="light"&&!("light"in n))&&(A=!0),!A)throw new Error(Rf(21,h));let R;o&&(R="oklch");const I=II(R,C,A,c,h);_&&!C.light&&II(R,C,_,void 0,"light"),y&&!C.dark&&II(R,C,y,void 0,"dark");let O={defaultColorScheme:h,...I,cssVarPrefix:a,colorSchemeSelector:l,rootSelector:u,getCssVar:m,colorSchemes:C,font:{...Vxe(I.typography),...I.font},spacing:dEe(c.spacing)};Object.keys(O.colorSchemes).forEach(j=>{const M=O.colorSchemes[j].palette,z=Y=>{const H=Y.split("-"),W=H[1],q=H[2];return m(Y,M[W][q])};M.mode==="light"&&(Ze(M.common,"background","#fff"),Ze(M.common,"onBackground","#000")),M.mode==="dark"&&(Ze(M.common,"background","#000"),Ze(M.common,"onBackground","#fff"));function G(Y,H,W){if(R){let q;return Y===ug&&(q=`transparent ${((1-W)*100).toFixed(0)}%`),Y===Jr&&(q=`#000 ${(W*100).toFixed(0)}%`),Y===ei&&(q=`#fff ${(W*100).toFixed(0)}%`),`color-mix(in ${R}, ${H}, ${q})`}return Y(H,W)}if(uEe(M,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),M.mode==="light"){Ze(M.Alert,"errorColor",G(Jr,M.error.light,.6)),Ze(M.Alert,"infoColor",G(Jr,M.info.light,.6)),Ze(M.Alert,"successColor",G(Jr,M.success.light,.6)),Ze(M.Alert,"warningColor",G(Jr,M.warning.light,.6)),Ze(M.Alert,"errorFilledBg",z("palette-error-main")),Ze(M.Alert,"infoFilledBg",z("palette-info-main")),Ze(M.Alert,"successFilledBg",z("palette-success-main")),Ze(M.Alert,"warningFilledBg",z("palette-warning-main")),Ze(M.Alert,"errorFilledColor",Uu(()=>M.getContrastText(M.error.main))),Ze(M.Alert,"infoFilledColor",Uu(()=>M.getContrastText(M.info.main))),Ze(M.Alert,"successFilledColor",Uu(()=>M.getContrastText(M.success.main))),Ze(M.Alert,"warningFilledColor",Uu(()=>M.getContrastText(M.warning.main))),Ze(M.Alert,"errorStandardBg",G(ei,M.error.light,.9)),Ze(M.Alert,"infoStandardBg",G(ei,M.info.light,.9)),Ze(M.Alert,"successStandardBg",G(ei,M.success.light,.9)),Ze(M.Alert,"warningStandardBg",G(ei,M.warning.light,.9)),Ze(M.Alert,"errorIconColor",z("palette-error-main")),Ze(M.Alert,"infoIconColor",z("palette-info-main")),Ze(M.Alert,"successIconColor",z("palette-success-main")),Ze(M.Alert,"warningIconColor",z("palette-warning-main")),Ze(M.AppBar,"defaultBg",z("palette-grey-100")),Ze(M.Avatar,"defaultBg",z("palette-grey-400")),Ze(M.Button,"inheritContainedBg",z("palette-grey-300")),Ze(M.Button,"inheritContainedHoverBg",z("palette-grey-A100")),Ze(M.Chip,"defaultBorder",z("palette-grey-400")),Ze(M.Chip,"defaultAvatarColor",z("palette-grey-700")),Ze(M.Chip,"defaultIconColor",z("palette-grey-700")),Ze(M.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),Ze(M.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),Ze(M.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),Ze(M.LinearProgress,"primaryBg",G(ei,M.primary.main,.62)),Ze(M.LinearProgress,"secondaryBg",G(ei,M.secondary.main,.62)),Ze(M.LinearProgress,"errorBg",G(ei,M.error.main,.62)),Ze(M.LinearProgress,"infoBg",G(ei,M.info.main,.62)),Ze(M.LinearProgress,"successBg",G(ei,M.success.main,.62)),Ze(M.LinearProgress,"warningBg",G(ei,M.warning.main,.62)),Ze(M.Skeleton,"bg",R?G(ug,M.text.primary,.11):`rgba(${z("palette-text-primaryChannel")} / 0.11)`),Ze(M.Slider,"primaryTrack",G(ei,M.primary.main,.62)),Ze(M.Slider,"secondaryTrack",G(ei,M.secondary.main,.62)),Ze(M.Slider,"errorTrack",G(ei,M.error.main,.62)),Ze(M.Slider,"infoTrack",G(ei,M.info.main,.62)),Ze(M.Slider,"successTrack",G(ei,M.success.main,.62)),Ze(M.Slider,"warningTrack",G(ei,M.warning.main,.62));const Y=R?G(Jr,M.background.default,.6825):zE(M.background.default,.8);Ze(M.SnackbarContent,"bg",Y),Ze(M.SnackbarContent,"color",Uu(()=>R?nk.text.primary:M.getContrastText(Y))),Ze(M.SpeedDialAction,"fabHoverBg",zE(M.background.paper,.15)),Ze(M.StepConnector,"border",z("palette-grey-400")),Ze(M.StepContent,"border",z("palette-grey-400")),Ze(M.Switch,"defaultColor",z("palette-common-white")),Ze(M.Switch,"defaultDisabledColor",z("palette-grey-100")),Ze(M.Switch,"primaryDisabledColor",G(ei,M.primary.main,.62)),Ze(M.Switch,"secondaryDisabledColor",G(ei,M.secondary.main,.62)),Ze(M.Switch,"errorDisabledColor",G(ei,M.error.main,.62)),Ze(M.Switch,"infoDisabledColor",G(ei,M.info.main,.62)),Ze(M.Switch,"successDisabledColor",G(ei,M.success.main,.62)),Ze(M.Switch,"warningDisabledColor",G(ei,M.warning.main,.62)),Ze(M.TableCell,"border",G(ei,G(ug,M.divider,1),.88)),Ze(M.Tooltip,"bg",G(ug,M.grey[700],.92))}if(M.mode==="dark"){Ze(M.Alert,"errorColor",G(ei,M.error.light,.6)),Ze(M.Alert,"infoColor",G(ei,M.info.light,.6)),Ze(M.Alert,"successColor",G(ei,M.success.light,.6)),Ze(M.Alert,"warningColor",G(ei,M.warning.light,.6)),Ze(M.Alert,"errorFilledBg",z("palette-error-dark")),Ze(M.Alert,"infoFilledBg",z("palette-info-dark")),Ze(M.Alert,"successFilledBg",z("palette-success-dark")),Ze(M.Alert,"warningFilledBg",z("palette-warning-dark")),Ze(M.Alert,"errorFilledColor",Uu(()=>M.getContrastText(M.error.dark))),Ze(M.Alert,"infoFilledColor",Uu(()=>M.getContrastText(M.info.dark))),Ze(M.Alert,"successFilledColor",Uu(()=>M.getContrastText(M.success.dark))),Ze(M.Alert,"warningFilledColor",Uu(()=>M.getContrastText(M.warning.dark))),Ze(M.Alert,"errorStandardBg",G(Jr,M.error.light,.9)),Ze(M.Alert,"infoStandardBg",G(Jr,M.info.light,.9)),Ze(M.Alert,"successStandardBg",G(Jr,M.success.light,.9)),Ze(M.Alert,"warningStandardBg",G(Jr,M.warning.light,.9)),Ze(M.Alert,"errorIconColor",z("palette-error-main")),Ze(M.Alert,"infoIconColor",z("palette-info-main")),Ze(M.Alert,"successIconColor",z("palette-success-main")),Ze(M.Alert,"warningIconColor",z("palette-warning-main")),Ze(M.AppBar,"defaultBg",z("palette-grey-900")),Ze(M.AppBar,"darkBg",z("palette-background-paper")),Ze(M.AppBar,"darkColor",z("palette-text-primary")),Ze(M.Avatar,"defaultBg",z("palette-grey-600")),Ze(M.Button,"inheritContainedBg",z("palette-grey-800")),Ze(M.Button,"inheritContainedHoverBg",z("palette-grey-700")),Ze(M.Chip,"defaultBorder",z("palette-grey-700")),Ze(M.Chip,"defaultAvatarColor",z("palette-grey-300")),Ze(M.Chip,"defaultIconColor",z("palette-grey-300")),Ze(M.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),Ze(M.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),Ze(M.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),Ze(M.LinearProgress,"primaryBg",G(Jr,M.primary.main,.5)),Ze(M.LinearProgress,"secondaryBg",G(Jr,M.secondary.main,.5)),Ze(M.LinearProgress,"errorBg",G(Jr,M.error.main,.5)),Ze(M.LinearProgress,"infoBg",G(Jr,M.info.main,.5)),Ze(M.LinearProgress,"successBg",G(Jr,M.success.main,.5)),Ze(M.LinearProgress,"warningBg",G(Jr,M.warning.main,.5)),Ze(M.Skeleton,"bg",R?G(ug,M.text.primary,.13):`rgba(${z("palette-text-primaryChannel")} / 0.13)`),Ze(M.Slider,"primaryTrack",G(Jr,M.primary.main,.5)),Ze(M.Slider,"secondaryTrack",G(Jr,M.secondary.main,.5)),Ze(M.Slider,"errorTrack",G(Jr,M.error.main,.5)),Ze(M.Slider,"infoTrack",G(Jr,M.info.main,.5)),Ze(M.Slider,"successTrack",G(Jr,M.success.main,.5)),Ze(M.Slider,"warningTrack",G(Jr,M.warning.main,.5));const Y=R?G(ei,M.background.default,.985):zE(M.background.default,.98);Ze(M.SnackbarContent,"bg",Y),Ze(M.SnackbarContent,"color",Uu(()=>R?yae.text.primary:M.getContrastText(Y))),Ze(M.SpeedDialAction,"fabHoverBg",zE(M.background.paper,.15)),Ze(M.StepConnector,"border",z("palette-grey-600")),Ze(M.StepContent,"border",z("palette-grey-600")),Ze(M.Switch,"defaultColor",z("palette-grey-300")),Ze(M.Switch,"defaultDisabledColor",z("palette-grey-600")),Ze(M.Switch,"primaryDisabledColor",G(Jr,M.primary.main,.55)),Ze(M.Switch,"secondaryDisabledColor",G(Jr,M.secondary.main,.55)),Ze(M.Switch,"errorDisabledColor",G(Jr,M.error.main,.55)),Ze(M.Switch,"infoDisabledColor",G(Jr,M.info.main,.55)),Ze(M.Switch,"successDisabledColor",G(Jr,M.success.main,.55)),Ze(M.Switch,"warningDisabledColor",G(Jr,M.warning.main,.55)),Ze(M.TableCell,"border",G(Jr,G(ug,M.divider,1),.68)),Ze(M.Tooltip,"bg",G(ug,M.grey[700],.92))}Zd(M.background,"default"),Zd(M.background,"paper"),Zd(M.common,"background"),Zd(M.common,"onBackground"),Zd(M,"divider"),Object.keys(M).forEach(Y=>{const H=M[Y];Y!=="tonalOffset"&&H&&typeof H=="object"&&(H.main&&Ze(M[Y],"mainChannel",A0(R0(H.main))),H.light&&Ze(M[Y],"lightChannel",A0(R0(H.light))),H.dark&&Ze(M[Y],"darkChannel",A0(R0(H.dark))),H.contrastText&&Ze(M[Y],"contrastTextChannel",A0(R0(H.contrastText))),Y==="text"&&(Zd(M[Y],"primary"),Zd(M[Y],"secondary")),Y==="action"&&(H.active&&Zd(M[Y],"active"),H.selected&&Zd(M[Y],"selected")))})}),O=e.reduce((j,M)=>uo(j,M),O);const N={prefix:a,disableCssColorScheme:i,shouldSkipGeneratingVar:s,getSelector:cEe(O),enableContrastVars:o},{vars:k,generateThemeVars:D,generateStyleSheets:P}=fxe(O,N);return O.vars=k,Object.entries(O.colorSchemes[O.defaultColorScheme]).forEach(([j,M])=>{O[j]=M}),O.generateThemeVars=D,O.generateStyleSheets=P,O.generateSpacing=function(){return iae(c.spacing,rA(this))},O.getColorSchemeSelector=pxe(l),O.spacing=O.generateSpacing(),O.shouldSkipGeneratingVar=s,O.unstable_sxConfig={...vS,...c?.unstable_sxConfig},O.unstable_sx=function(M){return ah({sx:M,theme:this})},O.toRuntimeSource=Cae,O}function H$(t,e,n){t.colorSchemes&&n&&(t.colorSchemes[e]={...n!==!0&&n,palette:a9({...n===!0?{}:n.palette,mode:e})})}function Ug(t={},...e){const{palette:n,cssVariables:r=!1,colorSchemes:i=n?void 0:{light:!0},defaultColorScheme:a=n?.mode,...o}=t,s=a||"light",l=i?.[s],u={...i,...n?{[s]:{...typeof l!="boolean"&&l,palette:n}}:void 0};if(r===!1){if(!("colorSchemes"in t))return rk(t,...e);let c=n;"palette"in t||u[s]&&(u[s]!==!0?c=u[s].palette:s==="dark"&&(c={mode:"dark"}));const f=rk({...t,palette:c},...e);return f.defaultColorScheme=s,f.colorSchemes=u,f.palette.mode==="light"&&(f.colorSchemes.light={...u.light!==!0&&u.light,palette:f.palette},H$(f,"dark",u.dark)),f.palette.mode==="dark"&&(f.colorSchemes.dark={...u.dark!==!0&&u.dark,palette:f.palette},H$(f,"light",u.light)),f}return!n&&!("light"in u)&&s==="light"&&(u.light=!0),pEe({...o,colorSchemes:u,defaultColorScheme:s,...typeof r!="boolean"&&r},...e)}function hEe(t){return String(t).match(/[\d.\-+]*\s*(.*)/)[1]||""}function gEe(t){return parseFloat(t)}const o9=Ug();function or(){const t=SS(o9);return t[sd]||t}function s9(t){return t!=="ownerState"&&t!=="theme"&&t!=="sx"&&t!=="as"}const ja=t=>s9(t)&&t!=="classes",fe=uae({themeId:sd,defaultTheme:o9,rootShouldForwardProp:ja});function mEe({theme:t,...e}){const n=sd in t?t[sd]:void 0;return d.jsx(bae,{...e,themeId:n?sd:void 0,theme:n||t})}const HE={colorSchemeStorageKey:"mui-color-scheme",defaultLightColorScheme:"light",defaultDarkColorScheme:"dark",modeStorageKey:"mui-mode"},{CssVarsProvider:bEe}=lxe({themeId:sd,theme:()=>Ug({cssVariables:!0}),colorSchemeStorageKey:HE.colorSchemeStorageKey,modeStorageKey:HE.modeStorageKey,defaultColorScheme:{light:HE.defaultLightColorScheme,dark:HE.defaultDarkColorScheme},resolveTheme:t=>{const e={...t,typography:xae(t.palette,t.typography)};return e.unstable_sx=function(r){return ah({sx:r,theme:this})},e}}),_Ee=bEe;function vEe({theme:t,...e}){const n=E.useMemo(()=>{if(typeof t=="function")return t;const r=sd in t?t[sd]:t;return"colorSchemes"in r?null:"vars"in r?t:{...t,vars:null}},[t]);return n?d.jsx(mEe,{theme:n,...e}):d.jsx(_Ee,{theme:t,...e})}var $$="popstate";function yEe(t={}){function e(r,i){let{pathname:a,search:o,hash:s}=r.location;return ak("",{pathname:a,search:o,hash:s},i.state&&i.state.usr||null,i.state&&i.state.key||"default")}function n(r,i){return typeof i=="string"?i:vy(i)}return xEe(e,n,null,t)}function $i(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function hu(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function SEe(){return Math.random().toString(36).substring(2,10)}function G$(t,e){return{usr:t.state,key:t.key,idx:e}}function ak(t,e,n=null,r){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?x_(e):e,state:n,key:e&&e.key||r||SEe()}}function vy({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function x_(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substring(r),t=t.substring(0,r)),t&&(e.pathname=t)}return e}function xEe(t,e,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s="POP",l=null,u=c();u==null&&(u=0,o.replaceState({...o.state,idx:u},""));function c(){return(o.state||{idx:null}).idx}function f(){s="POP";let y=c(),x=y==null?null:y-u;u=y,l&&l({action:s,location:_.location,delta:x})}function h(y,x){s="PUSH";let C=ak(_.location,y,x);u=c()+1;let A=G$(C,u),R=_.createHref(C);try{o.pushState(A,"",R)}catch(I){if(I instanceof DOMException&&I.name==="DataCloneError")throw I;i.location.assign(R)}a&&l&&l({action:s,location:_.location,delta:1})}function m(y,x){s="REPLACE";let C=ak(_.location,y,x);u=c();let A=G$(C,u),R=_.createHref(C);o.replaceState(A,"",R),a&&l&&l({action:s,location:_.location,delta:0})}function b(y){return EEe(y)}let _={get action(){return s},get location(){return t(i,o)},listen(y){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener($$,f),l=y,()=>{i.removeEventListener($$,f),l=null}},createHref(y){return e(i,y)},createURL:b,encodeLocation(y){let x=b(y);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:h,replace:m,go(y){return o.go(y)}};return _}function EEe(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),$i(n,"No window.location.(origin|href) available to create URL");let r=typeof t=="string"?t:vy(t);return r=r.replace(/ $/,"%20"),!e&&r.startsWith("//")&&(r=n+r),new URL(r,n)}function Aae(t,e,n="/"){return CEe(t,e,n,!1)}function CEe(t,e,n,r){let i=typeof e=="string"?x_(e):e,a=Of(i.pathname||"/",n);if(a==null)return null;let o=Rae(t);wEe(o);let s=null;for(let l=0;s==null&&l{let c={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:s,route:o};if(c.relativePath.startsWith("/")){if(!c.relativePath.startsWith(r)&&l)return;$i(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let f=_f([r,c.relativePath]),h=n.concat(c);o.children&&o.children.length>0&&($i(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),Rae(o.children,e,h,f,l)),!(o.path==null&&!o.index)&&e.push({path:f,score:MEe(f,o.index),routesMeta:h})};return t.forEach((o,s)=>{if(o.path===""||!o.path?.includes("?"))a(o,s);else for(let l of Oae(o.path))a(o,s,!0,l)}),e}function Oae(t){let e=t.split("/");if(e.length===0)return[];let[n,...r]=e,i=n.endsWith("?"),a=n.replace(/\?$/,"");if(r.length===0)return i?[a,""]:[a];let o=Oae(r.join("/")),s=[];return s.push(...o.map(l=>l===""?a:[a,l].join("/"))),i&&s.push(...o),s.map(l=>t.startsWith("/")&&l===""?"/":l)}function wEe(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:DEe(e.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var TEe=/^:[\w-]+$/,AEe=3,REe=2,OEe=1,IEe=10,NEe=-2,V$=t=>t==="*";function MEe(t,e){let n=t.split("/"),r=n.length;return n.some(V$)&&(r+=NEe),e&&(r+=REe),n.filter(i=>!V$(i)).reduce((i,a)=>i+(TEe.test(a)?AEe:a===""?OEe:IEe),r)}function DEe(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 PEe(t,e,n=!1){let{routesMeta:r}=t,i={},a="/",o=[];for(let s=0;s{if(c==="*"){let b=s[h]||"";o=a.slice(0,a.length-b.length).replace(/(.)\/+$/,"$1")}const m=s[h];return f&&!m?u[c]=void 0:u[c]=(m||"").replace(/%2F/g,"/"),u},{}),pathname:a,pathnameBase:o,pattern:t}}function kEe(t,e=!1,n=!0){hu(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,(o,s,l)=>(r.push({paramName:s,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(r.push({paramName:"*"}),i+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":t!==""&&t!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,e?void 0:"i"),r]}function LEe(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return hu(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function Of(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)||"/"}var BEe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function FEe(t,e="/"){let{pathname:n,search:r="",hash:i=""}=typeof t=="string"?x_(t):t,a;return n?(n=n.replace(/\/\/+/g,"/"),n.startsWith("/")?a=Y$(n.substring(1),"/"):a=Y$(n,e)):a=e,{pathname:a,search:zEe(r),hash:HEe(i)}}function Y$(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function NI(t,e,n,r){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function jEe(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function l9(t){let e=jEe(t);return e.map((n,r)=>r===e.length-1?n.pathname:n.pathnameBase)}function c9(t,e,n,r=!1){let i;typeof t=="string"?i=x_(t):(i={...t},$i(!i.pathname||!i.pathname.includes("?"),NI("?","pathname","search",i)),$i(!i.pathname||!i.pathname.includes("#"),NI("#","pathname","hash",i)),$i(!i.search||!i.search.includes("#"),NI("#","search","hash",i)));let a=t===""||i.pathname==="",o=a?"/":i.pathname,s;if(o==null)s=n;else{let f=e.length-1;if(!r&&o.startsWith("..")){let h=o.split("/");for(;h[0]==="..";)h.shift(),f-=1;i.pathname=h.join("/")}s=f>=0?e[f]:"/"}let l=FEe(i,s),u=o&&o!=="/"&&o.endsWith("/"),c=(a||o===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(u||c)&&(l.pathname+="/"),l}var _f=t=>t.join("/").replace(/\/\/+/g,"/"),UEe=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),zEe=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,HEe=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,$Ee=class{constructor(t,e,n,r=!1){this.status=t,this.statusText=e||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function GEe(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function VEe(t){return t.map(e=>e.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Iae=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Nae(t,e){let n=t;if(typeof n!="string"||!BEe.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Iae)try{let a=new URL(window.location.href),o=n.startsWith("//")?new URL(a.protocol+n):new URL(n),s=Of(o.pathname,e);o.origin===a.origin&&s!=null?n=s+o.search+o.hash:i=!0}catch{hu(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Mae=["POST","PUT","PATCH","DELETE"];new Set(Mae);var YEe=["GET",...Mae];new Set(YEe);var E_=E.createContext(null);E_.displayName="DataRouter";var fA=E.createContext(null);fA.displayName="DataRouterState";var WEe=E.createContext(!1),Dae=E.createContext({isTransitioning:!1});Dae.displayName="ViewTransition";var qEe=E.createContext(new Map);qEe.displayName="Fetchers";var KEe=E.createContext(null);KEe.displayName="Await";var Bl=E.createContext(null);Bl.displayName="Navigation";var ES=E.createContext(null);ES.displayName="Location";var xu=E.createContext({outlet:null,matches:[],isDataRoute:!1});xu.displayName="Route";var u9=E.createContext(null);u9.displayName="RouteError";var Pae="REACT_ROUTER_ERROR",XEe="REDIRECT",QEe="ROUTE_ERROR_RESPONSE";function ZEe(t){if(t.startsWith(`${Pae}:${XEe}:{`))try{let e=JSON.parse(t.slice(28));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.location=="string"&&typeof e.reloadDocument=="boolean"&&typeof e.replace=="boolean")return e}catch{}}function JEe(t){if(t.startsWith(`${Pae}:${QEe}:{`))try{let e=JSON.parse(t.slice(40));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string")return new $Ee(e.status,e.statusText,e.data)}catch{}}function e2e(t,{relative:e}={}){$i(C_(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:r}=E.useContext(Bl),{hash:i,pathname:a,search:o}=CS(t,{relative:e}),s=a;return n!=="/"&&(s=a==="/"?n:_f([n,a])),r.createHref({pathname:s,search:o,hash:i})}function C_(){return E.useContext(ES)!=null}function Ka(){return $i(C_(),"useLocation() may be used only in the context of a component."),E.useContext(ES).location}var kae="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Lae(t){E.useContext(Bl).static||E.useLayoutEffect(t)}function rl(){let{isDataRoute:t}=E.useContext(xu);return t?p2e():t2e()}function t2e(){$i(C_(),"useNavigate() may be used only in the context of a component.");let t=E.useContext(E_),{basename:e,navigator:n}=E.useContext(Bl),{matches:r}=E.useContext(xu),{pathname:i}=Ka(),a=JSON.stringify(l9(r)),o=E.useRef(!1);return Lae(()=>{o.current=!0}),E.useCallback((l,u={})=>{if(hu(o.current,kae),!o.current)return;if(typeof l=="number"){n.go(l);return}let c=c9(l,JSON.parse(a),i,u.relative==="path");t==null&&e!=="/"&&(c.pathname=c.pathname==="/"?e:_f([e,c.pathname])),(u.replace?n.replace:n.push)(c,u.state,u)},[e,n,a,i,t])}E.createContext(null);function pA(){let{matches:t}=E.useContext(xu),e=t[t.length-1];return e?e.params:{}}function CS(t,{relative:e}={}){let{matches:n}=E.useContext(xu),{pathname:r}=Ka(),i=JSON.stringify(l9(n));return E.useMemo(()=>c9(t,JSON.parse(i),r,e==="path"),[t,i,r,e])}function n2e(t,e){return Bae(t,e)}function Bae(t,e,n,r,i){$i(C_(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=E.useContext(Bl),{matches:o}=E.useContext(xu),s=o[o.length-1],l=s?s.params:{},u=s?s.pathname:"/",c=s?s.pathnameBase:"/",f=s&&s.route;{let C=f&&f.path||"";jae(u,!f||C.endsWith("*")||C.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${u}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let h=Ka(),m;if(e){let C=typeof e=="string"?x_(e):e;$i(c==="/"||C.pathname?.startsWith(c),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${C.pathname}" was given in the \`location\` prop.`),m=C}else m=h;let b=m.pathname||"/",_=b;if(c!=="/"){let C=c.replace(/^\//,"").split("/");_="/"+b.replace(/^\//,"").split("/").slice(C.length).join("/")}let y=Aae(t,{pathname:_});hu(f||y!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),hu(y==null||y[y.length-1].route.element!==void 0||y[y.length-1].route.Component!==void 0||y[y.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let x=s2e(y&&y.map(C=>Object.assign({},C,{params:Object.assign({},l,C.params),pathname:_f([c,a.encodeLocation?a.encodeLocation(C.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:C.pathname]),pathnameBase:C.pathnameBase==="/"?c:_f([c,a.encodeLocation?a.encodeLocation(C.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:C.pathnameBase])})),o,n,r,i);return e&&x?E.createElement(ES.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...m},navigationType:"POP"}},x):x}function r2e(){let t=f2e(),e=GEe(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r},a={padding:"2px 4px",backgroundColor:r},o=null;return console.error("Error handled by React Router default ErrorBoundary:",t),o=E.createElement(E.Fragment,null,E.createElement("p",null,"💿 Hey developer 👋"),E.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",E.createElement("code",{style:a},"ErrorBoundary")," or"," ",E.createElement("code",{style:a},"errorElement")," prop on your route.")),E.createElement(E.Fragment,null,E.createElement("h2",null,"Unexpected Application Error!"),E.createElement("h3",{style:{fontStyle:"italic"}},e),n?E.createElement("pre",{style:i},n):null,o)}var i2e=E.createElement(r2e,null),Fae=class extends E.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=JEe(t.digest);n&&(t=n)}let e=t!==void 0?E.createElement(xu.Provider,{value:this.props.routeContext},E.createElement(u9.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?E.createElement(a2e,{error:t},e):e}};Fae.contextType=WEe;var MI=new WeakMap;function a2e({children:t,error:e}){let{basename:n}=E.useContext(Bl);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let r=ZEe(e.digest);if(r){let i=MI.get(e);if(i)throw i;let a=Nae(r.location,n);if(Iae&&!MI.get(e))if(a.isExternal||r.reloadDocument)window.location.href=a.absoluteURL||a.to;else{const o=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:r.replace}));throw MI.set(e,o),o}return E.createElement("meta",{httpEquiv:"refresh",content:`0;url=${a.absoluteURL||a.to}`})}}return t}function o2e({routeContext:t,match:e,children:n}){let r=E.useContext(E_);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),E.createElement(xu.Provider,{value:t},n)}function s2e(t,e=[],n=null,r=null,i=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let a=t,o=n?.errors;if(o!=null){let c=a.findIndex(f=>f.route.id&&o?.[f.route.id]!==void 0);$i(c>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),a=a.slice(0,Math.min(a.length,c+1))}let s=!1,l=-1;if(n)for(let c=0;c=0?a=a.slice(0,l+1):a=[a[0]];break}}}let u=n&&r?(c,f)=>{r(c,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:VEe(n.matches),errorInfo:f})}:void 0;return a.reduceRight((c,f,h)=>{let m,b=!1,_=null,y=null;n&&(m=o&&f.route.id?o[f.route.id]:void 0,_=f.route.errorElement||i2e,s&&(l<0&&h===0?(jae("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),b=!0,y=null):l===h&&(b=!0,y=f.route.hydrateFallbackElement||null)));let x=e.concat(a.slice(0,h+1)),C=()=>{let A;return m?A=_:b?A=y:f.route.Component?A=E.createElement(f.route.Component,null):f.route.element?A=f.route.element:A=c,E.createElement(o2e,{match:f,routeContext:{outlet:c,matches:x,isDataRoute:n!=null},children:A})};return n&&(f.route.ErrorBoundary||f.route.errorElement||h===0)?E.createElement(Fae,{location:n.location,revalidation:n.revalidation,component:_,error:m,children:C(),routeContext:{outlet:null,matches:x,isDataRoute:!0},onError:u}):C()},null)}function d9(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function l2e(t){let e=E.useContext(E_);return $i(e,d9(t)),e}function c2e(t){let e=E.useContext(fA);return $i(e,d9(t)),e}function u2e(t){let e=E.useContext(xu);return $i(e,d9(t)),e}function f9(t){let e=u2e(t),n=e.matches[e.matches.length-1];return $i(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function d2e(){return f9("useRouteId")}function f2e(){let t=E.useContext(u9),e=c2e("useRouteError"),n=f9("useRouteError");return t!==void 0?t:e.errors?.[n]}function p2e(){let{router:t}=l2e("useNavigate"),e=f9("useNavigate"),n=E.useRef(!1);return Lae(()=>{n.current=!0}),E.useCallback(async(i,a={})=>{hu(n.current,kae),n.current&&(typeof i=="number"?await t.navigate(i):await t.navigate(i,{fromRouteId:e,...a}))},[t,e])}var W$={};function jae(t,e,n){!e&&!W$[t]&&(W$[t]=!0,hu(!1,n))}E.memo(h2e);function h2e({routes:t,future:e,state:n,onError:r}){return Bae(t,void 0,n,r,e)}function yl({to:t,replace:e,state:n,relative:r}){$i(C_()," may be used only in the context of a component.");let{static:i}=E.useContext(Bl);hu(!i," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:a}=E.useContext(xu),{pathname:o}=Ka(),s=rl(),l=c9(t,l9(a),o,r==="path"),u=JSON.stringify(l);return E.useEffect(()=>{s(JSON.parse(u),{replace:e,state:n,relative:r})},[s,u,r,e,n]),null}function Qt(t){$i(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function g2e({basename:t="/",children:e=null,location:n,navigationType:r="POP",navigator:i,static:a=!1,unstable_useTransitions:o}){$i(!C_(),"You cannot render a inside another . You should never have more than one in your app.");let s=t.replace(/^\/*/,"/"),l=E.useMemo(()=>({basename:s,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[s,i,a,o]);typeof n=="string"&&(n=x_(n));let{pathname:u="/",search:c="",hash:f="",state:h=null,key:m="default"}=n,b=E.useMemo(()=>{let _=Of(u,s);return _==null?null:{location:{pathname:_,search:c,hash:f,state:h,key:m},navigationType:r}},[s,u,c,f,h,m,r]);return hu(b!=null,` is not able to match the URL "${u}${c}${f}" because it does not start with the basename, so the won't render anything.`),b==null?null:E.createElement(Bl.Provider,{value:l},E.createElement(ES.Provider,{children:e,value:b}))}function p9({children:t,location:e}){return n2e(ok(t),e)}function ok(t,e=[]){let n=[];return E.Children.forEach(t,(r,i)=>{if(!E.isValidElement(r))return;let a=[...e,i];if(r.type===E.Fragment){n.push.apply(n,ok(r.props.children,a));return}$i(r.type===Qt,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),$i(!r.props.index||!r.props.children,"An index route cannot have child routes.");let o={id:r.props.id||a.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(o.children=ok(r.props.children,a)),n.push(o)}),n}var oC="get",sC="application/x-www-form-urlencoded";function hA(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function m2e(t){return hA(t)&&t.tagName.toLowerCase()==="button"}function b2e(t){return hA(t)&&t.tagName.toLowerCase()==="form"}function _2e(t){return hA(t)&&t.tagName.toLowerCase()==="input"}function v2e(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function y2e(t,e){return t.button===0&&(!e||e==="_self")&&!v2e(t)}var $E=null;function S2e(){if($E===null)try{new FormData(document.createElement("form"),0),$E=!1}catch{$E=!0}return $E}var x2e=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function DI(t){return t!=null&&!x2e.has(t)?(hu(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${sC}"`),null):t}function E2e(t,e){let n,r,i,a,o;if(b2e(t)){let s=t.getAttribute("action");r=s?Of(s,e):null,n=t.getAttribute("method")||oC,i=DI(t.getAttribute("enctype"))||sC,a=new FormData(t)}else if(m2e(t)||_2e(t)&&(t.type==="submit"||t.type==="image")){let s=t.form;if(s==null)throw new Error('Cannot submit a + setOpen(false)} + anchorOrigin={{ vertical: 'top', horizontal: 'right' }} + > + setOpen(false)} severity="success" sx={{ width: '100%' }}> + This is a success message! + + + + ); + `}),d.jsx(ce,{py:1,children:d.jsx(oe,{variant:"caption",children:"For more API information refer to the library documentation"})})]})]})})})}),d.jsxs(re,{container:!0,spacing:3,sx:{mt:1},children:[d.jsx(re,{size:{xs:12,md:6,lg:4},children:d.jsxs(et,{title:"Contained Notifications",disableWidgetMenu:!0,children:[d.jsx(ro,{className:t.notificationItem,shadowless:!0,type:"message",message:"Thanks for Checking out Messenger",variant:"contained",color:"secondary"}),d.jsx(ro,{className:t.notificationItem,shadowless:!0,type:"feedback",message:"New user feedback received",variant:"contained",color:"primary"}),d.jsx(ro,{className:t.notificationItem,shadowless:!0,type:"customer",message:"New customer is registered",variant:"contained",color:"success"}),d.jsx(ro,{className:t.notificationItem,shadowless:!0,type:"shipped",message:"The order was shipped",variant:"contained",color:"warning"}),d.jsx(ro,{className:t.notificationItem,shadowless:!0,type:"delivered",message:"The order was delivered",variant:"contained",color:"primary"}),d.jsx(ro,{className:t.notificationItem,shadowless:!0,type:"defence",message:"5 Defence alerts",variant:"contained",color:"info"})]})}),d.jsx(re,{size:{xs:12,md:6,lg:4},children:d.jsxs(et,{title:"Default Notifications",disableWidgetMenu:!0,children:[d.jsx(ro,{className:t.notificationItem,type:"report",message:"New report has been received",color:"secondary"}),d.jsx(ro,{className:t.notificationItem,type:"feedback",message:"New user feedback received",color:"primary"}),d.jsx(ro,{className:t.notificationItem,type:"shipped",message:"The item was shipped",color:"success"}),d.jsx(ro,{className:t.notificationItem,type:"message",message:"The new message from user @nahawaii",color:"warning"}),d.jsx(ro,{className:t.notificationItem,type:"upload",message:"Your file is ready to upload",color:"primary"}),d.jsx(ro,{className:t.notificationItem,type:"disc",message:"The disc is full",color:"info"})]})}),d.jsx(re,{size:{xs:12,md:6,lg:4},children:d.jsxs(et,{title:"Rounded Notifications",disableWidgetMenu:!0,children:[d.jsx(ro,{className:t.notificationItem,type:"report",message:"New report has been received",variant:"rounded",color:"secondary"}),d.jsx(ro,{className:t.notificationItem,type:"feedback",message:"New user feedback received",variant:"rounded",color:"primary"}),d.jsx(ro,{className:t.notificationItem,type:"shipped",message:"The item was shipped",variant:"rounded",color:"success"}),d.jsx(ro,{className:t.notificationItem,type:"message",message:"The new message from user @nahawaii",variant:"rounded",color:"warning"}),d.jsx(ro,{className:t.notificationItem,type:"upload",message:"Your file is ready to upload",variant:"rounded",color:"primary"}),d.jsx(ro,{className:t.notificationItem,type:"disc",message:"The disc is full",variant:"rounded",color:"info"})]})})]}),d.jsx(qae,{anchorOrigin:{vertical:a,horizontal:o},open:s,onClose:u,children:d.jsx(Xae,{onClose:u,severity:e.type,sx:{width:"100%"},children:e.message})},a+o)]})}const Dmt=Zt(t=>({root:{flexGrow:1},menuButton:{marginRight:t.spacing(2)},title:{flexGrow:1},wrapFix:{whiteSpace:"pre"},paper:{margin:t.spacing(3),padding:10,backgroundColor:"#f3f3f3"},grow:{flexGrow:1},search:{position:"relative",borderRadius:25,paddingLeft:t.spacing(2.5),width:36,backgroundColor:Ss(t.palette.common.black,0),transition:t.transitions.create(["background-color","width"]),"&:hover":{cursor:"pointer",backgroundColor:Ss(t.palette.common.black,.08)}},searchFocused:{backgroundColor:Ss(t.palette.common.black,.08),width:"100%",[t.breakpoints.up("md")]:{width:250}},searchIcon:{width:36,right:0,height:"100%",position:"absolute",display:"flex",alignItems:"center",justifyContent:"center",transition:t.transitions.create("right"),"&:hover":{cursor:"pointer"}},searchIconOpened:{right:t.spacing(1.25)},headerIcon:{fontSize:28,color:"rgba(255, 255, 255, 0.35)"},inputRoot:{color:"inherit",width:"100%"},inputInput:{height:36,padding:0,paddingRight:36+t.spacing(1.25),width:"100%"}}));function Pmt(){const[t,e]=Ue.useState(null),n=!!t;function r(l){e(l.currentTarget)}function i(){e(null)}const[a,o]=E.useState(!1),s=Dmt();return d.jsx("div",{children:d.jsxs(re,{container:!0,spacing:6,children:[d.jsx(re,{size:{md:6},children:d.jsxs(et,{title:"Navbar Example",disableWidgetMenu:!0,children:[d.jsx(oe,{children:"App bar displays yours app links by importing and inserting AppBar component. To swap links style add attribute within Button component."}),d.jsx("div",{className:s.root,children:d.jsx(ce,{my:3,children:d.jsx(qI,{position:"static",children:d.jsxs(dd,{children:[d.jsx(pn,{edge:"start",className:s.menuButton,color:"inherit","aria-label":"menu",children:d.jsx(Mb,{})}),d.jsx(oe,{variant:"h6",className:s.title,children:"Navbar"}),d.jsx(tr,{color:"inherit",children:"Link"}),d.jsx(tr,{color:"inherit",children:"Link2"}),d.jsx(tr,{color:"inherit",children:"Another Link"}),d.jsx(tr,{disabled:!0,children:"Disabled Link"})]})})})}),d.jsx(oe,{children:"With menu"}),d.jsx(ce,{my:3,children:d.jsx(qI,{position:"static",color:"secondary",children:d.jsxs(dd,{children:[d.jsx(pn,{edge:"start",className:s.menuButton,color:"inherit","aria-label":"menu",children:d.jsx(Mb,{})}),d.jsx(oe,{variant:"h6",className:s.title,children:"Navbar menu"}),d.jsx(pn,{"aria-label":"account of current user","aria-controls":"menu-appbar","aria-haspopup":"true",onClick:r,color:"inherit",children:d.jsx(AA,{})}),d.jsxs(Fm,{id:"menu-appbar",anchorEl:t,anchorOrigin:{vertical:"top",horizontal:"right"},keepMounted:!0,transformOrigin:{vertical:"top",horizontal:"right"},open:n,onClose:i,children:[d.jsx($t,{onClick:i,children:"Profile"}),d.jsx($t,{onClick:i,children:"My account"})]})]})})})]})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsxs(et,{title:"Navbar Search",disableWidgetMenu:!0,inheritHeight:!0,children:[d.jsx(oe,{children:"Search icon makes UX more flexible. To start using search icon, make sure you got all relative functions."}),d.jsx("div",{className:s.root,children:d.jsx(ce,{mt:3,children:d.jsx(qI,{position:"static",color:"warning",children:d.jsxs(dd,{children:[d.jsx(pn,{edge:"start",className:s.menuButton,color:"inherit","aria-label":"menu",children:d.jsx(Mb,{})}),d.jsx(oe,{variant:"h6",className:s.title,children:"Navbar search"}),d.jsx("div",{className:s.grow}),d.jsxs("div",{className:Nt(s.search,{[s.searchFocused]:a}),children:[d.jsx("div",{className:Nt(s.searchIcon,{[s.searchIconOpened]:a}),onClick:()=>o(!a),children:d.jsx(W9,{classes:{root:s.headerIcon}})}),d.jsx(T_,{placeholder:"Search",classes:{root:s.inputRoot,input:s.inputInput}})]})]})})})})]})})]})})}const kmt=Zt(t=>({button:{boxShadow:t.customShadows.widget,color:t.palette.text.primary,margin:t.spacing(1),"&:hover":{boxShadow:t.customShadows.widgetWide}},buttonWhite:{color:"white"},typography:{padding:t.spacing(2)}})),Lmt=(t,e)=>{switch(e.type){case"OPEN_TOOLTIP":return{...t,tooltipOpened:!0};case"CLOSE_TOOLTIP":return{...t,tooltipOpened:!1};case"OPEN_POPOVER":return{...t,togglePopover:!0,popoverSibling:e.setSibling};case"CLOSE_POPOVER":return{...t,togglePopover:!1,popoverSibling:null};case"OPEN_HOVER_POPOVER":return{...t,toggleHoverPopover:!0,hoverPopoverSibling:e.setHoverPopoverSibling};case"CLOSE_HOVER_POPOVER":return{...t,toggleHoverPopover:!1,hoverPopoverSibling:null};case"OPEN_TOP_TOOLTIP":return{...t,toggleTopTooltip:!0};case"CLOSE_TOP_TOOLTIP":return{...t,toggleTopTooltip:!1};case"OPEN_RIGHT_TOOLTIP":return{...t,toggleRightTooltip:!0};case"CLOSE_RIGHT_TOOLTIP":return{...t,toggleRightTooltip:!1};case"OPEN_BOTTOM_TOOLTIP":return{...t,toggleBottomTooltip:!0};case"CLOSE_BOTTOM_TOOLTIP":return{...t,toggleBottomTooltip:!1};case"OPEN_LEFT_TOOLTIP":return{...t,toggleLeftTooltip:!0};case"CLOSE_LEFT_TOOLTIP":return{...t,toggleLeftTooltip:!1};case"OPEN_TOP_POPOVER":return{...t,toggleTopPopover:!0,topPopoverSibling:e.setTopPopoverSibling};case"CLOSE_TOP_POPOVER":return{...t,toggleTopPopover:!1,topPopoverSibling:null};case"OPEN_RIGHT_POPOVER":return{...t,toggleRightPopover:!0,rightPopoverSibling:e.setRightPopoverSibling};case"CLOSE_RIGHT_POPOVER":return{...t,toggleRightPopover:!1,rightPopoverSibling:null};case"OPEN_BOTTOM_POPOVER":return{...t,toggleBottomPopover:!0,bottomPopoverSibling:e.setBottomPopoverSibling};case"CLOSE_BOTTOM_POPOVER":return{...t,toggleBottomPopover:!1,bottomPopoverSibling:null};case"OPEN_LEFT_POPOVER":return{...t,toggleLeftPopover:!0,leftPopoverSibling:e.setLeftPopoverSibling};case"CLOSE_LEFT_POPOVER":return{...t,toggleLeftPopover:!1,leftPopoverSibling:null};default:return{}}};function Bmt(){const t=kmt(),[e,n]=Ue.useReducer(Lmt,!1);return d.jsx("div",{children:d.jsxs(re,{container:!0,spacing:3,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Tooltip Example",disableWidgetMenu:!0,inheritHeight:!0,children:d.jsx(re,{container:!0,alignItems:"center",children:d.jsxs(ce,{mt:2,display:"flex",children:[d.jsx(Mg,{onClickAway:()=>n({type:"CLOSE_TOOLTIP"}),children:d.jsx("div",{children:d.jsx(Dp,{placement:"top",color:"primary",PopperProps:{disablePortal:!0},onClose:()=>n({type:"CLOSE_TOOLTIP"}),open:e.tooltipOpened||!1,disableFocusListener:!0,disableHoverListener:!0,disableTouchListener:!0,title:"Add",children:d.jsx(tr,{variant:"contained",color:"primary",onClick:()=>n({type:"OPEN_TOOLTIP"}),className:Nt(t.button,t.buttonWhite),children:"Click to toggle a tooltip"})})})}),d.jsx(Dp,{placement:"top",color:"secondary",disableFocusListener:!0,disableTouchListener:!0,title:"Add",children:d.jsx(tr,{variant:"contained",color:"secondary",className:Nt(t.button,t.buttonWhite),children:"Hover to toggle a tooltip"})})]})})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Popover Example",disableWidgetMenu:!0,children:d.jsxs(ce,{mt:2,width:"100%",children:[" ",d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsxs(re,{children:[d.jsx(tr,{variant:"contained",className:t.button,"aria-describedby":e.togglePopover?"simple-popover":void 0,onClick:r=>n({type:"OPEN_POPOVER",setSibling:r.currentTarget}),children:"Open Popover"}),d.jsx(sf,{id:e.togglePopover?"simple-popover":void 0,open:e.togglePopover||!1,anchorEl:e.popoverSibling,onClose:()=>n({type:"CLOSE_POPOVER"}),anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:d.jsx(oe,{className:t.typography,children:"The content of the Popover."})})]}),d.jsxs(re,{children:[d.jsx(oe,{"aria-owns":e.toggleHoverPopover?"mouse-over-popover":void 0,"aria-haspopup":"true",onMouseEnter:r=>n({type:"OPEN_HOVER_POPOVER",setHoverPopoverSibling:r.currentTarget}),onMouseLeave:()=>n({type:"CLOSE_HOVER_POPOVER"}),children:"Hover with a Popover."}),d.jsx(sf,{id:"mouse-over-popover",open:e.toggleHoverPopover||!1,anchorEl:e.hoverPopoverSibling,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},onClose:()=>n({type:"CLOSE_HOVER_POPOVER"}),disableRestoreFocus:!0,children:d.jsx(oe,{className:t.typography,children:"I use Popover."})})]})]})]})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Tooltip Directions",disableWidgetMenu:!0,children:d.jsxs(ce,{mt:2,display:"flex",children:[d.jsx(Mg,{onClickAway:()=>n({type:"CLOSE_TOP_TOOLTIP"}),children:d.jsx("div",{children:d.jsx(Dp,{placement:"top",color:"primary",PopperProps:{disablePortal:!0},onClose:()=>n({type:"CLOSE_TOP_TOOLTIP"}),open:e.toggleTopTooltip||!1,disableFocusListener:!0,disableHoverListener:!0,disableTouchListener:!0,title:"Add",children:d.jsx(tr,{variant:"contained",color:"primary",onClick:()=>n({type:"OPEN_TOP_TOOLTIP"}),className:Nt(t.button,t.buttonWhite),children:"Tooltip on top"})})})}),d.jsx(Mg,{onClickAway:()=>n({type:"CLOSE_RIGHT_TOOLTIP"}),children:d.jsx("div",{children:d.jsx(Dp,{placement:"right",color:"primary",PopperProps:{disablePortal:!0},onClose:()=>n({type:"CLOSE_RIGHT_TOOLTIP"}),open:e.toggleRightTooltip||!1,disableFocusListener:!0,disableHoverListener:!0,disableTouchListener:!0,title:"Add",children:d.jsx(tr,{variant:"contained",color:"primary",onClick:()=>n({type:"OPEN_RIGHT_TOOLTIP"}),className:Nt(t.button,t.buttonWhite),children:"Tooltip on right"})})})}),d.jsx(Mg,{onClickAway:()=>n({type:"CLOSE_BOTTOM_TOOLTIP"}),children:d.jsx("div",{children:d.jsx(Dp,{placement:"bottom",color:"primary",PopperProps:{disablePortal:!0},onClose:()=>n({type:"CLOSE_BOTTOM_TOOLTIP"}),open:e.toggleBottomTooltip||!1,disableFocusListener:!0,disableHoverListener:!0,disableTouchListener:!0,title:"Add",children:d.jsx(tr,{variant:"contained",color:"primary",onClick:()=>n({type:"OPEN_BOTTOM_TOOLTIP"}),className:Nt(t.button,t.buttonWhite),children:"Tooltip on bottom"})})})}),d.jsx(Mg,{onClickAway:()=>n({type:"CLOSE_LEFT_TOOLTIP"}),children:d.jsx("div",{children:d.jsx(Dp,{placement:"left",color:"primary",PopperProps:{disablePortal:!0},onClose:()=>n({type:"CLOSE_LEFT_TOOLTIP"}),open:e.toggleLeftTooltip||!1,disableFocusListener:!0,disableHoverListener:!0,disableTouchListener:!0,title:"Add",children:d.jsx(tr,{variant:"contained",color:"primary",onClick:()=>n({type:"OPEN_LEFT_TOOLTIP"}),className:Nt(t.button,t.buttonWhite),children:"Tooltip on left"})})})})]})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Popover Directions",disableWidgetMenu:!0,children:d.jsxs(ce,{mt:2,width:"100%",children:[" ",d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsxs(re,{children:[d.jsx(tr,{variant:"contained",className:t.button,"aria-describedby":e.toggleTopPopover?"simple-popover":void 0,onClick:r=>n({type:"OPEN_TOP_POPOVER",setTopPopoverSibling:r.currentTarget}),children:"Popover on top"}),d.jsx(sf,{id:e.toggleTopPopover?"simple-popover":void 0,open:e.toggleTopPopover||!1,anchorEl:e.topPopoverSibling,onClose:()=>n({type:"CLOSE_TOP_POPOVER"}),anchorOrigin:{vertical:"top",horizontal:"center"},transformOrigin:{vertical:"bottom",horizontal:"center"},children:d.jsx(oe,{className:t.typography,children:"The content of the Popover."})})]}),d.jsxs(re,{children:[d.jsx(tr,{variant:"contained",className:t.button,"aria-describedby":e.toggleRightPopover?"simple-popover":void 0,onClick:r=>n({type:"OPEN_RIGHT_POPOVER",setRightPopoverSibling:r.currentTarget}),children:"Popover on right"}),d.jsx(sf,{id:e.toggleRightPopover?"simple-popover":void 0,open:e.toggleRightPopover||!1,anchorEl:e.rightPopoverSibling,onClose:()=>n({type:"CLOSE_RIGHT_POPOVER"}),anchorOrigin:{vertical:"center",horizontal:"right"},transformOrigin:{vertical:"center",horizontal:"left"},children:d.jsx(oe,{className:t.typography,children:"The content of the Popover."})})]}),d.jsxs(re,{children:[d.jsx(tr,{variant:"contained",className:t.button,"aria-describedby":e.toggleBottomPopover?"simple-popover":void 0,onClick:r=>n({type:"OPEN_BOTTOM_POPOVER",setBottomPopoverSibling:r.currentTarget}),children:"Popover on bottom"}),d.jsx(sf,{id:e.toggleBottomPopover?"simple-popover":void 0,open:e.toggleBottomPopover||!1,anchorEl:e.bottomPopoverSibling,onClose:()=>n({type:"CLOSE_BOTTOM_POPOVER"}),anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:d.jsx(oe,{className:t.typography,children:"The content of the Popover."})})]}),d.jsxs(re,{children:[d.jsx(tr,{variant:"contained",className:t.button,"aria-describedby":e.toggleLeftPopover?"simple-popover":void 0,onClick:r=>n({type:"OPEN_LEFT_POPOVER",setLeftPopoverSibling:r.currentTarget}),children:"Popover on left"}),d.jsx(sf,{id:e.toggleLeftPopover?"simple-popover":void 0,open:e.toggleLeftPopover||!1,anchorEl:e.leftPopoverSibling,onClose:()=>n({type:"CLOSE_LEFT_POPOVER"}),anchorOrigin:{vertical:"center",horizontal:"left"},transformOrigin:{vertical:"center",horizontal:"right"},children:d.jsx(oe,{className:t.typography,children:"The content of the Popover."})})]})]})]})})})]})})}const Fmt=Zt(t=>({expansion:{backgroundColor:t.palette.primary.light,color:"white "}}));function J1(t){const{children:e,value:n,index:r,...i}=t;return d.jsx(oe,{component:"div",role:"tabpanel",hidden:n!==r,id:`full-width-tabpanel-${r}`,"aria-labelledby":`full-width-tab-${r}`,...i,children:d.jsx(ce,{p:3,children:e})})}function eb(t){return{id:`full-width-tab-${t}`,"aria-controls":`full-width-tabpanel-${t}`}}function jmt(){const t=Fmt(),[e,n]=Ue.useState(0),[r,i]=Ue.useState(0);function a(s,l){n(l)}function o(s,l){i(l)}return d.jsx("div",{children:d.jsxs(re,{container:!0,spacing:6,children:[d.jsx(re,{size:{md:6},children:d.jsxs(et,{title:"Tabs Example",disableWidgetMenu:!0,inheritHeight:!0,children:[d.jsx(Ro,{position:"static",color:"default",style:{marginTop:10},children:d.jsxs(Na,{value:e,onChange:a,indicatorColor:"primary",textColor:"primary",variant:"fullWidth","aria-label":"full width tabs example",children:[d.jsx(nr,{label:"Item One",...eb(0)}),d.jsx(nr,{label:"Item Two",...eb(1)}),d.jsx(nr,{label:"Item Three",...eb(2)})]})}),d.jsxs(J1,{value:e,index:0,children:["Tabs-enabled widget You will never know exactly how something will go until you try it. You can think three hundred times and still have no precise result. If you see attractive girl all you need to do is to go and ask her to give you her phone. You don’t need to think about HOW it can turn out. All you have to do is to GO and DO IT. It should be super-fast and easy. No hesitation. You ask me: “What to do with these fearful thoughts preventing me from doing that?” The answer is to ignore them, because they can’t disappear immediately. The same thing is for startups and ideas. If you have an idea right away after it appears in your mind you should go and make a first step to implement it.",d.jsxs(ce,{display:"flex",justifyContent:"flex-end",children:[d.jsx(ce,{m:1,children:d.jsx(gt,{variant:"contained",color:"secondary",children:"Cancel"})}),d.jsx(ce,{m:1,children:d.jsx(gt,{variant:"contained",color:"primary",children:"Some button"})})]})]}),d.jsx(J1,{value:e,index:1,children:"Why don't use Lore Ipsum? I think if some one says don't use lore ipsum it's very controversial point. I think the opposite actually. Everyone knows what is lore ipsum - it is easy to understand if text is lore ipsum."}),d.jsx(J1,{value:e,index:2,children:"If you will think too much it will sink in the swamp of never implemented plans and ideas or will just go away or will be implemented by someone else. 5 months of doing everything to achieve nothing. You'll automatically skip - because you know - it's just non-informative stub. But what if there some text like this one?"})]})}),d.jsx(re,{size:{md:6},children:d.jsxs(et,{title:"Icons Tabs",disableWidgetMenu:!0,inheritHeight:!0,children:[d.jsx(Ro,{position:"static",color:"default",style:{marginTop:10},children:d.jsxs(Na,{value:r,onChange:o,indicatorColor:"primary",textColor:"primary",variant:"fullWidth","aria-label":"full width tabs example",children:[d.jsx(nr,{label:"Item One",icon:d.jsx(WI,{}),...eb(0)}),d.jsx(nr,{label:"Item Two",icon:d.jsx(WI,{}),...eb(1)}),d.jsx(nr,{label:"Item Three",icon:d.jsx(WI,{}),...eb(2)})]})}),d.jsxs(J1,{value:r,index:0,children:["Tabs-enabled widget You will never know exactly how something will go until you try it. You can think three hundred times and still have no precise result. If you see attractive girl all you need to do is to go and ask her to give you her phone. You don’t need to think about HOW it can turn out. All you have to do is to GO and DO IT. It should be super-fast and easy. No hesitation. You ask me: “What to do with these fearful thoughts preventing me from doing that?” The answer is to ignore them, because they can’t disappear immediately. The same thing is for startups and ideas. If you have an idea right away after it appears in your mind you should go and make a first step to implement it.",d.jsxs(ce,{display:"flex",justifyContent:"flex-end",children:[d.jsx(ce,{m:1,children:d.jsx(gt,{variant:"contained",color:"secondary",children:"Cancel"})}),d.jsx(ce,{m:1,children:d.jsx(gt,{variant:"contained",color:"primary",children:"Some button"})})]})]}),d.jsx(J1,{value:r,index:1,children:"Why don't use Lore Ipsum? I think if some one says don't use lore ipsum it's very controversial point. I think the opposite actually. Everyone knows what is lore ipsum - it is easy to understand if text is lore ipsum."}),d.jsx(J1,{value:r,index:2,children:"If you will think too much it will sink in the swamp of never implemented plans and ideas or will just go away or will be implemented by someone else. 5 months of doing everything to achieve nothing. You'll automatically skip - because you know - it's just non-informative stub. But what if there some text like this one?"})]})}),d.jsx(re,{size:{md:6},children:d.jsxs(et,{title:"Expansion Panel Example",disableWidgetMenu:!0,inheritHeight:!0,children:[d.jsxs(H1,{children:[d.jsx($1,{expandIcon:d.jsx(lf,{}),"aria-controls":"panel1a-content",id:"panel1a-header",children:d.jsx(oe,{children:"Expansion Panel 1"})}),d.jsx(WE,{children:d.jsx(oe,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget."})})]}),d.jsxs(H1,{children:[d.jsx($1,{expandIcon:d.jsx(lf,{}),"aria-controls":"panel2a-content",id:"panel2a-header",children:d.jsx(oe,{children:"Expansion Panel 2"})}),d.jsx(WE,{children:d.jsx(oe,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget."})})]}),d.jsx(H1,{disabled:!0,children:d.jsx($1,{expandIcon:d.jsx(lf,{}),"aria-controls":"panel3a-content",id:"panel3a-header",children:d.jsx(oe,{children:"Disabled Expansion Panel"})})})]})}),d.jsx(re,{size:{md:6},children:d.jsxs(et,{title:"Customize Expansion Panel Example",disableWidgetMenu:!0,inheritHeight:!0,children:[d.jsxs(H1,{classes:{root:t.expansion},children:[d.jsx($1,{expandIcon:d.jsx(lf,{}),"aria-controls":"panel1a-content",id:"panel1a-header",children:d.jsx(oe,{children:"Expansion Panel 1"})}),d.jsx(WE,{children:d.jsx(oe,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget."})})]}),d.jsxs(H1,{classes:{root:t.expansion},children:[d.jsx($1,{expandIcon:d.jsx(lf,{}),"aria-controls":"panel2a-content",id:"panel2a-header",children:d.jsx(oe,{children:"Expansion Panel 2"})}),d.jsx(WE,{children:d.jsx(oe,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget."})})]}),d.jsx(H1,{disabled:!0,children:d.jsx($1,{expandIcon:d.jsx(lf,{}),"aria-controls":"panel3a-content",id:"panel3a-header",children:d.jsx(oe,{children:"Disabled Expansion Panel"})})})]})})]})})}function Umt(){const[t,e]=Ue.useState(0);return Ue.useEffect(()=>{function n(){e(i=>{if(i===100)return 0;const a=Math.random()*10;return Math.min(i+a,100)})}const r=setInterval(n,1500);return()=>{clearInterval(r)}},[]),d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:3,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Circular Indeterminate",disableWidgetMenu:!0,children:d.jsxs(ce,{my:3,display:"flex",flexWrap:"wrap",justifyContent:"center",children:[d.jsx(ce,{mt:1,mr:2,children:d.jsx(Qv,{})}),d.jsx(ce,{mt:1,mr:2,children:d.jsx(Qv,{color:"secondary"})}),d.jsx(ce,{mt:1,mr:2,children:d.jsx(Qv,{color:"warning"})}),d.jsx(ce,{mt:1,mr:2,children:d.jsx(Qv,{color:"success"})}),d.jsx(ce,{mt:1,mr:2,children:d.jsx(Qv,{color:"info"})})]})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Linear Indeterminate",disableWidgetMenu:!0,children:d.jsxs(ce,{my:3,display:"flex",flexWrap:"wrap",alignItems:"center",flexDirection:"column",children:[d.jsx(ce,{mt:1,mr:2,width:"100%",children:d.jsx(Qc,{})}),d.jsx(ce,{mt:1,mr:2,width:"100%",children:d.jsx(Qc,{color:"secondary"})}),d.jsx(ce,{mt:1,mr:2,width:"100%",children:d.jsx(Qc,{color:"warning"})}),d.jsx(ce,{mt:1,mr:2,width:"100%",children:d.jsx(Qc,{color:"success"})}),d.jsxs(ce,{mt:1,mr:2,width:"100%",children:[d.jsx(Qc,{color:"info"}),d.jsx("br",{}),d.jsx(Qc,{color:"info",variant:"determinate",value:t})]})]})})})]})})}const zmt=Zt(t=>({paper:{margin:t.spacing(4),backgroundColor:"#f3f3f3"}}));function Hmt(){const t=zmt();return d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:6,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsxs(et,{title:"Simple Widget",disableWidgetMenu:!0,children:[d.jsxs(oe,{block:!0,children:["It appears in the top of the page container. It have to be the first component after ",d.jsx(Kt,{row:!0,inline:!0,children:"return"})," ","statement."]}),d.jsxs(et,{className:t.paper,title:"Simple Widget",disableWidgetMenu:!0,slyle:{backgroundColor:"#fff"},children:["Lorem ipsum dolor sit amet consectetur, adipisicing elit. A, rem?",d.jsx(Kt,{className:t.scrollX,children:` + + Lorem ipsum dolor sit amet consectetur, adipisicing elit. A, + rem? + + `})]})]})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsxs(et,{title:"Page Title",disableWidgetMenu:!0,inheritHeight:!0,children:[d.jsxs(oe,{block:!0,children:["It appears in the top of the page container. It have to be the first component after ",d.jsx(Kt,{row:!0,inline:!0,children:"return"})," ","statement."]}),d.jsx(ce,{mt:1,children:d.jsx(Kt,{className:t.ScrollX,children:` + + `})})]})})]})})}const kF=Zt(t=>({form:{flexGrow:1},selectEmpty:{marginTop:t.spacing(2)},card:{width:"100%"},media:{height:320,padding:t.spacing(2)},root:{width:"100%",marginTop:t.spacing(3)},paper:{width:"100%",marginBottom:t.spacing(2)},table:{minWidth:750},tableWrapper:{overflowX:"auto"},visuallyHidden:{border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,overflow:"hidden",padding:0,position:"absolute",top:20,width:1},denseSelect:{"& .MuiOutlinedInput-input":{padding:17}},layoutContainer:{height:200,display:"flex",flexDirection:"column",justifyContent:"space-between",alignItems:"center",marginTop:t.spacing(2),border:"1px dashed",borderColor:t.palette.primary.main,position:"relative"},layoutText:{color:bt(t.palette.background.light).darken().toHexString()},layoutButtonsRow:{width:"100%",display:"flex",justifyContent:"space-between"},layoutButton:{backgroundColor:t.palette.background.light,width:125,height:50,outline:"none",border:"none"},layoutButtonActive:{backgroundColor:bt(t.palette.background.light).darken().toHexString()},buttonsContainer:{display:"flex",flexDirection:"column",alignItems:"flex-start",marginTop:t.spacing(2)},notificationCallButton:{color:"white",marginBottom:t.spacing(1),textTransform:"none"},codeContainer:{display:"flex",flexDirection:"column",marginTop:t.spacing(2)},codeComponent:{flexGrow:1},notificationItem:{marginTop:t.spacing(2)},notificationCloseButton:{position:"absolute",right:t.spacing(2)},toastsContainer:{width:"auto",marginTop:t.spacing(6),right:0},progress:{visibility:"hidden"},notification:{display:"flex",alignItems:"center",background:"transparent",boxShadow:"none",overflow:"visible"},searchIcon:{color:"rgba(0, 0, 0, 0.23)"}})),Ky="/react-material-admin/assets/img1-Dtu24cI6.jpg",Xy="/react-material-admin/assets/img2-hCLBWyRx.jpg",Qy="/react-material-admin/assets/img3-BBd_mS8I.jpg",Zy="/react-material-admin/assets/img4-DN0wnbGq.jpg",bT="/react-material-admin/assets/img5-4MvFfME0.jpeg",_T="/react-material-admin/assets/img6-Bz8EYk5e.jpg",c_=[{id:1,img:Ky,title:"Trainers",subtitle:"Trainers In White",price:80,rating:4.6},{id:2,img:Xy,title:"Boots",subtitle:"Trainers In Blue",price:37,rating:4.6},{id:3,img:Qy,title:"Flat sandals",subtitle:"Trainers In White",price:70,rating:4.6},{id:4,img:Zy,title:"Trainers",subtitle:"Trainers In Blue",price:85,rating:4.6},{id:5,img:bT,title:"Flat sandals",subtitle:"Trainers In White",price:12,rating:4.6},{id:6,img:_T,title:"Trainers",subtitle:"Trainers In Blue",price:76,rating:4.6},{id:7,img:Ky,title:"Boots",subtitle:"Trainers In White",price:76,rating:4.6},{id:8,img:Xy,title:"Flat sandals",subtitle:"Trainers In White",price:76,rating:4.6},{id:9,img:Qy,title:"Trainers",subtitle:"Trainers In White",price:76,rating:4.6},{id:10,img:Zy,title:"Boots",subtitle:"Trainers In Blue",price:76,rating:4.6},{id:11,img:bT,title:"Trainers",subtitle:"Trainers In White",price:71,rating:4.6},{id:12,img:_T,title:"Flat sandals",subtitle:"Trainers In Blue",price:76,rating:4.6}],zhe=Ue.createContext(),$mt=(t,e)=>{switch(e.type){case"UPDATE_PRODUCTS":return{isLoaded:!0,products:e.payload,images:t.images?t.images:[]};case"EDIT_PRODUCT":{const n=e.payload.id;return{...t,isLoaded:!0,products:t.products.map(r=>r.id===n?{...r,...e.payload}:r)}}case"GET_IMAGES":return{...t,images:e.payload};case"CREATE_PRODUCT":return t.products.push(e.payload),{...t,isLoaded:!0,products:t.products};default:return{...t}}},X4=({children:t})=>{const[e,n]=Ue.useReducer($mt,{isLoaded:!wr.isBackend,products:wr.isBackend?[]:c_,images:wr.isBackend?[]:c_.map(r=>r.img)});return d.jsx(zhe.Provider,{value:{products:e,setProducts:n},children:t})},Hhe=()=>Ue.useContext(zhe);function vT(t){if(wr.isBackend)return Ln.get("/products").then(e=>{t({type:"UPDATE_PRODUCTS",payload:e.data})});t({type:"UPDATE_PRODUCTS",payload:c_})}function Gmt({id:t,navigate:e,pathname:n,dispatch:r}){if(wr.isBackend){if(Array.isArray(t))for(let i in t)Ln.delete("/products/"+t[i]).then(()=>{});else Ln.delete("/products/"+t).then(()=>{vT(r),n!=="/app/ecommerce/management"&&e("/app/ecommerce/management")});vT(r)}}function Vmt(t,e){wr.isBackend&&Ln.put("/products/"+t.id,t).then(n=>{e({type:"EDIT_PRODUCT",payload:n.data})})}function Ymt(t,e){wr.isBackend&&Ln.post("/products",t).then(n=>{e({type:"CREATE_PRODUCT",payload:n.data})})}function Wmt(t){if(!wr.isBackend){t({type:"GET_IMAGES",payload:c_.map(n=>n.img)});return}const e=n=>n.map(r=>r.replace(/http:\/\/.+\//,"https://flatlogic-node-backend.flatlogic.com/assets/products/"));Ln.get("/products/images-list").then(n=>{t({type:"GET_IMAGES",payload:e(n.data)})})}function Dte(t,e,n){return e[n]t[n]?1:0}function qmt(t,e){const n=t.map((r,i)=>[r,i]);return n.sort((r,i)=>{const a=e(r[0],i[0]);return a!==0?a:r[1]-i[1]}),n.map(r=>r[0])}function Kmt(t,e){return t==="desc"?(n,r)=>Dte(n,r,e):(n,r)=>-Dte(n,r,e)}const Xmt=[{id:"id",numeric:!0,disablePadding:!0,label:"ID"},{id:"image",numeric:!0,disablePadding:!1,label:"Image"},{id:"title",numeric:!0,disablePadding:!1,label:"Title"},{id:"subtitle",numeric:!0,disablePadding:!1,label:"Subtitle"},{id:"price",numeric:!0,disablePadding:!1,label:"Price"},{id:"rating",numeric:!0,disablePadding:!1,label:"Rating"},{id:"actions",numeric:!0,disablePadding:!1,label:"Actions"}];function $he(t){const{classes:e,onSelectAllClick:n,order:r,orderBy:i,numSelected:a,rowCount:o,onRequestSort:s}=t,l=u=>c=>{s(c,u)};return d.jsx(jm,{children:d.jsxs(Pr,{children:[d.jsx(ct,{padding:"checkbox",children:d.jsx(xs,{indeterminate:a>0&&ad.jsx(ct,{align:u.numeric?"left":"right",padding:u.disablePadding?"none":null,sortDirection:i===u.id?r:!1,children:d.jsxs(B9,{active:i===u.id,direction:r,onClick:l(u.id),children:[u.label,i===u.id?d.jsx("span",{className:e.visuallyHidden,children:r==="desc"?"sorted descending":"sorted ascending"}):null]})},u.id))]})})}$he.propTypes={classes:pe.object.isRequired,numSelected:pe.number.isRequired,onRequestSort:pe.func.isRequired,onSelectAllClick:pe.func.isRequired,order:pe.oneOf(["asc","desc"]).isRequired,orderBy:pe.string.isRequired,rowCount:pe.number.isRequired};const Qmt=Zt(t=>({root:{paddingLeft:t.spacing(2),paddingRight:t.spacing(1)},highlight:t.palette.mode==="light"?{color:t.palette.secondary.main,backgroundColor:Sh(t.palette.secondary.light,.85)}:{color:t.palette.text.primary,backgroundColor:t.palette.secondary.dark},title:{flex:"1 1 100%"}})),Ghe=({numSelected:t,selected:e,onDeleteSelected:n})=>{const r=Qmt();return d.jsxs(dd,{className:Nt(r.root,{[r.highlight]:t>0}),style:{marginTop:8},children:[t>0?d.jsxs(oe,{className:r.title,color:"inherit",variant:"subtitle1",children:[t," selected"]}):d.jsx(oe,{className:r.title,variant:"h6",id:"tableTitle",children:"Products"}),t>0?d.jsx(iw,{title:"Delete",children:d.jsx(pn,{"aria-label":"delete",children:d.jsx(RS,{onClick:i=>n(e,i)})})}):d.jsx(iw,{title:"Filter list",children:d.jsx(pn,{"aria-label":"filter list",children:d.jsx(RA,{})})})]})};Ghe.propTypes={numSelected:pe.number.isRequired};function Zmt(){const t=kF(),e=rl(),n=Ka(),r=Hhe(),[i,a]=Ue.useState("asc"),[o,s]=Ue.useState("price"),[l,u]=Ue.useState([]),[c,f]=Ue.useState(0),[h,m]=Ue.useState(5),[b,_]=Ue.useState(r.products.products);E.useEffect(()=>{vT(r.setProducts)},[]),E.useEffect(()=>{_(r.products.products)},[r]);const y=(j,M)=>{a(o===M&&i==="desc"?"asc":"desc"),s(M)},x=j=>{let M=[];r.products.products.forEach(z=>{z.title.includes(j.currentTarget.value)&&M.push(z)}),_(M)},C=(j,M)=>{e(`/app/ecommerce/product/${j}`),M.stopPropagation()},A=j=>{if(j.target.checked){const M=b.map(z=>z.id);u(M);return}u([])},R=(j,M)=>{const z=l.indexOf(M);let G=[];z===-1?G=G.concat(l,M):z===0?G=G.concat(l.slice(1)):z===l.length-1?G=G.concat(l.slice(0,-1)):z>0&&(G=G.concat(l.slice(0,z),l.slice(z+1))),u(G)},I=(j,M)=>{f(M)},O=j=>{m(parseInt(j.target.value,10)),f(0)},N=j=>l.indexOf(j)!==-1,k=h-Math.min(h,b.length-c*h),D=(j,M)=>{Gmt({id:j,navigate:e,pathname:n.pathname,dispatch:r.setProducts}),M.stopPropagation()},P=(j,M)=>{e(`/app/ecommerce/management/edit/${M}`),j.stopPropagation()};return d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:3,children:d.jsx(re,{size:12,children:d.jsxs(et,{disableWidgetMenu:!0,header:d.jsxs(ce,{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",children:[d.jsxs(ce,{display:"flex",style:{width:"calc(100% - 20px)"},children:[d.jsx(oe,{variant:"h6",color:"text",colorBrightness:"secondary",noWrap:!0,children:"Products"}),d.jsx(ce,{alignSelf:"flex-end",ml:1,children:d.jsxs(oe,{color:"text",colorBrightness:"hint",variant:"caption",children:[b.length," total"]})})]}),d.jsx(wn,{id:"search-field",className:t.textField,label:"Search",margin:"dense",variant:"outlined",InputProps:{startAdornment:d.jsx(Dg,{position:"start",children:d.jsx(W9,{className:t.searchIcon})})},onChange:j=>x(j)})]}),children:[wr.isBackend?d.jsx(gt,{style:{marginTop:-10},variant:"contained",component:gc,to:"/app/ecommerce/management/create",color:"success",children:"Create Product"}):d.jsx(gt,{style:{marginTop:-10},variant:"contained",component:gc,to:"#",color:"success",children:"Create Product"}),d.jsx(Ghe,{numSelected:l.length,selected:l,onDeleteSelected:D}),wr.isBackend&&!r.products.isLoaded?d.jsx(ce,{display:"flex",justifyContent:"center",alignItems:"center",children:d.jsx(mc,{size:26})}):d.jsx("div",{className:t.tableWrapper,children:d.jsxs(yf,{className:t.table,"aria-labelledby":"tableTitle","aria-label":"enhanced table",children:[d.jsx($he,{classes:t,numSelected:l.length,order:i,orderBy:o,onSelectAllClick:A,onRequestSort:y,rowCount:b.length}),d.jsxs(Sf,{children:[qmt(b,Kmt(i,o)).slice(c*h,c*h+h).map((j,M)=>{const z=N(j.id),G=`enhanced-table-checkbox-${M}`;return d.jsxs(Pr,{hover:!0,onClick:Y=>R(Y,j.id),role:"checkbox","aria-checked":z,selected:z,children:[d.jsx(ct,{padding:"checkbox",children:d.jsx(xs,{checked:z,inputProps:{"aria-labelledby":G}})}),d.jsx(ct,{component:"th",id:G,scope:"row",padding:"none",children:j.id}),d.jsx(ct,{children:d.jsx("img",{src:j.img,alt:j.title,style:{width:100}})}),d.jsx(ct,{children:d.jsx(vr,{component:"button",variant:"body2",onClick:Y=>C(j.id,Y),color:"primary",children:j.title?j.title.split("").map((Y,H)=>H===0?Y.toUpperCase():Y):null})}),d.jsx(ct,{children:j.subtitle}),d.jsxs(ct,{children:["$",j.price]}),d.jsx(ct,{children:d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(oe,{style:{color:Oa[700]},display:"inline",children:j.rating})," ",d.jsx(Go,{style:{color:Oa[700],marginTop:-5}})]})}),d.jsx(ct,{children:d.jsxs(ce,{display:"flex",alignItems:"center",children:[wr.isBackend?d.jsx(gt,{color:"success",size:"small",style:{marginRight:16},variant:"contained",onClick:Y=>P(Y,j.id),children:"Edit"}):d.jsx(gt,{color:"success",size:"small",style:{marginRight:16},variant:"contained",onClick:Y=>Y.stopPropagation(),children:"Edit"}),d.jsx(gt,{color:"secondary",size:"small",variant:"contained",onClick:Y=>D(j.id,Y),children:"Delete"})]})})]},j.id)}),k>0&&d.jsx(Pr,{style:{height:53*k},children:d.jsx(ct,{colSpan:6})})]})]})}),d.jsx(Nb,{rowsPerPageOptions:[5,10,25],component:"div",count:b.length,rowsPerPage:h,page:c,backIconButtonProps:{"aria-label":"previous page"},nextIconButtonProps:{"aria-label":"next page"},onPageChange:I,onRowsPerPageChange:O})]})})})})}const Jmt=Zt(t=>({pageTitleContainer:{display:"flex",justifyContent:"space-between",marginBottom:t.spacing(4),marginTop:t.spacing(5)},typo:{color:t.palette.text.hint},button:{boxShadow:t.customShadows.widget,textTransform:"none","&:active":{boxShadow:t.customShadows.widgetWide}}}));function e1t(t){let e=Jmt();return d.jsxs("div",{className:e.pageTitleContainer,children:[d.jsx(oe,{className:e.typo,variant:"h1",size:"sm",children:t.title}),t.button&&d.jsx(tr,{classes:{root:e.button},variant:"contained",size:"large",color:"secondary",children:t.button})]})}const t1t="/react-material-admin/assets/mastercard-BrkSmATm.svg",n1t="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='iso-8859-1'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2019.0.0,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20504%20504'%20style='enable-background:new%200%200%20504%20504;'%20xml:space='preserve'%3e%3cpath%20style='fill:%23139AD6;'%20d='M389.6,221.2h-27.2c-1.6,0-3.2,1.6-4,3.2l-11.2,70.4c0,1.6,0.8,2.4,2.4,2.4H364%20c1.6,0,2.4-0.8,2.4-2.4l3.2-20c0-1.6,1.6-3.2,4-3.2h8.8c18.4,0,28.8-8.8,31.2-26.4c1.6-7.2,0-13.6-3.2-17.6%20C405.6,223.6,398.4,221.2,389.6,221.2%20M392.8,247.6c-1.6,9.6-8.8,9.6-16,9.6H372l3.2-18.4c0-0.8,0.8-1.6,2.4-1.6h1.6%20c4.8,0,9.6,0,12,3.2C392.8,241.2,392.8,243.6,392.8,247.6'/%3e%3cg%3e%3cpath%20style='fill:%23263B80;'%20d='M193.6,221.2h-27.2c-1.6,0-3.2,1.6-4,3.2l-11.2,70.4c0,1.6,0.8,2.4,2.4,2.4h12.8%20c1.6,0,3.2-1.6,4-3.2l3.2-19.2c0-1.6,1.6-3.2,4-3.2h8.8c18.4,0,28.8-8.8,31.2-26.4c1.6-7.2,0-13.6-3.2-17.6%20C209.6,223.6,203.2,221.2,193.6,221.2%20M196.8,247.6c-1.6,9.6-8.8,9.6-16,9.6h-4l3.2-18.4c0-0.8,0.8-1.6,2.4-1.6h1.6%20c4.8,0,9.6,0,12,3.2C196.8,241.2,197.6,243.6,196.8,247.6'/%3e%3cpath%20style='fill:%23263B80;'%20d='M276,246.8h-12.8c-0.8,0-2.4,0.8-2.4,1.6l-0.8,4l-0.8-1.6c-3.2-4-8.8-5.6-15.2-5.6%20c-14.4,0-27.2,11.2-29.6,26.4c-1.6,8,0.8,15.2,4.8,20s9.6,6.4,16.8,6.4c12,0,18.4-7.2,18.4-7.2l-0.8,4c0,1.6,0.8,2.4,2.4,2.4h12%20c1.6,0,3.2-1.6,4-3.2l7.2-44.8C278.4,248.4,276.8,246.8,276,246.8%20M257.6,272.4c-1.6,7.2-7.2,12.8-15.2,12.8c-4,0-7.2-1.6-8.8-3.2%20c-1.6-2.4-2.4-5.6-2.4-9.6c0.8-7.2,7.2-12.8,14.4-12.8c4,0,6.4,1.6,8.8,3.2C256.8,265.2,257.6,269.2,257.6,272.4'/%3e%3c/g%3e%3cpath%20style='fill:%23139AD6;'%20d='M471.2,246.8h-12.8c-0.8,0-2.4,0.8-2.4,1.6l-0.8,4l-0.8-1.6c-3.2-4-8.8-5.6-15.2-5.6%20c-14.4,0-27.2,11.2-29.6,26.4c-1.6,8,0.8,15.2,4.8,20s9.6,6.4,16.8,6.4c12,0,18.4-7.2,18.4-7.2l-0.8,4c0,1.6,0.8,2.4,2.4,2.4h12%20c1.6,0,3.2-1.6,4-3.2l7.2-44.8C473.6,248.4,472.8,246.8,471.2,246.8%20M452.8,272.4c-1.6,7.2-7.2,12.8-15.2,12.8c-4,0-7.2-1.6-8.8-3.2%20c-1.6-2.4-2.4-5.6-2.4-9.6c0.8-7.2,7.2-12.8,14.4-12.8c4,0,6.4,1.6,8.8,3.2C452.8,265.2,453.6,269.2,452.8,272.4'/%3e%3cpath%20style='fill:%23263B80;'%20d='M345.6,246.8H332c-1.6,0-2.4,0.8-3.2,1.6l-17.6,27.2l-8-25.6c-0.8-1.6-1.6-2.4-4-2.4h-12.8%20c-1.6,0-2.4,1.6-2.4,3.2l14.4,42.4l-13.6,19.2c-0.8,1.6,0,4,1.6,4h12.8c1.6,0,2.4-0.8,3.2-1.6l44-63.2%20C348.8,249.2,347.2,246.8,345.6,246.8'/%3e%3cpath%20style='fill:%23139AD6;'%20d='M486.4,223.6l-11.2,72c0,1.6,0.8,2.4,2.4,2.4h11.2c1.6,0,3.2-1.6,4-3.2l11.2-70.4%20c0-1.6-0.8-2.4-2.4-2.4h-12.8C488,221.2,487.2,222,486.4,223.6'/%3e%3cpath%20style='fill:%23263B80;'%20d='M92,197.2c-5.6-6.4-16-9.6-30.4-9.6h-40c-2.4,0-4.8,2.4-5.6,4.8L0,297.2c0,2.4,1.6,4,3.2,4H28%20l6.4-39.2v1.6c0.8-2.4,3.2-4.8,5.6-4.8h12c23.2,0,40.8-9.6,46.4-36c0-0.8,0-1.6,0-2.4c-0.8,0-0.8,0,0,0%20C99.2,210,97.6,203.6,92,197.2'/%3e%3cpath%20style='fill:%23139AD6;'%20d='M97.6,220.4L97.6,220.4c0,0.8,0,1.6,0,2.4c-5.6,27.2-23.2,36-46.4,36h-12c-2.4,0-4.8,2.4-5.6,4.8%20l-8,48.8c0,1.6,0.8,3.2,3.2,3.2h20.8c2.4,0,4.8-1.6,4.8-4v-0.8l4-24.8v-1.6c0-2.4,2.4-4,4.8-4h3.2c20,0,36-8,40-32%20c1.6-9.6,0.8-18.4-4-24C101.6,222.8,100,221.2,97.6,220.4'/%3e%3cpath%20style='fill:%23232C65;'%20d='M92,218c-0.8,0-1.6-0.8-2.4-0.8s-1.6,0-2.4-0.8c-3.2-0.8-6.4-0.8-10.4-0.8H45.6c-0.8,0-1.6,0-2.4,0.8%20c-1.6,0.8-2.4,2.4-2.4,4L34.4,262v1.6c0.8-2.4,3.2-4.8,5.6-4.8h12c23.2,0,40.8-9.6,46.4-36c0-0.8,0-1.6,0.8-2.4%20c-1.6-0.8-2.4-1.6-4-1.6C92.8,218,92.8,218,92,218'/%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e",r1t="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='iso-8859-1'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2019.0.0,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20504%20504'%20style='enable-background:new%200%200%20504%20504;'%20xml:space='preserve'%3e%3cpolygon%20style='fill:%233C58BF;'%20points='184.8,324.4%20210.4,180.4%20250.4,180.4%20225.6,324.4%20'/%3e%3cpolygon%20style='fill:%23293688;'%20points='184.8,324.4%20217.6,180.4%20250.4,180.4%20225.6,324.4%20'/%3e%3cpath%20style='fill:%233C58BF;'%20d='M370.4,182c-8-3.2-20.8-6.4-36.8-6.4c-40,0-68.8,20-68.8,48.8c0,21.6,20,32.8,36,40%20s20.8,12,20.8,18.4c0,9.6-12.8,14.4-24,14.4c-16,0-24.8-2.4-38.4-8l-5.6-2.4l-5.6,32.8c9.6,4,27.2,8,45.6,8%20c42.4,0,70.4-20,70.4-50.4c0-16.8-10.4-29.6-34.4-40c-14.4-7.2-23.2-11.2-23.2-18.4c0-6.4,7.2-12.8,23.2-12.8%20c13.6,0,23.2,2.4,30.4,5.6l4,1.6L370.4,182L370.4,182z'/%3e%3cpath%20style='fill:%23293688;'%20d='M370.4,182c-8-3.2-20.8-6.4-36.8-6.4c-40,0-61.6,20-61.6,48.8c0,21.6,12.8,32.8,28.8,40%20s20.8,12,20.8,18.4c0,9.6-12.8,14.4-24,14.4c-16,0-24.8-2.4-38.4-8l-5.6-2.4l-5.6,32.8c9.6,4,27.2,8,45.6,8%20c42.4,0,70.4-20,70.4-50.4c0-16.8-10.4-29.6-34.4-40c-14.4-7.2-23.2-11.2-23.2-18.4c0-6.4,7.2-12.8,23.2-12.8%20c13.6,0,23.2,2.4,30.4,5.6l4,1.6L370.4,182L370.4,182z'/%3e%3cpath%20style='fill:%233C58BF;'%20d='M439.2,180.4c-9.6,0-16.8,0.8-20.8,10.4l-60,133.6h43.2l8-24h51.2l4.8,24H504l-33.6-144H439.2z%20M420.8,276.4c2.4-7.2,16-42.4,16-42.4s3.2-8.8,5.6-14.4l2.4,13.6c0,0,8,36,9.6,44h-33.6V276.4z'/%3e%3cpath%20style='fill:%23293688;'%20d='M448.8,180.4c-9.6,0-16.8,0.8-20.8,10.4l-69.6,133.6h43.2l8-24h51.2l4.8,24H504l-33.6-144H448.8z%20M420.8,276.4c3.2-8,16-42.4,16-42.4s3.2-8.8,5.6-14.4l2.4,13.6c0,0,8,36,9.6,44h-33.6V276.4z'/%3e%3cpath%20style='fill:%233C58BF;'%20d='M111.2,281.2l-4-20.8c-7.2-24-30.4-50.4-56-63.2l36,128h43.2l64.8-144H152L111.2,281.2z'/%3e%3cpath%20style='fill:%23293688;'%20d='M111.2,281.2l-4-20.8c-7.2-24-30.4-50.4-56-63.2l36,128h43.2l64.8-144H160L111.2,281.2z'/%3e%3cpath%20style='fill:%23FFBC00;'%20d='M0,180.4l7.2,1.6c51.2,12,86.4,42.4,100,78.4l-14.4-68c-2.4-9.6-9.6-12-18.4-12H0z'/%3e%3cpath%20style='fill:%23F7981D;'%20d='M0,180.4L0,180.4c51.2,12,93.6,43.2,107.2,79.2l-13.6-56.8c-2.4-9.6-10.4-15.2-19.2-15.2L0,180.4z'/%3e%3cpath%20style='fill:%23ED7C00;'%20d='M0,180.4L0,180.4c51.2,12,93.6,43.2,107.2,79.2l-9.6-31.2c-2.4-9.6-5.6-19.2-16.8-23.2L0,180.4z'/%3e%3cg%3e%3cpath%20style='fill:%23051244;'%20d='M151.2,276.4L124,249.2l-12.8,30.4l-3.2-20c-7.2-24-30.4-50.4-56-63.2l36,128h43.2L151.2,276.4z'/%3e%3cpolygon%20style='fill:%23051244;'%20points='225.6,324.4%20191.2,289.2%20184.8,324.4%20'/%3e%3cpath%20style='fill:%23051244;'%20d='M317.6,274.8L317.6,274.8c3.2,3.2,4.8,5.6,4,8.8c0,9.6-12.8,14.4-24,14.4c-16,0-24.8-2.4-38.4-8%20l-5.6-2.4l-5.6,32.8c9.6,4,27.2,8,45.6,8c25.6,0,46.4-7.2,58.4-20L317.6,274.8z'/%3e%3cpath%20style='fill:%23051244;'%20d='M364,324.4h37.6l8-24h51.2l4.8,24H504L490.4,266l-48-46.4l2.4,12.8c0,0,8,36,9.6,44h-33.6%20c3.2-8,16-42.4,16-42.4s3.2-8.8,5.6-14.4'/%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e",i1t="/react-material-admin/assets/aexpress-BqJuj5k3.svg",Cr=[{id:1,img:Ky,title:"Trainers",subtitle:"Trainers In White",price:76,rating:4.6,color:"primary",status:"Shipped",process:"64%"},{id:2,img:Xy,title:"Boots",subtitle:"Trainers In Blue",price:37,rating:4.6,color:"success",status:"Delivered",process:"100%"},{id:3,img:Qy,title:"Flat sandals",subtitle:"Trainers In White",price:70,rating:4.6,color:"secondary",status:"Canceled",process:"0%"},{id:4,img:Zy,title:"Trainers",subtitle:"Trainers In Blue",price:85,rating:4.6,color:"primary",status:"Shipped",process:"64%"},{id:5,img:bT,title:"Flat sandals",subtitle:"Trainers In White",price:12,rating:4.6,color:"success",status:"Delivered",process:"100%"},{id:6,img:_T,title:"Trainers",subtitle:"Trainers In Blue",price:76,rating:4.6,color:"secondary",status:"Canceled",process:"0%"},{id:7,img:Ky,title:"Boots",subtitle:"Trainers In White",price:76,rating:4.6,color:"primary",status:"Shipped",process:"64%"},{id:8,img:Xy,title:"Flat sandals",subtitle:"Trainers In White",price:76,rating:4.6,color:"success",status:"Delivered",process:"100%"},{id:9,img:Qy,title:"Trainers",subtitle:"Trainers In White",price:76,rating:4.6,color:"secondary",status:"Canceled",process:"0%"},{id:10,img:Zy,title:"Boots",subtitle:"Trainers In Blue",price:76,rating:4.6,color:"primary",status:"Shipped",process:"64%"},{id:11,img:bT,title:"Trainers",subtitle:"Trainers In White",price:71,rating:4.6,color:"success",status:"Delivered",process:"100%"},{id:12,img:_T,title:"Flat sandals",subtitle:"Trainers In Blue",price:76,rating:4.6,color:"secondary",status:"Canceled",process:"0%"}],Pte=()=>{const{id:t}=pA(),e=Number(t),n=kF(),[r,i]=Ue.useState(""),a=u=>{i(u.target.value)},[o,s]=Ue.useState(1),l=u=>{s(u.target.value)};return d.jsxs(d.Fragment,{children:[d.jsxs(re,{container:!0,spacing:3,children:[d.jsx(re,{size:12,children:d.jsx(et,{disableWidgetMenu:!0,noBodyPadding:!0,children:d.jsxs(re,{container:!0,children:[d.jsx(re,{size:{xs:12,md:6},children:e?d.jsx("img",{src:Cr[e-1].img,alt:Cr[e-1].title,style:{width:"100%",minHeight:400}}):d.jsx("img",{src:Cr[0].img,alt:Cr[0].title,style:{width:"100%",minHeight:400}})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsxs(ce,{m:3,display:"flex",flexDirection:"column",justifyContent:"space-between",style:{height:"calc(100% - 48px)"},children:[d.jsxs(ce,{children:[e?d.jsxs(d.Fragment,{children:[d.jsx(oe,{style:{color:Oa[700]},display:"inline",children:Cr[e-1].rating}),d.jsx(Go,{style:{color:Oa[700],marginTop:-5}})]}):d.jsxs("div",{style:{fontSize:"1.5rem",color:Oa[700]},children:[Cr[0].rating,d.jsx(Go,{style:{color:Oa[700],marginTop:-5}})]})," "]}),d.jsxs(ce,{children:[e?d.jsxs(d.Fragment,{children:[d.jsx(oe,{variant:"h3",uppercase:!0,children:Cr[e-1].title}),d.jsx(oe,{children:Cr[e].subtitle})]}):d.jsxs(d.Fragment,{children:[d.jsx(oe,{variant:"h3",uppercase:!0,children:Cr[0].title}),d.jsx(oe,{children:Cr[0].subtitle})]})," "]}),d.jsxs(ce,{children:[e?d.jsx(d.Fragment,{children:d.jsxs(oe,{weight:"medium",children:["$",Cr[e].price]})}):d.jsx(d.Fragment,{children:d.jsxs(oe,{weight:"medium",variant:"h5",children:["$",Cr[0].price]})})," "]}),d.jsx(ce,{children:d.jsx(vr,{children:"Size Guide"})}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsxs(Vo,{variant:"outlined",className:n.form,style:{marginRight:15},children:[d.jsx(Xc,{htmlFor:"size-simple",children:"Select size"}),d.jsxs(pa,{value:r,onChange:a,label:"Select size",inputProps:{name:"size",id:"size-simple"},className:n.denseSelect,children:[d.jsx($t,{value:1,children:"1"}),d.jsx($t,{value:2,children:"2"}),d.jsx($t,{value:3,children:"3"}),d.jsx($t,{value:4,children:"4"}),d.jsx($t,{value:5,children:"5"})]})]}),d.jsx(Vo,{className:n.form,children:d.jsxs(pa,{value:o,onChange:l,className:n.selectEmpty,margin:"dense",children:[d.jsx($t,{value:1,children:"1"}),d.jsx($t,{value:2,children:"2"}),d.jsx($t,{value:3,children:"3"}),d.jsx($t,{value:4,children:"4"}),d.jsx($t,{value:5,children:"5"}),d.jsx($t,{value:5,children:"6"}),d.jsx($t,{value:5,children:"7"})]})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsxs(gt,{color:"primary",variant:"contained",style:{flexGrow:3},children:["add to bag",d.jsx(Qb,{style:{marginLeft:8}})]}),d.jsx(rse,{style:{marginLeft:16},className:n.form})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx("img",{src:t1t,alt:"mastercard",style:{width:40,marginRight:8}}),d.jsx("img",{src:n1t,alt:"paypal",style:{width:40,marginRight:8}}),d.jsx("img",{src:r1t,alt:"visa",style:{width:40,marginRight:8}}),d.jsx("img",{src:i1t,alt:"americanexpress",style:{width:40}})]}),d.jsx(oe,{color:"text",colorBrightness:"secondary",children:"FREE Delivery & Returns"})]})})]})})}),d.jsx(re,{size:12,children:d.jsx(et,{disableWidgetMenu:!0,title:"Product Info",children:d.jsx(re,{container:!0,children:d.jsx(re,{size:12,children:d.jsxs(re,{container:!0,spacing:3,children:[d.jsxs(re,{container:!0,direction:"column",size:{xs:12,md:4},children:[d.jsx(oe,{variant:"h5",style:{marginBottom:16},children:"PRODUCT DESCRIPTION"}),d.jsxs("ul",{children:[d.jsx("li",{children:"Sneakers (also known as athletic shoes, tennis shoes,gym shoes, runners, takkies, or trainers) are shoes primarily designed for sports or other forms of physical exercise, but which are now also often used for everyday wear."}),d.jsx("li",{children:"The term generally describes a type of footwear with a flexible sole made of rubber or synthetic material and an upper part made of leather or synthetic materials."})]})]}),d.jsxs(re,{container:!0,direction:"column",justify:"space-between",size:{xs:12,md:4},children:[d.jsxs(ce,{children:[d.jsx(oe,{variant:"h5",style:{marginBottom:16},children:"PRODUCT CODE"}),d.jsx("p",{children:"135234"})]}),d.jsxs(ce,{children:[d.jsx(oe,{variant:"h5",style:{marginBottom:16},children:"TECHNOLOGY"}),d.jsxs("ul",{children:[d.jsx("li",{children:"Ollie patch"}),d.jsx("li",{children:"Cup soles"}),d.jsx("li",{children:"Vulcanized rubber soles"})]})]})]}),d.jsxs(re,{container:!0,direction:"column",size:{xs:12,md:4},children:[d.jsxs(ce,{children:[d.jsx(oe,{variant:"h5",style:{marginBottom:16},children:"SHARE"}),d.jsxs("p",{children:["Share photo with a tag"," ",d.jsx(vr,{to:"#",color:"primary",children:"#whitetrainers"})]}),d.jsxs(ce,{mb:1,ml:"-16px",children:[d.jsx(pn,{"aria-label":"facebook",children:d.jsx(bA,{style:{color:"#6E6E6E99"}})}),d.jsx(pn,{"aria-label":"instagram",children:d.jsx(G9,{style:{color:"#6E6E6E99"}})}),d.jsx(pn,{"aria-label":"twitter",children:d.jsx(_A,{style:{color:"#6E6E6E99"}})})]})]}),d.jsxs(ce,{children:[d.jsx(oe,{variant:"h5",style:{marginBottom:16},children:"RATING & REVIEWS"}),e?d.jsxs(d.Fragment,{children:[d.jsx(oe,{style:{color:Oa[700]},display:"inline",children:Cr[e-1].rating}),d.jsx(Go,{style:{color:Oa[700],marginTop:-5}})]}):d.jsxs("div",{style:{fontSize:"1.5rem",color:Oa[700]},children:[Cr[0].rating,d.jsx(Go,{style:{color:Oa[700],marginTop:-5}})]}),d.jsx("p",{children:"32 Reviews"}),d.jsx(vr,{to:"#",color:"primary",children:"Read all"})]})]})]})})})})})]}),d.jsx(e1t,{title:"You may also like"}),d.jsx(re,{size:12,children:d.jsxs(ce,{display:"flex",flexWrap:"wrap",children:[d.jsx(ce,{flexGrow:1,mr:3,mb:3,children:d.jsxs(Zc,{className:n.card,children:[d.jsxs(Gp,{children:[d.jsx(hf,{className:n.media,image:Ky,title:Cr[0].title}),d.jsxs(eu,{children:[d.jsx(oe,{gutterBottom:!0,variant:"h5",component:"h2",children:Cr[0].title}),d.jsx(oe,{variant:"body2",component:"p",children:Cr[0].subtitle})]})]}),d.jsxs(Jc,{style:{display:"flex",justifyContent:"space-between"},children:[d.jsxs(oe,{variant:"body2",component:"p",children:["$",Cr[0].price]}),d.jsxs("div",{style:{color:Oa[700],display:"flex",alignItems:"center"},children:[Cr[0].rating,d.jsx(Go,{style:{color:Oa[700],marginLeft:5}})]})]})]})}),d.jsx(ce,{flexGrow:1,mr:3,mb:3,children:d.jsxs(Zc,{className:n.card,children:[d.jsxs(Gp,{children:[d.jsx(hf,{className:n.media,image:Xy,title:Cr[1].img}),d.jsxs(eu,{children:[d.jsx(oe,{gutterBottom:!0,variant:"h5",component:"h2",children:Cr[1].title}),d.jsx(oe,{variant:"body2",component:"p",children:Cr[1].subtitle})]})]}),d.jsxs(Jc,{style:{display:"flex",justifyContent:"space-between"},children:[d.jsxs(oe,{variant:"body2",component:"p",children:["$",Cr[1].price]}),d.jsxs("div",{style:{color:Oa[700],display:"flex",alignItems:"center"},children:[Cr[1].rating,d.jsx(Go,{style:{color:Oa[700],marginLeft:5}})]})]})]})}),d.jsx(ce,{flexGrow:1,mr:3,mb:3,children:d.jsxs(Zc,{className:n.card,children:[d.jsxs(Gp,{children:[d.jsx(hf,{className:n.media,image:Qy,title:Cr[2].img}),d.jsxs(eu,{children:[d.jsx(oe,{gutterBottom:!0,variant:"h5",component:"h2",children:Cr[2].title}),d.jsx(oe,{variant:"body2",component:"p",children:Cr[2].subtitle})]})]}),d.jsxs(Jc,{style:{display:"flex",justifyContent:"space-between"},children:[d.jsxs(oe,{variant:"body2",component:"p",children:["$",Cr[2].price]}),d.jsxs("div",{style:{color:Oa[700],display:"flex",alignItems:"center"},children:[Cr[2].rating,d.jsx(Go,{style:{color:Oa[700],marginLeft:5}})]})]})]})}),d.jsx(ce,{flexGrow:1,mb:3,children:d.jsxs(Zc,{className:n.card,children:[d.jsxs(Gp,{children:[d.jsx(hf,{className:n.media,image:Zy,title:Cr[3].img}),d.jsxs(eu,{children:[d.jsx(oe,{gutterBottom:!0,variant:"h5",component:"h2",children:Cr[3].title}),d.jsx(oe,{variant:"body2",component:"p",children:Cr[3].subtitle})]})]}),d.jsxs(Jc,{style:{display:"flex",justifyContent:"space-between"},children:[d.jsxs(oe,{variant:"body2",component:"p",children:["$",Cr[3].price]}),d.jsxs("div",{style:{color:Oa[700],display:"flex",alignItems:"center"},children:[Cr[3].rating,d.jsx(Go,{style:{color:Oa[700],marginLeft:5}})]})]})]})})]})})]})},a1t=()=>{const t=kF(),e=(i,a)=>{switch(a.type){case"SELECT_TYPE":return{...i,valueType:a.valueType};case"SELECT_BRANDS":return{...i,valueBrands:a.valueBrands};case"SELECT_SIZE":return{...i,valueSize:a.valueSize};case"SELECT_COLOUR":return{...i,valueColor:a.valueColor};case"SELECT_RANGE":return{...i,valueRange:a.valueRange};case"SELECT_SORT":return{...i,valueSort:a.valueSort};default:return{...i}}},[n,r]=Ue.useReducer(e,{valueType:"Shoes",valueBrands:"All",valueSize:7,valueColour:"All",valueRange:"All",valueSort:"Favorite"});return d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:3,children:[d.jsx(re,{size:12,children:d.jsxs(ce,{display:"flex",children:[d.jsxs(Vo,{variant:"outlined",className:t.form,style:{marginRight:15},children:[d.jsx(Xc,{htmlFor:"type_select",children:"Type"}),d.jsxs(pa,{value:n.valueType,onChange:i=>r({type:"SELECT_TYPE",valueType:i.target.value}),label:"Type",inputProps:{name:"type",id:"type_select"},children:[d.jsx($t,{value:"Shoes",children:"Shoes"}),d.jsx($t,{value:"Boots",children:"Boots"}),d.jsx($t,{value:"Trainers",children:"Trainers"})]})]}),d.jsxs(Vo,{variant:"outlined",className:t.form,style:{marginRight:15},children:[d.jsx(Xc,{htmlFor:"brands_select",children:"Brands"}),d.jsxs(pa,{value:n.valueBrands,onChange:i=>r({type:"SELECT_BRAND",valueBrands:i.target.value}),label:"Brands",inputProps:{name:"brands",id:"brands_select"},children:[d.jsx($t,{value:"All",children:"All"}),d.jsx($t,{value:"Nike",children:"Nike"}),d.jsx($t,{value:"Adidas",children:"Adidas"})]})]}),d.jsxs(Vo,{variant:"outlined",className:t.form,style:{marginRight:15},children:[d.jsx(Xc,{htmlFor:"size_select",children:"Size"}),d.jsxs(pa,{value:n.valueSize,onChange:i=>r({type:"SELECT_SIZE",valueSize:i.target.value}),label:"Size",inputProps:{name:"size",id:"size_select"},children:[d.jsx($t,{value:7,children:"7"}),d.jsx($t,{value:8,children:"8"}),d.jsx($t,{value:9,children:"9"}),d.jsx($t,{value:10,children:"10"}),d.jsx($t,{value:11,children:"11"}),d.jsx($t,{value:12,children:"12"}),d.jsx($t,{value:12.5,children:"12.5"}),d.jsx($t,{value:13,children:"13"})]})]}),d.jsxs(Vo,{variant:"outlined",className:t.form,style:{marginRight:15},children:[d.jsx(Xc,{htmlFor:"colour_select",children:"Colour"}),d.jsxs(pa,{value:n.valueColour,onChange:i=>r({type:"SELECT_COLOUR",valueColor:i.target.value}),label:"Colour",inputProps:{name:"colour",id:"colour_select"},children:[d.jsx($t,{value:"All",children:"All"}),d.jsx($t,{value:"White",children:"White"}),d.jsx($t,{value:"Black",children:"Black"})]})]}),d.jsxs(Vo,{variant:"outlined",className:t.form,style:{marginRight:15},children:[d.jsx(Xc,{htmlFor:"range_select",children:"Range"}),d.jsxs(pa,{value:n.valueRange,onChange:i=>r({type:"SELECT_RANGE",valueRange:i.target.value}),label:"Range",inputProps:{name:"range",id:"range_select"},children:[d.jsx($t,{value:"All",children:"All"}),d.jsx($t,{value:"-",children:"-"}),d.jsx($t,{value:"None",children:"None"})]})]}),d.jsxs(Vo,{variant:"outlined",className:t.form,style:{marginRight:15},children:[d.jsx(Xc,{htmlFor:"sort_select",children:"Sort"}),d.jsxs(pa,{value:n.valueSort,onChange:i=>r({type:"SELECT_SORT",valueSort:i.target.value}),label:"Sort",inputProps:{name:"sort",id:"sort_select"},children:[d.jsx($t,{value:"Favorite",children:"Favorite"}),d.jsx($t,{value:"Price",children:"Price"}),d.jsx($t,{value:"Popular",children:"Popular"})]})]})]})}),d.jsx(re,{size:12,children:d.jsx(ce,{display:"flex",flexWrap:"wrap",children:d.jsx(re,{container:!0,spacing:3,children:c_.map(i=>d.jsx(re,{size:{xs:12,md:3},children:d.jsxs(Zc,{className:t.card,children:[d.jsxs(Gp,{children:[d.jsx(hf,{className:t.media,image:i.img,title:i.title,children:i.id%2?d.jsx(Cl,{label:"New",color:"success"}):d.jsx(Cl,{label:"Sale",color:"secondary"})}),d.jsxs(eu,{children:[d.jsx(oe,{gutterBottom:!0,variant:"h5",component:"h2",children:i.title}),d.jsx(oe,{variant:"body2",color:"text",colorBrightness:"secondary",component:"p",children:i.subtitle})]})]}),d.jsx(Jc,{style:{padding:16},children:d.jsxs(ce,{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%",children:[d.jsxs(oe,{weight:"bold",children:["$",i.price]}),d.jsx(oe,{block:!0,children:d.jsxs("div",{style:{color:Oa[700]},children:[c_[0].rating,d.jsx(Go,{style:{color:Oa[700],marginTop:-5}})]})})]})})]})},i.id))})})})]})})},kte=()=>{const{id:t}=pA(),e=Hhe(),n=_=>e.products.products.findIndex(y=>y.id==_),[r,i]=Ue.useState(e.products.products[n(t)]),[a,o]=Ue.useState({img:"https://flatlogic-node-backend.flatlogic.com/assets/products/img1.jpg",title:null,subtitle:null,price:.1,rating:5,description_1:null,description_2:null,code:null,hashtag:null,technology:[],discount:0});E.useEffect(()=>{vT(e.setProducts),Wmt(e.setProducts)},[]),E.useEffect(()=>{i(e.products.products[n(t)])},[e]);const s=rl(),l=Ka(),u=_=>{i({...r,[_.target.id]:_.currentTarget.value.split(" ")})},c=_=>{o({...a,[_.target.id]:_.currentTarget.value})},f=()=>{Vmt(r,e.setProducts),s("/app/ecommerce/management")},h=()=>{Ymt(a,e.setProducts),s("/app/ecommerce/management")},m=_=>{b?o({...r,img:_.target.value}):i({...r,img:_.target.value})},b=l.pathname==="/app/ecommerce/management/create";return d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:3,children:d.jsx(re,{size:12,children:d.jsx(et,{title:b?"New product":"Edit product",disableWidgetMenu:!0,children:wr.isBackend&&!e.products.isLoaded?d.jsx(ce,{display:"flex",justifyContent:"center",alignItems:"center",children:d.jsx(mc,{size:26})}):d.jsxs(ce,{display:"flex",flexDirection:"column",children:[d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Image"})}),d.jsx(ce,{width:200,children:d.jsx(pa,{value:b?a.img:r.img,fullWidth:!0,onChange:_=>m(_),children:e.products.images.map(_=>d.jsx($t,{value:_,children:d.jsx("img",{src:_,style:{height:100,width:200},alt:"ecommerce product"})},_))})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Title"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"title",margin:"normal",variant:"outlined",value:b?a.title:r.title,fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Subtitle"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"subtitle",margin:"normal",variant:"outlined",value:b?a.subtitle:r.subtitle,fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Price"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"price",margin:"normal",variant:"outlined",value:b?a.price:r.price,type:"number",fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Discount"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"discount",margin:"normal",variant:"outlined",value:b?a.discount:r.discount,type:"number",fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Description 1"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"description_1",margin:"normal",variant:"outlined",multiline:!0,value:b?a.description_1:r.description_1,fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Description 2"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"description_2",margin:"normal",variant:"outlined",multiline:!0,value:b?a.description_2:r.description_2,fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Code"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"code",margin:"normal",variant:"outlined",value:b?a.code:r.code,fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Hashtag"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"hashtag",margin:"normal",variant:"outlined",value:b?a.hashtag:r.hashtag,fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Technology"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"technology",margin:"normal",variant:"outlined",placeholder:"Add Tag",fullWidth:!0,value:b?a.technology.join(" "):r.technology.join(" "),onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(ce,{width:300,children:d.jsx(oe,{variant:"h6",children:"Rating"})}),d.jsx(ce,{width:500,children:d.jsx(wn,{id:"rating",margin:"normal",variant:"outlined",type:"number",value:b?a.rating:r.rating,fullWidth:!0,onChange:_=>b?c(_):u(_)})})]}),d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(gt,{variant:"contained",color:"success",style:{marginRight:8},onClick:()=>b?h():f(),children:b?"Save":"Edit"}),d.jsx(gt,{variant:"contained",onClick:()=>s("/app/ecommerce/management"),children:"Back"})]})]})})})})})},o1t=Zt(t=>({root:{"&:hover":{backgroundColor:"transparent"}},icon:{borderRadius:"50%",width:16,height:16,boxShadow:"inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)",backgroundColor:"#f5f8fa",backgroundImage:"linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))","$root.Mui-focusVisible &":{outline:"2px auto rgba(19,124,189,.6)",outlineOffset:2},"input:hover ~ &":{backgroundColor:"#ebf1f5"},"input:disabled ~ &":{boxShadow:"none",background:"rgba(206,217,224,.5)"}},checkedIcon:{backgroundColor:"#137cbd",backgroundImage:"linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))","&:before":{display:"block",width:16,height:16,backgroundImage:"radial-gradient(#fff,#fff 28%,transparent 32%)",content:'""'},"input:hover ~ &":{backgroundColor:"#106ba3"}},horizontalFormTop:{paddingTop:t.spacing(2)}})),s1t=fe(t=>d.jsx(xs,{color:"default",...t}))({color:"green","&.Mui-checked":{color:"green"}}),l1t=fe(t=>d.jsx(th,{color:"default",...t}))({color:"green","&.Mui-checked":{color:"green"}}),Lte=[{id:0,value:"Action"},{id:1,value:"Another action"},{id:2,value:"Something else here"},{id:3,type:"divider"},{id:4,value:"Separated link"}];function c1t(){const[t,e]=Ue.useState({default:!1,horizontal:!1}),[n,r]=Ue.useState("Action"),i=s=>{r(s.target.value)},a=o1t();function o(s){return d.jsx(th,{className:a.root,disableRipple:!0,color:"default",checkedIcon:d.jsx("span",{className:Nt(a.icon,a.checkedIcon)}),icon:d.jsx("span",{className:a.icon}),...s})}return d.jsx("div",{children:d.jsxs(re,{container:!0,spacing:4,children:[d.jsxs(re,{container:!0,spacing:4,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Horizontal form",bodyClass:a.horizontalFormTop,disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(re,{container:!0,direction:"column",spacing:3,children:[d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Normal field"})}),d.jsx(re,{size:6,children:d.jsx(vl,{id:"component-helper1",placeholder:"May have placeholder",style:{width:"100%"}})})]}),d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Label hint"})}),d.jsxs(re,{size:6,children:[d.jsx(vl,{id:"component-helper2","aria-describedby":"component-helper-text",style:{width:"100%"}}),d.jsx(Eoe,{id:"component-helper-text",children:"Some important helper text"})]})]}),d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Disabled input"})}),d.jsx(re,{size:6,children:d.jsx(vl,{disabled:!0,defaultValue:"Default value",id:"component-helper3",style:{width:"100%"}})})]}),d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Max length"})}),d.jsx(re,{size:6,children:d.jsx(vl,{id:"component-helper4",inputProps:{maxLength:3},style:{width:"100%"}})})]}),d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Prepended input"})}),d.jsx(re,{size:6,children:d.jsx(vl,{id:"component-helper5",startAdornment:d.jsx(Dg,{position:"start",children:d.jsx(AA,{})}),style:{width:"100%"}})})]}),d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Password"})}),d.jsx(re,{size:6,children:d.jsx(vl,{id:"component-helper6",startAdornment:d.jsx(Dg,{position:"start",children:d.jsx(tPe,{})}),style:{width:"100%"}})})]}),d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Appended input"})}),d.jsx(re,{size:6,children:d.jsx(vl,{id:"component-helper7",endAdornment:d.jsx(Dg,{position:"start",children:".00"}),style:{width:"100%"}})})]}),d.jsxs(re,{container:!0,alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Combined input"})}),d.jsx(re,{size:6,children:d.jsx(vl,{id:"component-helper8",startAdornment:d.jsx(Dg,{position:"start",children:d.jsx(WDe,{})}),endAdornment:d.jsx(Dg,{position:"start",children:".00"}),style:{width:"100%"}})})]}),d.jsxs(re,{container:!0,children:[d.jsx(re,{children:d.jsx(gt,{variant:"contained",color:"primary",style:{marginRight:8},children:"Save changes"})}),d.jsx(re,{children:d.jsx(gt,{variant:"contained",color:"secondary",children:"Cancel"})})]})]})})}),d.jsxs(re,{size:{xs:12,md:6},children:[d.jsx(re,{size:12,children:d.jsx(et,{title:"Default Form",disableWidgetMenu:!0,children:d.jsxs(re,{container:!0,justifyContent:"space-between",size:12,alignItems:"center",spacing:3,children:[d.jsxs(re,{size:{xs:12,md:6,lg:4},children:[d.jsx(oe,{variant:"body1",children:"Search type input"}),d.jsx(vl,{variant:"standard",color:"primary",type:"search",style:{marginTop:30},placeholder:"Search"})]}),d.jsxs(re,{size:{xs:12,md:6,lg:4},children:[d.jsx(oe,{variant:"body1",children:"Outlined input"}),d.jsx(wn,{id:"outlined-input",style:{marginTop:"16px"},variant:"outlined",placeholder:"Outlined"})]}),d.jsxs(re,{size:{xs:12,md:6,lg:4},children:[d.jsx(oe,{children:"Filled input"}),d.jsx(wn,{id:"outlined-input",style:{marginTop:"16px"},variant:"filled",placeholder:"Filled"})]})]})})}),d.jsx(re,{style:{marginTop:"2rem"},size:12,children:d.jsx(et,{title:"Selects",disableWidgetMenu:!0,children:d.jsxs(re,{container:!0,justifyContent:"space-between",size:12,alignItems:"center",spacing:3,children:[d.jsxs(re,{container:!0,spacing:6,direction:"row",size:12,justifyContent:"space-between",alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Default select"})}),d.jsx(re,{size:6,children:d.jsx(pa,{labelId:"demo-simple-select-label",id:"demo-simple-select",style:{alignSelf:"flex-end"},value:n,onChange:i,children:Lte.map(s=>s.type==="divider"?d.jsx(Ys,{},s.id):d.jsx($t,{value:s.value,children:s.value},s.id))})})]}),d.jsxs(re,{container:!0,spacing:6,direction:"row",size:12,justifyContent:"space-between",alignItems:"center",children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Grouped select"})}),d.jsx(re,{size:6,children:d.jsx(pa,{style:{},labelId:"demo-simple-select-label",id:"demo-simple-select",value:n,onChange:i,children:Lte.map(s=>s.type==="divider"?d.jsx(Ys,{},s.id):d.jsx($t,{value:s.value,children:s.value},s.id))})})]})]})})})]})]}),d.jsx(re,{container:!0,spacing:4,children:d.jsx(re,{size:12,children:d.jsx(et,{title:"Control sizing",disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(re,{container:!0,direction:"column",spacing:4,children:[d.jsxs(re,{children:["Fancy smaller inputs? Use the size",d.jsx(Kt,{row:!0,inline:!0,children:"small"}),"prop."," ",d.jsx(wn,{label:'Size="small"',placeholder:"Size small",size:"small",variant:"outlined",fullWidth:!0})]}),d.jsx(re,{children:d.jsx(wn,{label:'Size="normal"',placeholder:"Size normal",variant:"outlined",fullWidth:!0})})]})})})}),d.jsxs(re,{container:!0,spacing:4,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Input variants",disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(re,{container:!0,direction:"column",children:[d.jsx(oe,{children:"Custom checkboxes & radios"}),d.jsxs(re,{children:[d.jsx($s,{control:d.jsx(xs,{disabled:!0,defaultChecked:t.default,onChange:s=>e({[s.target.value]:!t.default}),value:"checkedG"}),label:"Disabled"}),d.jsx($s,{control:d.jsx(s1t,{defaultChecked:t.default,onChange:s=>e({[s.target.value]:!t.default}),value:"checkedG"}),label:"Custom color"}),d.jsx($s,{control:d.jsx(xs,{icon:d.jsx(v5e,{}),checkedIcon:d.jsx(Vp,{}),value:"checkedH"}),label:"Custom icon"}),d.jsx($s,{control:d.jsx(xs,{icon:d.jsx(u5e,{fontSize:"small"}),checkedIcon:d.jsx(c5e,{fontSize:"small"}),value:"checkedI"}),label:"Custom size"})]}),d.jsxs(re,{children:[d.jsx($s,{control:d.jsx(th,{disabled:!0,defaultChecked:t.default,onChange:s=>e({[s.target.value]:!t.default}),value:"c",name:"radio-button-demo",inputProps:{"aria-label":"C"}}),label:"Disabled"}),d.jsx($s,{control:d.jsx(l1t,{defaultChecked:t.default,onChange:s=>e({[s.target.value]:!t.default}),value:"c",name:"radio-button-demo",inputProps:{"aria-label":"C"}}),label:"Custom color"}),d.jsx($s,{control:d.jsx(th,{defaultChecked:t.default,onChange:s=>e({[s.target.value]:!t.default}),value:"e",color:"default",name:"radio-button-demo",inputProps:{"aria-label":"E"},icon:d.jsx(j5e,{fontSize:"small"}),checkedIcon:d.jsx(F5e,{fontSize:"small"})}),label:"Small radio"}),d.jsx($s,{value:"a",control:d.jsx(o,{}),label:"Custom style"}),d.jsxs(re,{children:[d.jsx(wn,{error:!0,label:"Error input",placeholder:"Input with an error",variant:"outlined",fullWidth:!0,style:{marginBottom:"1rem"}}),d.jsx(wn,{color:"success",label:"Success input",placeholder:"Input with success",variant:"outlined",fullWidth:!0,focused:!0})]})]})]})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsxs(et,{title:"Textareas",disableWidgetMenu:!0,inheritHeight:!0,children:[d.jsx(re,{size:6,children:d.jsx(oe,{variant:"body1",children:"Simple textarea"})}),d.jsx(re,{container:!0,alignItems:"center",children:d.jsx(re,{size:12,children:d.jsx(wn,{id:"outlined-multiline-static",label:"Multiline",multiline:!0,rows:4,defaultValue:"Default Value",style:{marginTop:"1rem",width:"100%"}})})})]})})]})]})})}const u1t=()=>{const[e,n]=Ue.useState(""),[r,i]=Ue.useState(""),[a,o]=Ue.useState(!1),s=a&&!e.trim(),l=r.length>0&&r.length<10,u=()=>{o(!0)},c=()=>{o(!1),n(""),i("")};return d.jsx("div",{children:d.jsx(re,{container:!0,spacing:6,children:d.jsx(re,{size:12,children:d.jsx(et,{title:"Dead simple validation",disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(ce,{sx:{maxWidth:860,width:"100%",mx:"auto"},children:[d.jsx(oe,{variant:"body2",color:"text",colorBrightness:"secondary",style:{marginBottom:16},children:"Basic example with required and minimum-length validation."}),d.jsxs(re,{container:!0,direction:"column",spacing:2.5,children:[d.jsx(re,{size:12,children:d.jsx(ce,{sx:{p:2.5,border:"1px solid",borderColor:"divider",borderRadius:2,backgroundColor:"background.default"},children:d.jsxs(re,{container:!0,spacing:2,alignItems:"center",children:[d.jsxs(re,{size:{xs:12,md:4},children:[d.jsx(oe,{variant:"body1",weight:"medium",children:"Simple required"}),d.jsx(oe,{variant:"caption",color:"text",colorBrightness:"secondary",children:"Checked when you click Validate"})]}),d.jsx(re,{size:{xs:12,md:8},children:d.jsx(wn,{id:"component-helper9",style:{width:"100%"},value:e,onChange:f=>n(f.target.value),error:s,helperText:s?"This field is required":" "})})]})})}),d.jsx(re,{size:12,children:d.jsx(ce,{sx:{p:2.5,border:"1px solid",borderColor:"divider",borderRadius:2,backgroundColor:"background.default"},children:d.jsxs(re,{container:!0,spacing:2,alignItems:"center",children:[d.jsxs(re,{size:{xs:12,md:4},children:[d.jsx(oe,{variant:"body1",weight:"medium",children:"Min-length on change"}),d.jsxs(oe,{variant:"caption",color:"text",colorBrightness:"secondary",children:["At least ",10," characters"]})]}),d.jsx(re,{size:{xs:12,md:8},children:d.jsx(wn,{id:"component-helper10",style:{width:"100%"},value:r,onChange:f=>i(f.target.value),error:l,helperText:l?`At least 10 characters (${r.length}/10)`:" "})})]})})}),d.jsx(re,{size:12,children:d.jsxs(ce,{display:"flex",justifyContent:"flex-end",gap:1.5,children:[d.jsx(gt,{variant:"outlined",onClick:c,children:"Reset"}),d.jsx(gt,{variant:"contained",color:"success",onClick:u,children:"Validate"})]})})]})]})})})})})};var d1t=Object.defineProperty,f1t=Object.defineProperties,p1t=Object.getOwnPropertyDescriptors,Bte=Object.getOwnPropertySymbols,h1t=Object.prototype.hasOwnProperty,g1t=Object.prototype.propertyIsEnumerable,Fte=(t,e,n)=>e in t?d1t(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vn=(t,e)=>{for(var n in e||(e={}))h1t.call(e,n)&&Fte(t,n,e[n]);if(Bte)for(var n of Bte(e))g1t.call(e,n)&&Fte(t,n,e[n]);return t},rr=(t,e)=>f1t(t,p1t(e));class yi{static isSSR(){return typeof window>"u"||typeof document>"u"}static isBrowser(){return!this.isSSR()}static hasAPI(e){return this.isSSR()?!1:typeof window[e]<"u"}}class yT{constructor(e,n=null){this.nodeName=e,this.namespaceURI=n,this.attributes=new Map,this.children=[],this.textContent="",this.style={},this.classList=new m1t,this.parentNode=null}setAttribute(e,n){this.attributes.set(e,n)}getAttribute(e){return this.attributes.get(e)}removeAttribute(e){this.attributes.delete(e)}hasAttribute(e){return this.attributes.has(e)}appendChild(e){return e&&e!==this&&(e.parentNode=this,this.children.push(e)),e}removeChild(e){const n=this.children.indexOf(e);return n!==-1&&(this.children.splice(n,1),e.parentNode=null),e}insertBefore(e,n){if(!n)return this.appendChild(e);const r=this.children.indexOf(n);return r!==-1&&(e.parentNode=this,this.children.splice(r,0,e)),e}cloneNode(e=!1){const n=new yT(this.nodeName,this.namespaceURI);return n.textContent=this.textContent,this.attributes.forEach((r,i)=>{n.attributes.set(i,r)}),Object.assign(n.style,this.style),e&&this.children.forEach(r=>{r.cloneNode&&n.appendChild(r.cloneNode(!0))}),n}getBoundingClientRect(){return{width:this._ssrWidth||0,height:this._ssrHeight||0,top:0,left:0,right:this._ssrWidth||0,bottom:this._ssrHeight||0,x:0,y:0}}getRootNode(){let e=this;for(;e.parentNode;)e=e.parentNode;return e}toString(){let e="";if(this.attributes.forEach((r,i)=>{e+=` ${i}="${r}"`}),this.children.length===0&&!this.textContent)return`<${this.nodeName}${e}/>`;const n=this.children.map(r=>r.toString()).join("");return`<${this.nodeName}${e}>${this.textContent}${n}`}get innerHTML(){return this.children.map(e=>e.toString()).join("")}set innerHTML(e){this.children=[],this.textContent=e}get outerHTML(){return this.toString()}get isConnected(){return!0}}class m1t{constructor(){this.classes=new Set}add(...e){e.forEach(n=>this.classes.add(n))}remove(...e){e.forEach(n=>this.classes.delete(n))}contains(e){return this.classes.has(e)}toggle(e,n){return n===!0?(this.classes.add(e),!0):n===!1?(this.classes.delete(e),!1):this.classes.has(e)?(this.classes.delete(e),!1):(this.classes.add(e),!0)}toString(){return Array.from(this.classes).join(" ")}}class b1t{constructor(){this.SVGNS="http://www.w3.org/2000/svg",this.XLINKNS="http://www.w3.org/1999/xlink"}createElementNS(e,n){return new yT(n,e)}createTextNode(e){return{nodeName:"#text",nodeType:3,textContent:e,toString(){return this.textContent}}}querySelector(){return null}querySelectorAll(){return[]}getComputedStyle(){return{}}getBoundingClientRect(e){return e&&e.getBoundingClientRect?e.getBoundingClientRect():{width:0,height:0,top:0,left:0,right:0,bottom:0,x:0,y:0}}createXMLSerializer(){return{serializeToString(e){return e.toString?e.toString():""}}}createDOMParser(){return{parseFromString(e,n){const r=new yT("root");return r.innerHTML=e,{documentElement:r}}}}}let js=null,mg=null,bg=null;class Ma{static init(){yi.isSSR()&&!js&&(js=new b1t)}static createElementNS(e,n){return yi.isSSR()?(js||this.init(),js.createElementNS(e,n)):document.createElementNS(e,n)}static createTextNode(e){return yi.isSSR()?(js||this.init(),js.createTextNode(e)):document.createTextNode(e)}static querySelector(e){return yi.isSSR()?null:document.querySelector(e)}static querySelectorAll(e){return yi.isSSR()?[]:document.querySelectorAll(e)}static getComputedStyle(e){return yi.isSSR()?{}:window.getComputedStyle(e)}static getBoundingClientRect(e){return yi.isSSR()?(js||this.init(),js.getBoundingClientRect(e)):e?e.getBoundingClientRect():{width:0,height:0,top:0,left:0,right:0,bottom:0,x:0,y:0}}static getXMLSerializer(){return yi.isSSR()?(js||this.init(),mg||(mg=js.createXMLSerializer()),mg):(mg||(mg=new XMLSerializer),mg)}static getDOMParser(){return yi.isSSR()?(js||this.init(),bg||(bg=js.createDOMParser()),bg):(bg||(bg=new DOMParser),bg)}static addWindowEventListener(e,n,r){yi.isBrowser()&&window.addEventListener(e,n,r)}static removeWindowEventListener(e,n,r){yi.isBrowser()&&window.removeEventListener(e,n,r)}static requestAnimationFrame(e){return yi.isBrowser()?window.requestAnimationFrame(e):(e(),null)}static cancelAnimationFrame(e){yi.isBrowser()&&e&&window.cancelAnimationFrame(e)}static elementExists(e){return e?yi.isSSR()?e._ssrMode===!0||e.nodeName!==void 0:e.getRootNode?e.getRootNode({composed:!0})===document||e.isConnected:!1:!1}static getWindow(){return yi.isBrowser()?window:null}static getDocument(){return yi.isBrowser()?document:null}static _getShim(){return js}static _resetShim(){js=null,mg=null,bg=null}}let Ee=class ub{static bind(e,n){return function(){return e.apply(n,arguments)}}static isObject(e){return e&&typeof e=="object"&&!Array.isArray(e)}static is(e,n){return Object.prototype.toString.call(n)==="[object "+e+"]"}static isSafari(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}static listToArray(e){let n,r=[];for(n=0;n{this.isObject(n[i])?i in e?r[i]=this.extend(e[i],n[i]):Object.assign(r,{[i]:n[i]}):Object.assign(r,{[i]:n[i]})}),r}static extendArray(e,n){let r=[];return e.map(i=>{r.push(ub.extend(n,i))}),e=r,e}static monthMod(e){return e%12}static clone(e,n=new WeakMap,r=!1){if(e===null||typeof e!="object")return e;if(n.has(e))return n.get(e);let i;if(Array.isArray(e))if(r)i=e.slice();else{i=[],n.set(e,i);for(let a=0;a(Array.isArray(r)&&(r=r.reduce((i,a)=>i.length>a.length?i:a)),n.length>r.length?n:r),0)}static hexToRgba(e="#999999",n=.6){e.substring(0,1)!=="#"&&(e="#999999");let r=e.replace("#","");r=r.match(new RegExp("(.{"+r.length/3+"})","g"));for(let i=0;i>16,s=r>>8&255,l=r&255;return"#"+(16777216+(Math.round((i-o)*a)+o)*65536+(Math.round((i-s)*a)+s)*256+(Math.round((i-l)*a)+l)).toString(16).slice(1)}shadeColor(e,n){return ub.isColorHex(n)?this.shadeHexColor(e,n):this.shadeRGBColor(e,n)}static isColorHex(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(e)}static isCSSVariable(e){if(typeof e!="string")return!1;const n=e.trim();return n.startsWith("var(")&&n.endsWith(")")}static getThemeColor(e){if(!ub.isCSSVariable(e))return e;const n=document.createElement("div");n.style.cssText="position:fixed; left: -9999px; visibility:hidden;",n.style.color=e,document.body.appendChild(n);let r;try{r=window.getComputedStyle(n).color}finally{n.parentNode&&n.parentNode.removeChild(n)}return r}static getPolygonPos(e,n){let r=[],i=Math.PI*2/n;for(let a=0;a{}[\]\\/]/gi,n),r}static negToZero(e){return e<0?0:e}static moveIndexInArray(e,n,r){if(r>=e.length){let i=r-e.length+1;for(;i--;)e.push(void 0)}return e.splice(r,0,e.splice(n,1)[0]),e}static extractNumber(e){return parseFloat(e.replace(/[^\d.]*/g,""))}static findAncestor(e,n){for(;(e=e.parentElement)&&!e.classList.contains(n););return e}static setELstyles(e,n){for(let r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e.style.key=n[r])}static preciseAddition(e,n){let r=(String(e).split(".")[1]||"").length,i=(String(n).split(".")[1]||"").length,a=Math.pow(10,Math.max(r,i));return(Math.round(e*a)+Math.round(n*a))/a}static isNumber(e){return!isNaN(e)&&parseFloat(Number(e))===e&&!isNaN(parseInt(e,10))}static isFloat(e){return Number(e)===e&&e%1!==0}static isMsEdge(){let e=window.navigator.userAgent,n=e.indexOf("Edge/");return n>0?parseInt(e.substring(n+5,e.indexOf(".",n)),10):!1}static getGCD(e,n,r=7){let i=Math.pow(10,r-Math.floor(Math.log10(Math.max(e,n))));for(i>1?(e=Math.round(Math.abs(e)*i),n=Math.round(Math.abs(n)*i)):i=1;n;){let a=n;n=e%n,e=a}return e/i}static getPrimeFactors(e){const n=[];let r=2;for(;e>=2;)e%r==0?(n.push(r),e=e/r):r++;return n}static mod(e,n,r=7){let i=Math.pow(10,r-Math.floor(Math.log10(Math.max(e,n))));return e=Math.round(Math.abs(e)*i),n=Math.round(Math.abs(n)*i),e%n/i}};class G_{constructor(e){this.ctx=e,this.w=e.w}animateLine(e,n,r,i){e.attr(n).animate(i).attr(r)}animateMarker(e,n,r,i){e.attr({opacity:0}).animate(n).attr({opacity:1}).after(()=>{i()})}animateRect(e,n,r,i,a){e.attr(n).animate(i).attr(r).after(()=>a())}animatePathsGradually(e){let{el:n,realIndex:r,j:i,fill:a,pathFrom:o,pathTo:s,speed:l,delay:u}=e,c=this,f=this.w,h=0;f.config.chart.animations.animateGradually.enabled&&(h=f.config.chart.animations.animateGradually.delay),f.config.chart.animations.dynamicAnimation.enabled&&f.globals.dataChanged&&f.config.chart.type!=="bar"&&(h=0),c.morphSVG(n,r,i,f.config.chart.type==="line"&&!f.globals.comboCharts?"stroke":a,o,s,l,u*h)}showDelayedElements(){this.w.globals.delayedElements.forEach(e=>{const n=e.el;n.classList.remove("apexcharts-element-hidden"),n.classList.add("apexcharts-hidden-element-shown")})}animationCompleted(e){const n=this.w;n.globals.animationEnded||(n.globals.animationEnded=!0,this.showDelayedElements(),typeof n.config.chart.events.animationEnd=="function"&&n.config.chart.events.animationEnd(this.ctx,{el:e,w:n}))}morphSVG(e,n,r,i,a,o,s,l){let u=this.w;a||(a=e.attr("pathFrom")),o||(o=e.attr("pathTo"));const c=()=>(u.config.chart.type==="radar"&&(s=1),`M 0 ${u.globals.gridHeight}`);(!a||a.indexOf("undefined")>-1||a.indexOf("NaN")>-1)&&(a=c()),(!o.trim()||o.indexOf("undefined")>-1||o.indexOf("NaN")>-1)&&(o=c()),u.globals.shouldAnimate||(s=1),e.plot(a).animate(1,l).plot(a).animate(s,l).plot(o).after(()=>{Ee.isNumber(r)?r===u.globals.series[u.globals.maxValsInArrayIndex].length-2&&u.globals.shouldAnimate&&this.animationCompleted(e):i!=="none"&&u.globals.shouldAnimate&&(!u.globals.comboCharts&&n===u.globals.series.length-1||u.globals.comboCharts)&&this.animationCompleted(e),this.showDelayedElements()})}}class Io{constructor(e){this.ctx=e,this.w=e.w}getDefaultFilter(e,n){const r=this.w;e.unfilter&&e.unfilter(!0),r.config.chart.dropShadow.enabled&&this.dropShadow(e,r.config.chart.dropShadow,n)}applyFilter(e,n,r){var i,a,o;const s=this.w;if(e.unfilter&&e.unfilter(!0),r==="none"){this.getDefaultFilter(e,n);return}const l=s.config.chart.dropShadow,u=r==="lighten"?2:.3;e.filterWith&&(e.filterWith(c=>{c.colorMatrix({type:"matrix",values:` + ${u} 0 0 0 0 + 0 ${u} 0 0 0 + 0 0 ${u} 0 0 + 0 0 0 1 0 + `,in:"SourceGraphic",result:"brightness"}),l.enabled&&this.addShadow(c,n,l,"brightness")}),l.noUserSpaceOnUse||(a=(i=e.filterer())==null?void 0:i.node)==null||a.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize((o=e.filterer())==null?void 0:o.node))}addShadow(e,n,r,i){var a;const o=this.w;let{blur:s,top:l,left:u,color:c,opacity:f}=r;if(c=Array.isArray(c)?c[n]:c,((a=o.config.chart.dropShadow.enabledOnSeries)==null?void 0:a.length)>0&&o.config.chart.dropShadow.enabledOnSeries.indexOf(n)===-1)return e;e.offset({in:i,dx:u,dy:l,result:"offset"}),e.gaussianBlur({in:"offset",stdDeviation:s,result:"blur"}),e.flood({"flood-color":c,"flood-opacity":f,result:"flood"}),e.composite({in:"flood",in2:"blur",operator:"in",result:"shadow"}),e.merge(["shadow",i])}dropShadow(e,n,r=0){var i,a,o,s,l;const u=this.w;return e.unfilter&&e.unfilter(!0),Ee.isMsEdge()&&u.config.chart.type==="radialBar"||((i=u.config.chart.dropShadow.enabledOnSeries)==null?void 0:i.length)>0&&((a=u.config.chart.dropShadow.enabledOnSeries)==null?void 0:a.indexOf(r))===-1||e.filterWith&&(e.filterWith(c=>{this.addShadow(c,r,n,"SourceGraphic")}),n.noUserSpaceOnUse||(s=(o=e.filterer())==null?void 0:o.node)==null||s.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize((l=e.filterer())==null?void 0:l.node)),e}setSelectionFilter(e,n,r){const i=this.w;if(typeof i.globals.selectedDataPoints[n]<"u"&&i.globals.selectedDataPoints[n].indexOf(r)>-1){e.node.setAttribute("selected",!0);let a=i.config.states.active.filter;a!=="none"&&this.applyFilter(e,n,a.type)}}_scaleFilterSize(e){if(!e)return;(r=>{for(let i in r)Object.prototype.hasOwnProperty.call(r,i)&&e.setAttribute(i,r[i])})({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}class at{constructor(e){this.ctx=e,this.w=e.w}roundPathCorners(e,n){e.indexOf("NaN")>-1&&(e="");function r(D,P,j){var M=P.x-D.x,z=P.y-D.y,G=Math.sqrt(M*M+z*z);return i(D,P,Math.min(1,j/G))}function i(D,P,j){return{x:D.x+(P.x-D.x)*j,y:D.y+(P.y-D.y)*j}}function a(D,P){D.length>2&&(D[D.length-2]=P.x,D[D.length-1]=P.y)}function o(D){return{x:parseFloat(D[D.length-2]),y:parseFloat(D[D.length-1])}}var s=e.split(/[,\s]/).reduce(function(D,P){var j=P.match(/^([a-zA-Z])(.+)/);return j?(D.push(j[1]),D.push(j[2])):D.push(P),D},[]),l=s.reduce(function(D,P){return parseFloat(P)==P&&D.length?D[D.length-1].push(P):D.push([P]),D},[]),u=[];if(l.length>1){var c=o(l[0]),f=null;l[l.length-1][0]=="Z"&&l[0].length>2&&(f=["L",c.x,c.y],l[l.length-1]=f),u.push(l[0]);for(var h=1;h2&&b[0]=="L"&&_.length>2&&_[0]=="L"){var y=o(m),x=o(b),C=o(_),A,R;A=r(x,y,n),R=r(x,C,n),a(b,A),b.origPoint=x,u.push(b);var I=i(A,x,.5),O=i(x,R,.5),N=["C",I.x,I.y,O.x,O.y,R.x,R.y];N.origPoint=x,u.push(N)}else u.push(b)}if(f){var k=o(u[u.length-1]);u.push(["Z"]),a(u[0],k)}}else u=l;return u.reduce(function(D,P){return D+P.join(" ")+" "},"")}drawLine(e,n,r,i,a="#a8a8a8",o=0,s=null,l="butt"){return this.w.globals.dom.Paper.line().attr({x1:e,y1:n,x2:r,y2:i,stroke:a,"stroke-dasharray":o,"stroke-width":s,"stroke-linecap":l})}drawRect(e=0,n=0,r=0,i=0,a=0,o="#fefefe",s=1,l=null,u=null,c=0){let h=this.w.globals.dom.Paper.rect();return h.attr({x:e,y:n,width:r>0?r:0,height:i>0?i:0,rx:a,ry:a,opacity:s,"stroke-width":l!==null?l:0,stroke:u!==null?u:"none","stroke-dasharray":c}),h.node.setAttribute("fill",o),h}drawPolygon(e,n="#e1e1e1",r=1,i="none"){return this.w.globals.dom.Paper.polygon(e).attr({fill:i,stroke:n,"stroke-width":r})}drawCircle(e,n=null){const r=this.w;e<0&&(e=0);const i=r.globals.dom.Paper.circle(e*2);return n!==null&&i.attr(n),i}drawPath({d:e="",stroke:n="#a8a8a8",strokeWidth:r=1,fill:i,fillOpacity:a=1,strokeOpacity:o=1,classes:s,strokeLinecap:l=null,strokeDashArray:u=0}){let c=this.w;return l===null&&(l=c.config.stroke.lineCap),(e.indexOf("undefined")>-1||e.indexOf("NaN")>-1)&&(e=`M 0 ${c.globals.gridHeight}`),c.globals.dom.Paper.path(e).attr({fill:i,"fill-opacity":a,stroke:n,"stroke-opacity":o,"stroke-linecap":l,"stroke-width":r,"stroke-dasharray":u,class:s})}group(e=null){const r=this.w.globals.dom.Paper.group();return e!==null&&r.attr(e),r}move(e,n){return["M",e,n].join(" ")}line(e,n,r=null){let i=null;return r===null?i=[" L",e,n].join(" "):r==="H"?i=[" H",e].join(" "):r==="V"&&(i=[" V",n].join(" ")),i}curve(e,n,r,i,a,o){return["C",e,n,r,i,a,o].join(" ")}quadraticCurve(e,n,r,i){return["Q",e,n,r,i].join(" ")}arc(e,n,r,i,a,o,s,l=!1){let u="A";return l&&(u="a"),[u,e,n,r,i,a,o,s].join(" ")}renderPaths({j:e,realIndex:n,pathFrom:r,pathTo:i,stroke:a,strokeWidth:o,strokeLinecap:s,fill:l,animationDelay:u,initialSpeed:c,dataChangeSpeed:f,className:h,chartType:m,shouldClipToGrid:b=!0,bindEventsOnPaths:_=!0,drawShadow:y=!0}){let x=this.w;const C=new Io(this.ctx),A=new G_(this.ctx);let R=this.w.config.chart.animations.enabled,I=R&&this.w.config.chart.animations.dynamicAnimation.enabled;if(r&&r.startsWith("M 0 0")&&i){const M=i.match(/^M\s+[\d.-]+\s+[\d.-]+/);M&&(r=r.replace(/^M\s+0\s+0/,M[0]))}let O,N=!!(R&&!x.globals.resized||I&&x.globals.dataChanged&&x.globals.shouldAnimate);N?O=r:(O=i,x.globals.animationEnded=!0);let k=x.config.stroke.dashArray,D=0;Array.isArray(k)?D=k[n]:D=x.config.stroke.dashArray;let P=this.drawPath({d:O,stroke:a,strokeWidth:o,fill:l,fillOpacity:1,classes:h,strokeLinecap:s,strokeDashArray:D});P.attr("index",n),b&&(m==="bar"&&!x.globals.isHorizontal||x.globals.comboCharts?P.attr({"clip-path":`url(#gridRectBarMask${x.globals.cuid})`}):P.attr({"clip-path":`url(#gridRectMask${x.globals.cuid})`})),x.config.chart.dropShadow.enabled&&y&&C.dropShadow(P,x.config.chart.dropShadow,n),_&&(P.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,P)),P.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,P)),P.node.addEventListener("mousedown",this.pathMouseDown.bind(this,P))),P.attr({pathTo:i,pathFrom:r});const j={el:P,j:e,realIndex:n,pathFrom:r,pathTo:i,fill:l,strokeWidth:o,delay:u};return R&&!x.globals.resized&&!x.globals.dataChanged?A.animatePathsGradually(rr(vn({},j),{speed:c})):(x.globals.resized||!x.globals.dataChanged)&&A.showDelayedElements(),x.globals.dataChanged&&I&&N&&A.animatePathsGradually(rr(vn({},j),{speed:f})),P}drawPattern(e,n,r,i="#a8a8a8",a=0){return this.w.globals.dom.Paper.pattern(n,r,l=>{e==="horizontalLines"?l.line(0,0,r,0).stroke({color:i,width:a+1}):e==="verticalLines"?l.line(0,0,0,n).stroke({color:i,width:a+1}):e==="slantedLines"?l.line(0,0,n,r).stroke({color:i,width:a}):e==="squares"?l.rect(n,r).fill("none").stroke({color:i,width:a}):e==="circles"&&l.circle(n).fill("none").stroke({color:i,width:a})})}drawGradient(e,n,r,i,a,o=null,s=null,l=[],u=0){let c=this.w,f;n.length<9&&n.indexOf("#")===0&&(n=Ee.hexToRgba(n,i)),r.length<9&&r.indexOf("#")===0&&(r=Ee.hexToRgba(r,a));let h=0,m=1,b=1,_=null;s!==null&&(h=typeof s[0]<"u"?s[0]/100:0,m=typeof s[1]<"u"?s[1]/100:1,b=typeof s[2]<"u"?s[2]/100:1,_=typeof s[3]<"u"?s[3]/100:null);let y=c.config.chart.type==="donut"||c.config.chart.type==="pie"||c.config.chart.type==="polarArea"||c.config.chart.type==="bubble";if(!l||l.length===0?f=c.globals.dom.Paper.gradient(y?"radial":"linear",x=>{x.stop(h,n,i),x.stop(m,r,a),x.stop(b,r,a),_!==null&&x.stop(_,n,i)}):f=c.globals.dom.Paper.gradient(y?"radial":"linear",x=>{(Array.isArray(l[u])?l[u]:l).forEach(A=>{x.stop(A.offset/100,A.color,A.opacity)})}),!y)e==="vertical"?f.from(0,0).to(0,1):e==="diagonal"?f.from(0,0).to(1,1):e==="horizontal"?f.from(0,1).to(1,1):e==="diagonal2"&&f.from(1,0).to(0,1);else{let x=c.globals.gridWidth/2,C=c.globals.gridHeight/2;c.config.chart.type!=="bubble"?f.attr({gradientUnits:"userSpaceOnUse",cx:x,cy:C,r:o}):f.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}return f}getTextBasedOnMaxWidth({text:e,maxWidth:n,fontSize:r,fontFamily:i}){const a=this.getTextRects(e,r,i),o=a.width/e.length,s=Math.floor(n/o);return n"u"&&(r="");let _=r;i||(i="start"),(!l||!l.length)&&(l=b.config.chart.foreColor),o=o||b.config.chart.fontFamily,a=a||"11px",s=s||"regular";const y={maxWidth:c,fontSize:a,fontFamily:o};let x;return Array.isArray(r)?x=b.globals.dom.Paper.text(C=>{for(let A=0;AC.tspan(_))),x.attr({x:e,y:n,"text-anchor":i,"dominant-baseline":m,"font-size":a,"font-family":o,"font-weight":s,fill:l,class:"apexcharts-text "+f}),x.node.style.fontFamily=o,x.node.style.opacity=u,x}getMarkerPath(e,n,r,i){let a="";switch(r){case"cross":i=i/1.4,a=`M ${e-i} ${n-i} L ${e+i} ${n+i} M ${e-i} ${n+i} L ${e+i} ${n-i}`;break;case"plus":i=i/1.12,a=`M ${e-i} ${n} L ${e+i} ${n} M ${e} ${n-i} L ${e} ${n+i}`;break;case"star":case"sparkle":{let o=5;i=i*1.15,r==="sparkle"&&(i=i/1.1,o=4);const s=Math.PI/o;for(let l=0;l<=2*o;l++){const u=l*s,c=l%2===0?i:i/2,f=e+c*Math.sin(u),h=n-c*Math.cos(u);a+=(l===0?"M":"L")+f+","+h}a+="Z";break}case"triangle":a=`M ${e} ${n-i} + L ${e+i} ${n+i} + L ${e-i} ${n+i} + Z`;break;case"square":case"rect":i=i/1.125,a=`M ${e-i} ${n-i} + L ${e+i} ${n-i} + L ${e+i} ${n+i} + L ${e-i} ${n+i} + Z`;break;case"diamond":i=i*1.05,a=`M ${e} ${n-i} + L ${e+i} ${n} + L ${e} ${n+i} + L ${e-i} ${n} + Z`;break;case"line":i=i/1.1,a=`M ${e-i} ${n} + L ${e+i} ${n}`;break;default:i=i*2,a=`M ${e}, ${n} + m -${i/2}, 0 + a ${i/2},${i/2} 0 1,0 ${i},0 + a ${i/2},${i/2} 0 1,0 -${i},0`;break}return a}drawMarkerShape(e,n,r,i,a){const o=this.drawPath({d:this.getMarkerPath(e,n,r,i,a),stroke:a.pointStrokeColor,strokeDashArray:a.pointStrokeDashArray,strokeWidth:a.pointStrokeWidth,fill:a.pointFillColor,fillOpacity:a.pointFillOpacity,strokeOpacity:a.pointStrokeOpacity});return o.attr({cx:e,cy:n,shape:a.shape,class:a.class?a.class:""}),o}drawMarker(e,n,r){e=e||0;let i=r.pSize||0;return Ee.isNumber(n)||(i=0,n=0),this.drawMarkerShape(e,n,r?.shape,i,vn(vn({},r),r.shape==="line"||r.shape==="plus"||r.shape==="cross"?{pointStrokeColor:r.pointFillColor,pointStrokeOpacity:r.pointFillOpacity}:{}))}pathMouseEnter(e,n){let r=this.w;const i=new Io(this.ctx),a=parseInt(e.node.getAttribute("index"),10),o=parseInt(e.node.getAttribute("j"),10);if(typeof r.config.chart.events.dataPointMouseEnter=="function"&&r.config.chart.events.dataPointMouseEnter(n,this.ctx,{seriesIndex:a,dataPointIndex:o,w:r}),this.ctx.events.fireEvent("dataPointMouseEnter",[n,this.ctx,{seriesIndex:a,dataPointIndex:o,w:r}]),!(r.config.states.active.filter.type!=="none"&&e.node.getAttribute("selected")==="true")&&r.config.states.hover.filter.type!=="none"&&!r.globals.isTouchDevice){let s=r.config.states.hover.filter;i.applyFilter(e,a,s.type)}}pathMouseLeave(e,n){let r=this.w;const i=new Io(this.ctx),a=parseInt(e.node.getAttribute("index"),10),o=parseInt(e.node.getAttribute("j"),10);typeof r.config.chart.events.dataPointMouseLeave=="function"&&r.config.chart.events.dataPointMouseLeave(n,this.ctx,{seriesIndex:a,dataPointIndex:o,w:r}),this.ctx.events.fireEvent("dataPointMouseLeave",[n,this.ctx,{seriesIndex:a,dataPointIndex:o,w:r}]),!(r.config.states.active.filter.type!=="none"&&e.node.getAttribute("selected")==="true")&&r.config.states.hover.filter.type!=="none"&&i.getDefaultFilter(e,a)}pathMouseDown(e,n){let r=this.w;const i=new Io(this.ctx),a=parseInt(e.node.getAttribute("index"),10),o=parseInt(e.node.getAttribute("j"),10);let s="false";if(e.node.getAttribute("selected")==="true"){if(e.node.setAttribute("selected","false"),r.globals.selectedDataPoints[a].indexOf(o)>-1){let l=r.globals.selectedDataPoints[a].indexOf(o);r.globals.selectedDataPoints[a].splice(l,1)}}else{if(!r.config.states.active.allowMultipleDataPointsSelection&&r.globals.selectedDataPoints.length>0){r.globals.selectedDataPoints=[];const l=r.globals.dom.Paper.find(".apexcharts-series path:not(.apexcharts-decoration-element)"),u=r.globals.dom.Paper.find(".apexcharts-series circle:not(.apexcharts-decoration-element), .apexcharts-series rect:not(.apexcharts-decoration-element)"),c=f=>{Array.prototype.forEach.call(f,h=>{h.node.setAttribute("selected","false"),i.getDefaultFilter(h,a)})};c(l),c(u)}e.node.setAttribute("selected","true"),s="true",typeof r.globals.selectedDataPoints[a]>"u"&&(r.globals.selectedDataPoints[a]=[]),r.globals.selectedDataPoints[a].push(o)}if(s==="true"){let l=r.config.states.active.filter;if(l!=="none")i.applyFilter(e,a,l.type);else if(r.config.states.hover.filter!=="none"&&!r.globals.isTouchDevice){let u=r.config.states.hover.filter;i.applyFilter(e,a,u.type)}}else if(r.config.states.active.filter.type!=="none")if(r.config.states.hover.filter.type!=="none"&&!r.globals.isTouchDevice){let l=r.config.states.hover.filter;i.applyFilter(e,a,l.type)}else i.getDefaultFilter(e,a);typeof r.config.chart.events.dataPointSelection=="function"&&r.config.chart.events.dataPointSelection(n,this.ctx,{selectedDataPoints:r.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:o,w:r}),n&&this.ctx.events.fireEvent("dataPointSelection",[n,this.ctx,{selectedDataPoints:r.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:o,w:r}])}rotateAroundCenter(e){let n={};e&&typeof e.getBBox=="function"&&(n=e.getBBox());let r=n.x+n.width/2,i=n.y+n.height/2;return{x:r,y:i}}setupEventDelegation(e,n){let r=null;e.node.addEventListener("mouseover",i=>{const a=at._findDelegateTarget(i.target,e.node,n);!a||a===r||(r&&r.instance&&this.pathMouseLeave(r.instance,i),r=a,a.instance&&this.pathMouseEnter(a.instance,i))}),e.node.addEventListener("mouseout",i=>{if(!r)return;(i.relatedTarget?at._findDelegateTarget(i.relatedTarget,e.node,n):null)!==r&&(r&&r.instance&&this.pathMouseLeave(r.instance,i),r=null)}),e.node.addEventListener("mousedown",i=>{const a=at._findDelegateTarget(i.target,e.node,n);a&&a.instance&&this.pathMouseDown(a.instance,i)})}static _findDelegateTarget(e,n,r){for(;e&&e!==n&&e!==document;){if(e.matches&&e.matches(r))return e;e=e.parentNode}return null}static setAttrs(e,n){for(let r in n)Object.prototype.hasOwnProperty.call(n,r)&&e.setAttribute(r,n[r])}getTextRects(e,n,r,i,a=!0){let o=this.w;const s=`${e}|${n}|${r}|${i}|${a}`,l=o.globals.textRectsCache;if(l&&l.has(s))return l.get(s);let u=this.drawText({x:-200,y:-200,text:e,textAnchor:"start",fontSize:n,fontFamily:r,foreColor:"#fff",opacity:0});i&&u.attr("transform",i),o.globals.dom.Paper.add(u);let c=u.bbox();a||(c=u.node.getBoundingClientRect()),u.remove();const f={width:c.width,height:c.height};return l&&l.set(s,f),f}placeTextWithEllipsis(e,n,r){if(typeof e.getComputedTextLength=="function"&&(e.textContent=n,n.length>0&&e.getComputedTextLength()>=r/1.1)){for(let i=n.length-3;i>0;i-=3)if(e.getSubStringLength(0,i)<=r/1.1){e.textContent=n.substring(0,i)+"...";return}e.textContent="."}}}class xa{constructor(e){this.ctx=e,this.w=e.w}static checkComboSeries(e,n){let r=!1,i=0,a=0;return n===void 0&&(n="line"),e.length&&typeof e[0].type<"u"&&e.forEach(o=>{(o.type==="bar"||o.type==="column"||o.type==="candlestick"||o.type==="boxPlot")&&i++,typeof o.type<"u"&&o.type!==n&&a++}),a>0&&(r=!0),{comboBarCount:i,comboCharts:r}}getStackedSeriesTotals(e=[]){const n=this.w;let r=[];if(n.globals.series.length===0)return r;for(let i=0;in+r,0):this.w.globals.series[e].reduce((n,r)=>n+r,0)}getStackedSeriesTotalsByGroups(){const e=this.w;let n=[];return e.globals.seriesGroups.forEach(r=>{let i=[];e.config.series.forEach((o,s)=>{r.indexOf(e.globals.seriesNames[s])>-1&&i.push(s)});const a=e.globals.series.map((o,s)=>i.indexOf(s)===-1?s:-1).filter(o=>o!==-1);n.push(this.getStackedSeriesTotals(a))}),n}setSeriesYAxisMappings(){const e=this.w.globals,n=this.w.config;let r=[],i=[],a=[],o=e.series.length>n.yaxis.length||n.yaxis.some(u=>Array.isArray(u.seriesName));n.series.forEach((u,c)=>{a.push(c),i.push(null)}),n.yaxis.forEach((u,c)=>{r[c]=[]});let s=[];n.yaxis.forEach((u,c)=>{let f=!1;if(u.seriesName){let h=[];Array.isArray(u.seriesName)?h=u.seriesName:h.push(u.seriesName),h.forEach(m=>{n.series.forEach((b,_)=>{if(b.name===m){let y=_;c===_||o?!o||a.indexOf(_)>-1?r[c].push([c,_]):console.warn("Series '"+b.name+"' referenced more than once in what looks like the new style. That is, when using either seriesName: [], or when there are more series than yaxes."):(r[_].push([_,c]),y=c),f=!0,y=a.indexOf(y),y!==-1&&a.splice(y,1)}})})}f||s.push(c)}),r=r.map(u=>{let c=[];return u.forEach(f=>{i[f[1]]=f[0],c.push(f[1])}),c});let l=n.yaxis.length-1;for(let u=0;u{r[l].push(u),i[u]=l}),e.seriesYAxisMap=r.map(u=>u),e.seriesYAxisReverseMap=i.map(u=>u),e.seriesYAxisMap.forEach((u,c)=>{u.forEach(f=>{n.series[f]&&n.series[f].group===void 0&&(n.series[f].group="apexcharts-axis-".concat(c.toString()))})})}isSeriesNull(e=null){let n=[];return e===null?n=this.w.config.series.filter(r=>r!==null):n=this.w.config.series[e].data.filter(r=>r!==null),n.length===0}seriesHaveSameValues(e){return this.w.globals.series[e].every((n,r,i)=>n===i[0])}getCategoryLabels(e){const n=this.w;let r=e.slice();return n.config.xaxis.convertedCatToNumeric&&(r=e.map(i=>n.config.xaxis.labels.formatter(i-n.globals.minX+1))),r}getLargestSeries(){const e=this.w;e.globals.maxValsInArrayIndex=e.globals.series.map(n=>n.length).indexOf(Math.max.apply(Math,e.globals.series.map(n=>n.length)))}getLargestMarkerSize(){const e=this.w;let n=0;return e.globals.markers.size.forEach(r=>{n=Math.max(n,r)}),e.config.markers.discrete&&e.config.markers.discrete.length&&e.config.markers.discrete.forEach(r=>{n=Math.max(n,r.size)}),n>0&&(e.config.markers.hover.size>0?n=e.config.markers.hover.size:n+=e.config.markers.hover.sizeOffset),e.globals.markers.largestSize=n,n}getSeriesTotals(){const e=this.w;e.globals.seriesTotals=e.globals.series.map(n=>{let r=0;if(Array.isArray(n))for(let i=0;i{let s=0;for(let l=0;le&&r.globals.seriesX[o][l]{let r=[];if(Array.isArray(n))for(let i=0;io+s,0);let a=100*n/i;r.push(a)}return r})}getCalculatedRatios(){let e=this.w,n=e.globals,r=[],i=0,a=0,o=0,s=0,l=[],u=.1,c=0;if(n.yRange=[],n.isMultipleYAxis)for(let f=0;f0){let f=(h,m)=>{let b=e.config.yaxis[e.globals.seriesYAxisReverseMap[m]],_=h<0?-1:1;return h=Math.abs(h),b.logarithmic&&(h=this.getBaseLog(b.logBase,h)),-_*h/r[m]};if(n.isMultipleYAxis){l=[];for(let h=0;h{let a=n.globals.seriesYAxisReverseMap[i];return n.config.yaxis[a]&&n.config.yaxis[a].logarithmic?r.map(o=>o===null?null:this.getLogVal(n.config.yaxis[a].logBase,o,i)):r}),n.globals.invalidLogScale?e:n.globals.seriesLog}getLogValAtSeriesIndex(e,n){if(e===null)return null;const r=this.w;let i=r.globals.seriesYAxisReverseMap[n];return r.config.yaxis[i]&&r.config.yaxis[i].logarithmic?this.getLogVal(r.config.yaxis[i].logBase,e,n):e}getBaseLog(e,n){return Math.log(n)/Math.log(e)}getLogVal(e,n,r){if(n<=0)return 0;const i=this.w,a=i.globals.minYArr[r]===0?-1:this.getBaseLog(e,i.globals.minYArr[r]),s=(i.globals.maxYArr[r]===0?0:this.getBaseLog(e,i.globals.maxYArr[r]))-a;return n<1?n/s:(this.getBaseLog(e,n)-a)/s}getLogYRatios(e){const n=this.w,r=this.w.globals;return r.yLogRatio=e.slice(),r.logYRange=r.yRange.map((i,a)=>{let o=n.globals.seriesYAxisReverseMap[a];if(n.config.yaxis[o]&&this.w.config.yaxis[o].logarithmic){let s=-Number.MAX_VALUE,l=Number.MIN_VALUE,u=1;return r.seriesLog.forEach((c,f)=>{c.forEach(h=>{n.config.yaxis[f]&&n.config.yaxis[f].logarithmic&&(s=Math.max(h,s),l=Math.min(h,l))})}),u=Math.pow(r.yRange[a],Math.abs(l-s)/r.yRange[a]),r.yLogRatio[a]=u/r.gridHeight,u}}),r.invalidLogScale?e.slice():r.yLogRatio}static extendArrayProps(e,n,r){var i,a;return n?.yaxis&&(n=e.extendYAxis(n,r)),n?.annotations&&(n.annotations.yaxis&&(n=e.extendYAxisAnnotations(n)),(i=n?.annotations)!=null&&i.xaxis&&(n=e.extendXAxisAnnotations(n)),(a=n?.annotations)!=null&&a.points&&(n=e.extendPointAnnotations(n))),n}drawSeriesByGroup(e,n,r,i){let a=this.w,o=[];return e.series.length>0&&n.forEach(s=>{let l=[],u=[];e.i.forEach((c,f)=>{a.config.series[c].group===s&&(l.push(e.series[f]),u.push(c))}),l.length>0&&o.push(i.draw(l,r,u))}),o}}let WR=class{constructor(e){this.w=e.w,this.annoCtx=e}setOrientations(e,n=null){const r=this.w;if(e.label.orientation==="vertical"){const i=n!==null?n:0,a=r.globals.dom.baseEl.querySelector(`.apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='${i}']`);if(a!==null){const o=a.getBBox();a.setAttribute("x",parseFloat(a.getAttribute("x"))-o.height+4);const s=e.label.position==="top"?o.width:-o.width;a.setAttribute("y",parseFloat(a.getAttribute("y"))+s);const{x:l,y:u}=this.annoCtx.graphics.rotateAroundCenter(a);a.setAttribute("transform",`rotate(-90 ${l} ${u})`)}}}addBackgroundToAnno(e,n){const r=this.w;if(!e||!n.label.text||!String(n.label.text).trim())return null;const i=r.globals.dom.baseEl.querySelector(".apexcharts-grid"),a=i.getBoundingClientRect(),o=i.getBBox(),s=a.width/o.width||1,l=e.getBoundingClientRect();let{left:u,right:c,top:f,bottom:h}=n.label.style.padding;n.label.orientation==="vertical"&&([f,h,u,c]=[u,c,f,h]);const m=(l.left-a.left)/s-u,b=(l.top-a.top)/s-f,_=this.annoCtx.graphics.drawRect(m-r.globals.barPadForNumericAxis,b,l.width/s+u+c,l.height/s+f+h,n.label.borderRadius,n.label.style.background,1,n.label.borderWidth,n.label.borderColor,0);return n.id&&_.node.classList.add(n.id),_}annotationsBackground(){const e=this.w,n=(r,i,a)=>{const o=e.globals.dom.baseEl.querySelector(`.apexcharts-${a}-annotations .apexcharts-${a}-annotation-label[rel='${i}']`);if(o){const s=o.parentNode,l=this.addBackgroundToAnno(o,r);l&&(s.insertBefore(l.node,o),r.label.mouseEnter&&l.node.addEventListener("mouseenter",r.label.mouseEnter.bind(this,r)),r.label.mouseLeave&&l.node.addEventListener("mouseleave",r.label.mouseLeave.bind(this,r)),r.label.click&&l.node.addEventListener("click",r.label.click.bind(this,r)))}};e.config.annotations.xaxis.forEach((r,i)=>n(r,i,"xaxis")),e.config.annotations.yaxis.forEach((r,i)=>n(r,i,"yaxis")),e.config.annotations.points.forEach((r,i)=>n(r,i,"point"))}getY1Y2(e,n){var r;const i=this.w;let a=e==="y1"?n.y:n.y2,o,s=!1;if(this.annoCtx.invertAxis){const l=i.config.xaxis.convertedCatToNumeric?i.globals.categoryLabels:i.globals.labels,u=l.indexOf(a),c=i.globals.dom.baseEl.querySelector(`.apexcharts-yaxis-texts-g text:nth-child(${u+1})`);o=c?parseFloat(c.getAttribute("y")):(i.globals.gridHeight/l.length-1)*(u+1)-i.globals.barHeight,n.seriesIndex!==void 0&&i.globals.barHeight&&(o-=i.globals.barHeight/2*(i.globals.series.length-1)-i.globals.barHeight*n.seriesIndex)}else{const l=i.globals.seriesYAxisMap[n.yAxisIndex][0],u=i.config.yaxis[n.yAxisIndex].logarithmic?new xa(this.annoCtx.ctx).getLogVal(i.config.yaxis[n.yAxisIndex].logBase,a,l)/i.globals.yLogRatio[l]:(a-i.globals.minYArr[l])/(i.globals.yRange[l]/i.globals.gridHeight);o=i.globals.gridHeight-Math.min(Math.max(u,0),i.globals.gridHeight),s=u>i.globals.gridHeight||u<0,n.marker&&(n.y===void 0||n.y===null)&&(o=0),(r=i.config.yaxis[n.yAxisIndex])!=null&&r.reversed&&(o=u)}return typeof a=="string"&&a.includes("px")&&(o=parseFloat(a)),{yP:o,clipped:s}}getX1X2(e,n){const r=this.w,i=e==="x1"?n.x:n.x2,a=this.annoCtx.invertAxis?r.globals.minY:r.globals.minX,o=this.annoCtx.invertAxis?r.globals.maxY:r.globals.maxX,s=this.annoCtx.invertAxis?r.globals.yRange[0]:r.globals.xRange;let l=!1,u=this.annoCtx.inversedReversedAxis?(o-i)/(s/r.globals.gridWidth):(i-a)/(s/r.globals.gridWidth);return(r.config.xaxis.type==="category"||r.config.xaxis.convertedCatToNumeric)&&!this.annoCtx.invertAxis&&!r.globals.dataFormatXNumeric&&(r.config.chart.sparkline.enabled||(u=this.getStringX(i))),typeof i=="string"&&i.includes("px")&&(u=parseFloat(i)),i==null&&n.marker&&(u=r.globals.gridWidth),n.seriesIndex!==void 0&&r.globals.barWidth&&!this.annoCtx.invertAxis&&(u-=r.globals.barWidth/2*(r.globals.series.length-1)-r.globals.barWidth*n.seriesIndex),typeof u!="number"&&(u=0,l=!0),parseFloat(u.toFixed(10))>parseFloat(r.globals.gridWidth.toFixed(10))?(u=r.globals.gridWidth,l=!0):u<0&&(u=0,l=!0),{x:u,clipped:l}}getStringX(e){const n=this.w;let r=e;n.config.xaxis.convertedCatToNumeric&&n.globals.categoryLabels.length&&(e=n.globals.categoryLabels.indexOf(e)+1);const i=n.globals.labels.map(o=>Array.isArray(o)?o.join(" "):o).indexOf(e),a=n.globals.dom.baseEl.querySelector(`.apexcharts-xaxis-texts-g text:nth-child(${i+1})`);return a&&(r=parseFloat(a.getAttribute("x"))),r}};class _1t{constructor(e){this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new WR(this.annoCtx)}addXaxisAnnotation(e,n,r){let i=this.w,a=this.helpers.getX1X2("x1",e),o=a.x,s=a.clipped,l=!0,u;const c=e.label.text;let f=e.strokeDashArray;if(Ee.isNumber(o)){if(e.x2===null||typeof e.x2>"u"){if(!s){let h=this.annoCtx.graphics.drawLine(o+e.offsetX,0+e.offsetY,o+e.offsetX,i.globals.gridHeight+e.offsetY,e.borderColor,f,e.borderWidth);n.appendChild(h.node),e.id&&h.node.classList.add(e.id)}}else{let h=this.helpers.getX1X2("x2",e);if(u=h.x,l=h.clipped,u{this.addXaxisAnnotation(r,n.node,i)}),n}}class Ao{constructor(e){this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}isValidDate(e){return typeof e=="number"?!1:!isNaN(this.parseDate(e))}getTimeStamp(e){return Date.parse(e)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toISOString().substr(0,25)).getTime():new Date(e).getTime():e}getDate(e){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(e).toUTCString()):new Date(e)}parseDate(e){const n=Date.parse(e);if(!isNaN(n))return this.getTimeStamp(e);let r=Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "));return r=this.getTimeStamp(r),r}parseDateWithTimezone(e){return Date.parse(e.replace(/-/g,"/").replace(/[a-z]+/gi," "))}formatDate(e,n){const r=this.w.globals.locale,i=this.w.config.xaxis.labels.datetimeUTC;let a=["\0",...r.months],o=["",...r.shortMonths],s=["",...r.days],l=["",...r.shortDays];function u(N,k){let D=N+"";for(k=k||2;D.length12?m-12:m===0?12:m;n=n.replace(/(^|[^\\])hh+/g,"$1"+u(b)),n=n.replace(/(^|[^\\])h/g,"$1"+b);let _=i?e.getUTCMinutes():e.getMinutes();n=n.replace(/(^|[^\\])mm+/g,"$1"+u(_)),n=n.replace(/(^|[^\\])m/g,"$1"+_);let y=i?e.getUTCSeconds():e.getSeconds();n=n.replace(/(^|[^\\])ss+/g,"$1"+u(y)),n=n.replace(/(^|[^\\])s/g,"$1"+y);let x=i?e.getUTCMilliseconds():e.getMilliseconds();n=n.replace(/(^|[^\\])fff+/g,"$1"+u(x,3)),x=Math.round(x/10),n=n.replace(/(^|[^\\])ff/g,"$1"+u(x)),x=Math.round(x/10),n=n.replace(/(^|[^\\])f/g,"$1"+x);let C=m<12?"AM":"PM";n=n.replace(/(^|[^\\])TT+/g,"$1"+C),n=n.replace(/(^|[^\\])T/g,"$1"+C.charAt(0));let A=C.toLowerCase();n=n.replace(/(^|[^\\])tt+/g,"$1"+A),n=n.replace(/(^|[^\\])t/g,"$1"+A.charAt(0));let R=-e.getTimezoneOffset(),I=i||!R?"Z":R>0?"+":"-";if(!i){R=Math.abs(R);let N=Math.floor(R/60),k=R%60;I+=u(N)+":"+u(k)}n=n.replace(/(^|[^\\])K/g,"$1"+I);let O=(i?e.getUTCDay():e.getDay())+1;return n=n.replace(new RegExp(s[0],"g"),s[O]),n=n.replace(new RegExp(l[0],"g"),l[O]),n=n.replace(new RegExp(a[0],"g"),a[f]),n=n.replace(new RegExp(o[0],"g"),o[f]),n=n.replace(/\\(.)/g,"$1"),n}getTimeUnitsfromTimestamp(e,n){let r=this.w;r.config.xaxis.min!==void 0&&(e=r.config.xaxis.min),r.config.xaxis.max!==void 0&&(n=r.config.xaxis.max);const i=this.getDate(e),a=this.getDate(n),o=this.formatDate(i,"yyyy MM dd HH mm ss fff").split(" "),s=this.formatDate(a,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(s[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(s[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(s[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(s[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(s[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(s[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(s[0],10)}}isLeapYear(e){return e%4===0&&e%100!==0||e%400===0}calculcateLastDaysOfMonth(e,n,r){return this.determineDaysOfMonths(e,n)-r}determineDaysOfYear(e){let n=365;return this.isLeapYear(e)&&(n=366),n}determineRemainingDaysOfYear(e,n,r){let i=this.daysCntOfYear[n]+r;return n>1&&this.isLeapYear()&&i++,i}determineDaysOfMonths(e,n){let r=30;switch(e=Ee.monthMod(e),!0){case this.months30.indexOf(e)>-1:e===2&&(this.isLeapYear(n)?r=29:r=28);break;case this.months31.indexOf(e)>-1:r=31;break;default:r=31;break}return r}}class cx{constructor(e){this.ctx=e,this.w=e.w,this.tooltipKeyFormat="dd MMM"}xLabelFormat(e,n,r,i){let a=this.w;if(a.config.xaxis.type==="datetime"&&a.config.xaxis.labels.formatter===void 0&&a.config.tooltip.x.formatter===void 0){let o=new Ao(this.ctx);return o.formatDate(o.getDate(n),a.config.tooltip.x.format)}return e(n,r,i)}defaultGeneralFormatter(e){return Array.isArray(e)?e.map(n=>n):e}defaultYFormatter(e,n){let r=this.w;if(Ee.isNumber(e))if(r.globals.yValueDecimal!==0)e=e.toFixed(n.decimalsInFloat!==void 0?n.decimalsInFloat:r.globals.yValueDecimal);else{const i=e.toFixed(0);e=e==i?i:e.toFixed(1)}return e}setLabelFormatters(){let e=this.w;return e.globals.xaxisTooltipFormatter=n=>this.defaultGeneralFormatter(n),e.globals.ttKeyFormatter=n=>this.defaultGeneralFormatter(n),e.globals.ttZFormatter=n=>n,e.globals.legendFormatter=n=>this.defaultGeneralFormatter(n),e.config.xaxis.labels.formatter!==void 0?e.globals.xLabelFormatter=e.config.xaxis.labels.formatter:e.globals.xLabelFormatter=n=>{if(Ee.isNumber(n)){if(!e.config.xaxis.convertedCatToNumeric&&e.config.xaxis.type==="numeric"){if(Ee.isNumber(e.config.xaxis.decimalsInFloat))return n.toFixed(e.config.xaxis.decimalsInFloat);{const r=e.globals.maxX-e.globals.minX;return r>0&&r<100?n.toFixed(1):n.toFixed(0)}}return e.globals.isBarHorizontal&&e.globals.maxY-e.globals.minYArr<4?n.toFixed(1):n.toFixed(0)}return n},typeof e.config.tooltip.x.formatter=="function"?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,typeof e.config.xaxis.tooltip.formatter=="function"&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||e.config.tooltip.y.formatter!==void 0)&&(e.globals.ttVal=e.config.tooltip.y),e.config.tooltip.z.formatter!==void 0&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),e.config.legend.formatter!==void 0&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((n,r)=>{n.labels.formatter!==void 0?e.globals.yLabelFormatters[r]=n.labels.formatter:e.globals.yLabelFormatters[r]=i=>e.globals.xyCharts?Array.isArray(i)?i.map(a=>this.defaultYFormatter(a,n,r)):this.defaultYFormatter(i,n,r):i}),e.globals}heatmapLabelFormatters(){const e=this.w;if(e.config.chart.type==="heatmap"){e.globals.yAxisScale[0].result=e.globals.seriesNames.slice();let n=e.globals.seriesNames.reduce((r,i)=>r.length>i.length?r:i,0);e.globals.yAxisScale[0].niceMax=n,e.globals.yAxisScale[0].niceMin=n}}}class gh{constructor(e){this.ctx=e,this.w=e.w}getLabel(e,n,r,i,a=[],o="12px",s=!0){const l=this.w;let u=typeof e[i]>"u"?"":e[i],c=u,f=l.globals.xLabelFormatter,h=l.config.xaxis.labels.formatter,m=!1,b=new cx(this.ctx),_=u;s&&(c=b.xLabelFormat(f,u,_,{i,dateFormatter:new Ao(this.ctx).formatDate,w:l}),h!==void 0&&(c=h(u,e[i],{i,dateFormatter:new Ao(this.ctx).formatDate,w:l})));const y=R=>{let I=null;return n.forEach(O=>{O.unit==="month"?I="year":O.unit==="day"?I="month":O.unit==="hour"?I="day":O.unit==="minute"&&(I="hour")}),I===R};n.length>0?(m=y(n[i].unit),r=n[i].position,c=n[i].value):l.config.xaxis.type==="datetime"&&h===void 0&&(c=""),typeof c>"u"&&(c=""),c=Array.isArray(c)?c:c.toString();let x=new at(this.ctx),C={};l.globals.rotateXLabels&&s?C=x.getTextRects(c,parseInt(o,10),null,`rotate(${l.config.xaxis.labels.rotate} 0 0)`,!1):C=x.getTextRects(c,parseInt(o,10));const A=!l.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(c)&&(String(c)==="NaN"||a.indexOf(c)>=0&&A)&&(c=""),{x:r,text:c,textRect:C,isBold:m}}checkLabelBasedOnTickamount(e,n,r){const i=this.w;let a=i.config.xaxis.tickAmount;if(a==="dataPoints"&&(a=Math.round(i.globals.gridWidth/120)),a>r)return n;let o=Math.round(r/(a+1));return e%o===0||(n.text=""),n}checkForOverflowingLabels(e,n,r,i,a){const o=this.w;if(e===0&&o.globals.skipFirstTimelinelabel&&(n.text=""),e===r-1&&o.globals.skipLastTimelinelabel&&(n.text=""),o.config.xaxis.labels.hideOverlappingLabels&&i.length>0){const s=a[a.length-1];if(o.config.xaxis.labels.trim&&o.config.xaxis.type!=="datetime")return n;n.xn.collapsedSeriesIndices.indexOf(r)===-1)}translateYAxisIndex(e){const n=this.w,r=n.globals,i=n.config.yaxis;return r.series.length>i.length||i.some(o=>Array.isArray(o.seriesName))?e:r.seriesYAxisReverseMap[e]}isYAxisHidden(e){const n=this.w,r=n.config.yaxis[e];if(!r.show||this.yAxisAllSeriesCollapsed(e))return!0;if(!r.showForNullSeries){const i=n.globals.seriesYAxisMap[e],a=new xa(this.ctx);return i.every(o=>a.isSeriesNull(o))}return!1}getYAxisForeColor(e,n){const r=this.w;return Array.isArray(e)&&r.globals.yAxisScale[n]&&this.ctx.theme.pushExtraColors(e,r.globals.yAxisScale[n].result.length,!1),e}drawYAxisTicks(e,n,r,i,a,o,s){let l=this.w,u=new at(this.ctx),c=l.globals.translateY+l.config.yaxis[a].labels.offsetY;if(l.globals.isBarHorizontal?c=0:l.config.chart.type==="heatmap"&&(c+=o/2),i.show&&n>0){l.config.yaxis[a].opposite===!0&&(e=e+i.width);for(let f=n;f>=0;f--){let h=u.drawLine(e+r.offsetX-i.width+i.offsetX,c+i.offsetY,e+r.offsetX+i.offsetX,c+i.offsetY,i.color);s.add(h),c+=o}}}}class v1t{constructor(e){this.w=e.w,this.annoCtx=e,this.helpers=new WR(this.annoCtx),this.axesUtils=new gh(this.annoCtx)}addYaxisAnnotation(e,n,r){let i=this.w,a=e.strokeDashArray,o=this.helpers.getY1Y2("y1",e),s=o.yP,l=o.clipped,u,c=!0,f=!1;const h=e.label.text;if(e.y2===null||typeof e.y2>"u"){if(!l){f=!0;let m=this.annoCtx.graphics.drawLine(0+e.offsetX,s+e.offsetY,this._getYAxisAnnotationWidth(e),s+e.offsetY,e.borderColor,a,e.borderWidth);n.appendChild(m.node),e.id&&m.node.classList.add(e.id)}}else{if(o=this.helpers.getY1Y2("y2",e),u=o.yP,c=o.clipped,u>s){let m=s;s=u,u=m}if(!(l&&c)){f=!0;let m=this.annoCtx.graphics.drawRect(0+e.offsetX,u+e.offsetY,this._getYAxisAnnotationWidth(e),s-u,0,e.fillColor,e.opacity,1,e.borderColor,a);m.node.classList.add("apexcharts-annotation-rect"),m.attr("clip-path",`url(#gridRectMask${i.globals.cuid})`),n.appendChild(m.node),e.id&&m.node.classList.add(e.id)}}if(f){let m=e.label.position==="right"?i.globals.gridWidth:e.label.position==="center"?i.globals.gridWidth/2:0,b=this.annoCtx.graphics.drawText({x:m+e.label.offsetX,y:(u??s)+e.label.offsetY-3,text:h,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:`apexcharts-yaxis-annotation-label ${e.label.style.cssClass} ${e.id?e.id:""}`});b.attr({rel:r}),n.appendChild(b.node)}}_getYAxisAnnotationWidth(e){const n=this.w;let r=n.globals.gridWidth;return e.width.indexOf("%")>-1?r=n.globals.gridWidth*parseInt(e.width,10)/100:r=parseInt(e.width,10),r+e.offsetX}drawYAxisAnnotations(){const e=this.w;let n=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.forEach((r,i)=>{r.yAxisIndex=this.axesUtils.translateYAxisIndex(r.yAxisIndex),this.axesUtils.isYAxisHidden(r.yAxisIndex)&&this.axesUtils.yAxisAllSeriesCollapsed(r.yAxisIndex)||this.addYaxisAnnotation(r,n.node,i)}),n}}class y1t{constructor(e){this.w=e.w,this.annoCtx=e,this.helpers=new WR(this.annoCtx)}addPointAnnotation(e,n,r){if(this.w.globals.collapsedSeriesIndices.indexOf(e.seriesIndex)>-1)return;let a=this.helpers.getX1X2("x1",e),o=a.x,s=a.clipped;a=this.helpers.getY1Y2("y1",e);let l=a.yP,u=a.clipped;if(Ee.isNumber(o)&&!(u||s)){let c={pSize:e.marker.size,pointStrokeWidth:e.marker.strokeWidth,pointFillColor:e.marker.fillColor,pointStrokeColor:e.marker.strokeColor,shape:e.marker.shape,pRadius:e.marker.radius,class:`apexcharts-point-annotation-marker ${e.marker.cssClass} ${e.id?e.id:""}`},f=this.annoCtx.graphics.drawMarker(o+e.marker.offsetX,l+e.marker.offsetY,c);n.appendChild(f.node);const h=e.label.text?e.label.text:"";let m=this.annoCtx.graphics.drawText({x:o+e.label.offsetX,y:l+e.label.offsetY-e.marker.size-parseFloat(e.label.style.fontSize)/1.6,text:h,textAnchor:e.label.textAnchor,fontSize:e.label.style.fontSize,fontFamily:e.label.style.fontFamily,fontWeight:e.label.style.fontWeight,foreColor:e.label.style.color,cssClass:`apexcharts-point-annotation-label ${e.label.style.cssClass} ${e.id?e.id:""}`});if(m.attr({rel:r}),n.appendChild(m.node),e.customSVG.SVG){let b=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+e.customSVG.cssClass});b.attr({transform:`translate(${o+e.customSVG.offsetX}, ${l+e.customSVG.offsetY})`}),b.node.innerHTML=e.customSVG.SVG,n.appendChild(b.node)}if(e.image.path){let b=e.image.width?e.image.width:20,_=e.image.height?e.image.height:20;f=this.annoCtx.addImage({x:o+e.image.offsetX-b/2,y:l+e.image.offsetY-_/2,width:b,height:_,path:e.image.path,appendTo:".apexcharts-point-annotations"})}e.mouseEnter&&f.node.addEventListener("mouseenter",e.mouseEnter.bind(this,e)),e.mouseLeave&&f.node.addEventListener("mouseleave",e.mouseLeave.bind(this,e)),e.click&&f.node.addEventListener("click",e.click.bind(this,e))}}drawPointAnnotations(){let e=this.w,n=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((r,i)=>{this.addPointAnnotation(r,n.node,i)}),n}}const S1t="en",x1t={months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}},Vhe={name:S1t,options:x1t};class Lg{constructor(){this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,stepSize:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,showDuplicates:!1,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:void 0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}init(){return{annotations:{yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"",locales:[Vhe],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.7},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0,keyDown:void 0,keyUp:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,nonce:void 0,offsetX:0,offsetY:0,injectStyleSheet:!0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0,targets:void 0},stacked:!1,stackOnlyBar:!0,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",categoryFormatter:void 0,valueFormatter:void 0},png:{filename:void 0},svg:{filename:void 0},scale:void 0,width:void 0},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,allowMouseWheelZoom:!0,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}},accessibility:{enabled:!0,description:void 0,announcements:{enabled:!0},keyboard:{enabled:!0}}},parsing:{x:void 0,y:void 0},plotOptions:{line:{isSlopeChart:!1,colors:{threshold:0,colorAboveThreshold:void 0,colorBelowThreshold:void 0}},area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,hideZeroBarsWhenGrouped:!1,isDumbbell:!1,dumbbellColors:void 0,isFunnel:!1,isFunnel3d:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,borderRadius:4,dataLabels:{format:"scale"},colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0},seriesTitle:{show:!0,offsetY:1,offsetX:1,borderColor:"#000",borderWidth:1,borderRadius:2,style:{background:"rgba(0, 0, 0, 0.6)",color:"#fff",fontSize:"12px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:6,right:6,top:2,bottom:2}}}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter(e){return e}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter(e){return e+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter(e){return e.globals.seriesTotals.reduce((n,r)=>n+r,0)/e.globals.series.length+"%"}}},barLabels:{enabled:!1,offsetX:0,offsetY:0,useSeriesColors:!0,fontFamily:void 0,fontWeight:600,fontSize:"16px",formatter(e){return e},onClick:void 0}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter(e){return e}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter(e){return e}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter(e){return e.globals.seriesTotals.reduce((n,r)=>n+r,0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter(e){return e!==null?e:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",backgroundColor:void 0,borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.8}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.8}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],clusterGroupedSeries:!0,clusterGroupedSeriesOrientation:"vertical",labels:{colors:void 0,useSeriesColors:!1},markers:{size:7,fillColors:void 0,strokeWidth:1,shape:void 0,offsetX:0,offsetY:0,customHTML:void 0,onClick:void 0},itemMargin:{horizontal:5,vertical:4},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",offsetX:0,offsetY:0,showNullDataPoints:!0,onClick:void 0,onDblClick:void 0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{hover:{filter:{type:"lighten"}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken"}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,hideEmptySeries:!1,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter(e){return e?e+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},stepSize:void 0,tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.8}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}class E1t{constructor(e){this.ctx=e,this.w=e.w,this.graphics=new at(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new WR(this),this.xAxisAnnotations=new _1t(this),this.yAxisAnnotations=new v1t(this),this.pointsAnnotations=new y1t(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}drawAxesAnnotations(){const e=this.w;if(e.globals.axisCharts&&e.globals.dataPoints){let n=this.yAxisAnnotations.drawYAxisAnnotations(),r=this.xAxisAnnotations.drawXAxisAnnotations(),i=this.pointsAnnotations.drawPointAnnotations();const a=e.config.chart.animations.enabled,o=[n,r,i],s=[r.node,n.node,i.node];for(let l=0;l<3;l++)e.globals.dom.elGraphical.add(o[l]),a&&!e.globals.resized&&!e.globals.dataChanged&&e.config.chart.type!=="scatter"&&e.config.chart.type!=="bubble"&&e.globals.dataPoints>1&&s[l].classList.add("apexcharts-element-hidden"),e.globals.delayedElements.push({el:s[l],index:0});this.helpers.annotationsBackground()}}drawImageAnnos(){this.w.config.annotations.images.map((n,r)=>{this.addImage(n,r)})}drawTextAnnos(){this.w.config.annotations.texts.map((n,r)=>{this.addText(n,r)})}addXaxisAnnotation(e,n,r){this.xAxisAnnotations.addXaxisAnnotation(e,n,r)}addYaxisAnnotation(e,n,r){this.yAxisAnnotations.addYaxisAnnotation(e,n,r)}addPointAnnotation(e,n,r){this.pointsAnnotations.addPointAnnotation(e,n,r)}addText(e){const{x:n,y:r,text:i,textAnchor:a,foreColor:o,fontSize:s,fontFamily:l,fontWeight:u,cssClass:c,backgroundColor:f,borderWidth:h,strokeDashArray:m,borderRadius:b,borderColor:_,appendTo:y=".apexcharts-svg",paddingLeft:x=4,paddingRight:C=4,paddingBottom:A=2,paddingTop:R=2}=e,I=this.w;let O=this.graphics.drawText({x:n,y:r,text:i,textAnchor:a||"start",fontSize:s||"12px",fontWeight:u||"regular",fontFamily:l||I.config.chart.fontFamily,foreColor:o||I.config.chart.foreColor,cssClass:"apexcharts-text "+c?c:""});const N=I.globals.dom.baseEl.querySelector(y);N&&N.appendChild(O.node);const k=O.bbox();if(i){const D=this.graphics.drawRect(k.x-x,k.y-R,k.width+x+C,k.height+A+R,b,f||"transparent",1,h,_,m);N.insertBefore(D.node,O.node)}}addImage(e){const n=this.w,{path:r,x:i=0,y:a=0,width:o=20,height:s=20,appendTo:l=".apexcharts-svg"}=e;let u=n.globals.dom.Paper.image(r);u.size(o,s).move(i,a);const c=n.globals.dom.baseEl.querySelector(l);return c&&c.appendChild(u.node),u}addXaxisAnnotationExternal(e,n,r){return this.addAnnotationExternal({params:e,pushToMemory:n,context:r,type:"xaxis",contextMethod:r.addXaxisAnnotation}),r}addYaxisAnnotationExternal(e,n,r){return this.addAnnotationExternal({params:e,pushToMemory:n,context:r,type:"yaxis",contextMethod:r.addYaxisAnnotation}),r}addPointAnnotationExternal(e,n,r){return typeof this.invertAxis>"u"&&(this.invertAxis=r.w.globals.isBarHorizontal),this.addAnnotationExternal({params:e,pushToMemory:n,context:r,type:"point",contextMethod:r.addPointAnnotation}),r}addAnnotationExternal({params:e,pushToMemory:n,context:r,type:i,contextMethod:a}){const o=r,s=o.w,l=s.globals.dom.baseEl.querySelector(`.apexcharts-${i}-annotations`),u=l.childNodes.length+1,c=new Lg,f=Object.assign({},i==="xaxis"?c.xAxisAnnotation:i==="yaxis"?c.yAxisAnnotation:c.pointAnnotation),h=Ee.extend(f,e);switch(i){case"xaxis":this.addXaxisAnnotation(h,l,u);break;case"yaxis":this.addYaxisAnnotation(h,l,u);break;case"point":this.addPointAnnotation(h,l,u);break}let m=s.globals.dom.baseEl.querySelector(`.apexcharts-${i}-annotations .apexcharts-${i}-annotation-label[rel='${u}']`);const b=this.helpers.addBackgroundToAnno(m,h);return b&&l.insertBefore(b.node,m),n&&s.globals.memory.methodsToExec.push({context:o,id:h.id?h.id:Ee.randomId(),method:a,label:"addAnnotation",params:e}),r}clearAnnotations(e){const n=e.w;let r=n.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");for(let i=n.globals.memory.methodsToExec.length-1;i>=0;i--)(n.globals.memory.methodsToExec[i].label==="addText"||n.globals.memory.methodsToExec[i].label==="addAnnotation")&&n.globals.memory.methodsToExec.splice(i,1);r=Ee.listToArray(r),Array.prototype.forEach.call(r,i=>{for(;i.firstChild;)i.removeChild(i.firstChild)})}removeAnnotation(e,n){const r=e.w;let i=r.globals.dom.baseEl.querySelectorAll(`.${n}`);i&&(r.globals.memory.methodsToExec.map((a,o)=>{a.id===n&&r.globals.memory.methodsToExec.splice(o,1)}),Object.keys(r.config.annotations).forEach(a=>{const o=r.config.annotations[a];Array.isArray(o)&&(r.config.annotations[a]=o.filter(s=>s.id!==n))}),Array.prototype.forEach.call(i,a=>{a.parentElement.removeChild(a)}))}}const Q4=({isTimeline:t,ctx:e,seriesIndex:n,dataPointIndex:r,y1:i,y2:a,w:o})=>{var s;let l=o.globals.seriesRangeStart[n][r],u=o.globals.seriesRangeEnd[n][r],c=o.globals.labels[r],f=o.config.series[n].name?o.config.series[n].name:"";const h=o.globals.ttKeyFormatter,m=o.config.tooltip.y.title.formatter,b={w:o,seriesIndex:n,dataPointIndex:r,start:l,end:u};typeof m=="function"&&(f=m(f,b)),(s=o.config.series[n].data[r])!=null&&s.x&&(c=o.config.series[n].data[r].x),t||o.config.xaxis.type==="datetime"&&(c=new cx(e).xLabelFormat(o.globals.ttKeyFormatter,c,c,{i:void 0,dateFormatter:new Ao(e).formatDate,w:o})),typeof h=="function"&&(c=h(c,b)),Number.isFinite(i)&&Number.isFinite(a)&&(l=i,u=a);let _="",y="";const x=o.globals.colors[n];if(o.config.tooltip.x.formatter===void 0)if(o.config.xaxis.type==="datetime"){let C=new Ao(e);_=C.formatDate(C.getDate(l),o.config.tooltip.x.format),y=C.formatDate(C.getDate(u),o.config.tooltip.x.format)}else _=l,y=u;else _=o.config.tooltip.x.formatter(l),y=o.config.tooltip.x.formatter(u);return{start:l,end:u,startVal:_,endVal:y,ylabel:c,color:x,seriesName:f}},Z4=t=>{let{color:e,seriesName:n,ylabel:r,start:i,end:a,seriesIndex:o,dataPointIndex:s}=t;const l=t.ctx.tooltip.tooltipLabels.getFormatters(o);i=l.yLbFormatter(i),a=l.yLbFormatter(a);const u=l.yLbFormatter(t.w.globals.series[o][s]);let c="";const f=` + ${i} + - + ${a} + `;return t.w.globals.comboCharts?t.w.config.series[o].type==="rangeArea"||t.w.config.series[o].type==="rangeBar"?c=f:c=`${u}`:c=f,'
'+(n||"")+'
'+r+": "+c+"
"};class Jy{constructor(e){this.opts=e}hideYAxis(){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0}line(){return{dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}sparkline(e){this.hideYAxis();const n={grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}};return Ee.extend(e,n)}slope(){return this.hideYAxis(),{chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!0,formatter(e,n){const r=n.w.config.series[n.seriesIndex].name;return e!==null?r+": "+e:""},background:{enabled:!1},offsetX:-5},grid:{xaxis:{lines:{show:!0}},yaxis:{lines:{show:!1}}},xaxis:{position:"top",labels:{style:{fontSize:14,fontWeight:900}},tooltip:{enabled:!1},crosshairs:{show:!1}},markers:{size:8,hover:{sizeOffset:1}},legend:{show:!1},tooltip:{shared:!1,intersect:!0,followCursor:!0},stroke:{width:5,curve:"straight"}}}bar(){return{chart:{stacked:!1},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"square"},fill:{opacity:.85},legend:{markers:{shape:"square"}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}funnel(){return this.hideYAxis(),rr(vn({},this.bar()),{chart:{animations:{speed:800,animateGradually:{enabled:!1}}},plotOptions:{bar:{horizontal:!0,borderRadiusApplication:"around",borderRadius:0,dataLabels:{position:"center"}}},grid:{show:!1,padding:{left:0,right:0}},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}}})}candlestick(){return{stroke:{width:1},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:({seriesIndex:e,dataPointIndex:n,w:r})=>this._getBoxTooltip(r,e,n,["Open","High","","Low","Close"],"candlestick")},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}boxPlot(){return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:({seriesIndex:e,dataPointIndex:n,w:r})=>this._getBoxTooltip(r,e,n,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")},markers:{size:7,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}rangeBar(){const e=r=>{const{color:i,seriesName:a,ylabel:o,startVal:s,endVal:l}=Q4(rr(vn({},r),{isTimeline:!0}));return Z4(rr(vn({},r),{color:i,seriesName:a,ylabel:o,start:s,end:l}))},n=r=>{const{color:i,seriesName:a,ylabel:o,start:s,end:l}=Q4(r);return Z4(rr(vn({},r),{color:i,seriesName:a,ylabel:o,start:s,end:l}))};return{chart:{animations:{animateGradually:!1}},stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter(r,{seriesIndex:i,dataPointIndex:a,w:o}){const s=()=>{const l=o.globals.seriesRangeStart[i][a];return o.globals.seriesRangeEnd[i][a]-l};return o.globals.comboCharts?o.config.series[i].type==="rangeBar"||o.config.series[i].type==="rangeArea"?s():r:s()},background:{enabled:!1},style:{colors:["#fff"]}},markers:{size:10},tooltip:{shared:!1,followCursor:!0,custom(r){return r.w.config.plotOptions&&r.w.config.plotOptions.bar&&r.w.config.plotOptions.bar.horizontal?e(r):n(r)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}dumbbell(e){var n,r;return(n=e.plotOptions.bar)!=null&&n.barHeight||(e.plotOptions.bar.barHeight=2),(r=e.plotOptions.bar)!=null&&r.columnWidth||(e.plotOptions.bar.columnWidth=2),e}area(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}rangeArea(){const e=n=>{const{color:r,seriesName:i,ylabel:a,start:o,end:s}=Q4(n);return Z4(rr(vn({},n),{color:r,seriesName:i,ylabel:a,start:o,end:s}))};return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom(n){return e(n)}}}}brush(e){const n={chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}};return Ee.extend(e,n)}stacked100(e){e.dataLabels=e.dataLabels||{},e.dataLabels.formatter=e.dataLabels.formatter||void 0;const n=e.dataLabels.formatter;return e.yaxis.forEach((i,a)=>{e.yaxis[a].min=0,e.yaxis[a].max=100}),e.chart.type==="bar"&&(e.dataLabels.formatter=n||function(i){return typeof i=="number"?i&&i.toFixed(0)+"%":i}),e}stackedBars(){const e=this.bar();return rr(vn({},e),{plotOptions:rr(vn({},e.plotOptions),{bar:rr(vn({},e.plotOptions.bar),{borderRadiusApplication:"end",borderRadiusWhenStacked:"last"})})})}convertCatToNumeric(e){return e.xaxis.convertedCatToNumeric=!0,e}convertCatToNumericXaxis(e,n,r){e.xaxis.type="numeric",e.xaxis.labels=e.xaxis.labels||{},e.xaxis.labels.formatter=e.xaxis.labels.formatter||function(o){return Ee.isNumber(o)?Math.floor(o):o};const i=e.xaxis.labels.formatter;let a=e.xaxis.categories&&e.xaxis.categories.length?e.xaxis.categories:e.labels;return r&&r.length&&(a=r.map(o=>Array.isArray(o)?o:String(o))),a&&a.length&&(e.xaxis.labels.formatter=function(o){return Ee.isNumber(o)?i(a[Math.floor(o)-1]):i(o)}),e.xaxis.categories=[],e.labels=[],e.xaxis.tickAmount=e.xaxis.tickAmount||"dataPoints",e}bubble(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}scatter(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}heatmap(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square"}},grid:{padding:{right:20}}}}treemap(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{opacity:1,gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}pie(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}donut(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter(e){return e.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}polarArea(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter(e){return e.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}radar(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:5,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},xaxis:{labels:{formatter:e=>e,style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}radialBar(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0},grid:{padding:{left:0,right:0,top:0,bottom:0}}}}_getBoxTooltip(e,n,r,i,a){const o=e.globals.seriesCandleO[n][r],s=e.globals.seriesCandleH[n][r],l=e.globals.seriesCandleM[n][r],u=e.globals.seriesCandleL[n][r],c=e.globals.seriesCandleC[n][r];return e.config.series[n].type&&e.config.series[n].type!==a?`
+ ${e.config.series[n].name?e.config.series[n].name:"series-"+(n+1)}: ${e.globals.series[n][r]} +
`:`
${i[0]}: `+o+`
${i[1]}: `+s+"
"+(l?`
${i[2]}: `+l+"
":"")+`
${i[3]}: `+u+`
${i[4]}: `+c+"
"}}class eS{constructor(e){this.opts=e}init({responsiveOverride:e}){var n,r,i,a,o,s,l,u,c,f;let h=this.opts,m=new Lg,b=new Jy(h);this.chartType=h.chart.type,h=this.extendYAxis(h),h=this.extendAnnotations(h);let _=m.init(),y={};if(h&&typeof h=="object"){let C={};["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(h.chart.type)!==-1?C=b[h.chart.type]():C=b.line(),(r=(n=h.plotOptions)==null?void 0:n.bar)!=null&&r.isFunnel&&(C=b.funnel()),h.chart.stacked&&h.chart.type==="bar"&&(C=b.stackedBars()),(i=h.chart.brush)!=null&&i.enabled&&(C=b.brush(C)),(o=(a=h.plotOptions)==null?void 0:a.line)!=null&&o.isSlopeChart&&(C=b.slope()),h.chart.stacked&&h.chart.stackType==="100%"&&(h=b.stacked100(h)),(l=(s=h.plotOptions)==null?void 0:s.bar)!=null&&l.isDumbbell&&(h=b.dumbbell(h)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(h),h.xaxis=h.xaxis||window.Apex.xaxis||{},e||(h.xaxis.convertedCatToNumeric=!1),h=this.checkForCatToNumericXAxis(this.chartType,C,h),((u=h.chart.sparkline)!=null&&u.enabled||(f=(c=window.Apex.chart)==null?void 0:c.sparkline)!=null&&f.enabled)&&(C=b.sparkline(C)),y=Ee.extend(_,C)}let x=Ee.extend(y,window.Apex);return _=Ee.extend(x,h),_=this.handleUserInputErrors(_),_}checkForCatToNumericXAxis(e,n,r){var i,a;let o=new Jy(r);const s=(e==="bar"||e==="boxPlot")&&((a=(i=r.plotOptions)==null?void 0:i.bar)==null?void 0:a.horizontal),l=e==="pie"||e==="polarArea"||e==="donut"||e==="radar"||e==="radialBar"||e==="heatmap",u=r.xaxis.type!=="datetime"&&r.xaxis.type!=="numeric";let c=r.xaxis.tickPlacement?r.xaxis.tickPlacement:n.xaxis&&n.xaxis.tickPlacement;return!s&&!l&&u&&c!=="between"&&(r=o.convertCatToNumeric(r)),r}extendYAxis(e,n){let r=new Lg;(typeof e.yaxis>"u"||!e.yaxis||Array.isArray(e.yaxis)&&e.yaxis.length===0)&&(e.yaxis={}),e.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(e.yaxis=Ee.extend(e.yaxis,window.Apex.yaxis)),e.yaxis.constructor!==Array?e.yaxis=[Ee.extend(r.yAxis,e.yaxis)]:e.yaxis=Ee.extendArray(e.yaxis,r.yAxis);let i=!1;e.yaxis.forEach(o=>{o.logarithmic&&(i=!0)});let a=e.series;return n&&!a&&(a=n.config.series),i&&a.length!==e.yaxis.length&&a.length&&(e.yaxis=a.map((o,s)=>{if(o.name||(a[s].name=`series-${s+1}`),e.yaxis[s])return e.yaxis[s].seriesName=a[s].name,e.yaxis[s];{const l=Ee.extend(r.yAxis,e.yaxis[0]);return l.show=!1,l}})),i&&a.length>1&&a.length!==e.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes"),e}extendAnnotations(e){return typeof e.annotations>"u"&&(e.annotations={},e.annotations.yaxis=[],e.annotations.xaxis=[],e.annotations.points=[]),e=this.extendYAxisAnnotations(e),e=this.extendXAxisAnnotations(e),e=this.extendPointAnnotations(e),e}extendYAxisAnnotations(e){let n=new Lg;return e.annotations.yaxis=Ee.extendArray(typeof e.annotations.yaxis<"u"?e.annotations.yaxis:[],n.yAxisAnnotation),e}extendXAxisAnnotations(e){let n=new Lg;return e.annotations.xaxis=Ee.extendArray(typeof e.annotations.xaxis<"u"?e.annotations.xaxis:[],n.xAxisAnnotation),e}extendPointAnnotations(e){let n=new Lg;return e.annotations.points=Ee.extendArray(typeof e.annotations.points<"u"?e.annotations.points:[],n.pointAnnotation),e}checkForDarkTheme(e){e.theme&&e.theme.mode==="dark"&&(e.tooltip||(e.tooltip={}),e.tooltip.theme!=="light"&&(e.tooltip.theme="dark"),e.chart.foreColor||(e.chart.foreColor="#f6f7f8"),e.theme.palette||(e.theme.palette="palette4"))}handleUserInputErrors(e){let n=e;if(n.tooltip.shared&&n.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(n.chart.type==="bar"&&n.plotOptions.bar.horizontal){if(n.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");n.yaxis[0].reversed&&(n.yaxis[0].opposite=!0),n.xaxis.tooltip.enabled=!1,n.yaxis[0].tooltip.enabled=!1,n.chart.zoom.enabled=!1}return(n.chart.type==="bar"||n.chart.type==="rangeBar")&&n.tooltip.shared&&n.xaxis.crosshairs.width==="barWidth"&&n.series.length>1&&(n.xaxis.crosshairs.width="tickWidth"),(n.chart.type==="candlestick"||n.chart.type==="boxPlot")&&n.yaxis[0].reversed&&(console.warn(`Reversed y-axis in ${n.chart.type} chart is not supported.`),n.yaxis[0].reversed=!1),n}}class Yhe{initGlobalVars(e){e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleM=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesRange=[],e.seriesPercent=[],e.seriesGoals=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.seriesLog=[],e.seriesColors=[],e.stackedSeriesTotals=[],e.seriesXvalues=[],e.seriesYvalues=[],e.dataWasParsed=!1,e.originalSeries=null,e.labels=[],e.hasXaxisGroups=!1,e.groups=[],e.barGroups=[],e.lineGroups=[],e.areaGroups=[],e.hasSeriesGroups=!1,e.seriesGroups=[],e.categoryLabels=[],e.timescaleLabels=[],e.noLabelsProvided=!1,e.resizeTimer=null,e.selectionResizeTimer=null,e.lastWheelExecution=0,e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.textRectsCache=new Map,e.domCache=new Map,e.dimensionCache={},e.cachedSelectors={},e.isXNumeric=!1,e.skipLastTimelinelabel=!1,e.skipFirstTimelinelabel=!1,e.isDataXYZ=!1,e.isMultiLineX=!1,e.isMultipleYAxis=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialMaxX=-Number.MAX_VALUE,e.initialMinX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.barPadForNumericAxis=0,e.padHorizontal=0,e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0,e.xTickAmount=0,e.multiAxisTickAmount=0}globalVars(e){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:e.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],invalidLogScale:!1,ignoreYAxisIndexes:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:e.chart.toolbar.autoSelected==="zoom"&&e.chart.toolbar.tools.zoom&&e.chart.zoom.enabled,panEnabled:e.chart.toolbar.autoSelected==="pan"&&e.chart.toolbar.tools.pan,selectionEnabled:e.chart.toolbar.autoSelected==="selection"&&e.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},domCache:new Map,dimensionCache:{},cachedSelectors:{},resizeObserver:null,shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,isSlopeChart:e.plotOptions.line.isSlopeChart,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,niceScaleAllowedMagMsd:[[1,1,2,5,5,5,10,10,10,10,10],[1,1,2,5,5,5,10,10,10,10,10]],niceScaleDefaultTicks:[1,2,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,24],seriesYAxisMap:[],seriesYAxisReverseMap:[]}}init(e){let n=this.globalVars(e);return this.initGlobalVars(n),n.initialConfig=Ee.extend({},e),n.initialSeries=Ee.clone(e.series),n.lastXAxis=Ee.clone(n.initialConfig.xaxis),n.lastYAxis=Ee.clone(n.initialConfig.yaxis),n}}class C1t{constructor(e){this.opts=e}init(){const e=new eS(this.opts).init({responsiveOverride:!1}),n=new Yhe().init(e);return{config:e,globals:n}}}class fu{constructor(e){this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0,this.patternIDs=[]}clippedImgArea(e){let n=this.w,r=n.config,i=parseInt(n.globals.gridWidth,10),a=parseInt(n.globals.gridHeight,10),o=i>a?i:a,s=e.image,l=0,u=0;typeof e.width>"u"&&typeof e.height>"u"?r.fill.image.width!==void 0&&r.fill.image.height!==void 0?(l=r.fill.image.width+1,u=r.fill.image.height):(l=o+1,u=o):(l=e.width,u=e.height);let c=document.createElementNS(n.globals.SVGNS,"pattern");at.setAttrs(c,{id:e.patternID,patternUnits:e.patternUnits?e.patternUnits:"userSpaceOnUse",width:l+"px",height:u+"px"});let f=document.createElementNS(n.globals.SVGNS,"image");c.appendChild(f),f.setAttributeNS(window.SVG.xlink,"href",s),at.setAttrs(f,{x:0,y:0,preserveAspectRatio:"none",width:l+"px",height:u+"px"}),f.style.opacity=e.opacity,n.globals.dom.elDefs.node.appendChild(c)}getSeriesIndex(e){const n=this.w,r=n.config.chart.type;return(r==="bar"||r==="rangeBar")&&n.config.plotOptions.bar.distributed||r==="heatmap"||r==="treemap"?this.seriesIndex=e.seriesNumber:this.seriesIndex=e.seriesNumber%n.globals.series.length,this.seriesIndex}computeColorStops(e,n){const r=this.w;let i=null,a=null;for(let u of e)u>=n.threshold?(i===null||u>i)&&(i=u):(a===null||u-1?x=Ee.getOpacityFromRGBA(_):A=Ee.hexToRgba(Ee.rgb2hex(_),x),e.opacity&&(x=e.opacity),y==="pattern"&&(f=this.handlePatternFill({fillConfig:e.fillConfig,patternFill:f,fillColor:_,fillOpacity:x,defaultColor:A})),C){let R=u.fill.gradient.colorStops?[...u.fill.gradient.colorStops]:[],I=u.fill.gradient.type;m&&(R[this.seriesIndex]=this.computeColorStops(l.globals.series[this.seriesIndex],u.plotOptions.line.colors),I="vertical"),h=this.handleGradientFill({type:I,fillConfig:e.fillConfig,fillColor:_,fillOpacity:x,colorStops:R,i:this.seriesIndex})}if(y==="image"){let R=u.fill.image.src,I=e.patternID?e.patternID:"";const O=`pattern${l.globals.cuid}${e.seriesNumber+1}${I}`;this.patternIDs.indexOf(O)===-1&&(this.clippedImgArea({opacity:x,image:Array.isArray(R)?e.seriesNumber-1&&(m=Ee.getOpacityFromRGBA(f));let b=s.gradient.opacityTo===void 0?r:Array.isArray(s.gradient.opacityTo)?s.gradient.opacityTo[o]:s.gradient.opacityTo;if(s.gradient.gradientToColors===void 0||s.gradient.gradientToColors.length===0)s.gradient.shade==="dark"?h=c.shadeColor(parseFloat(s.gradient.shadeIntensity)*-1,n.indexOf("rgb")>-1?Ee.rgb2hex(n):n):h=c.shadeColor(parseFloat(s.gradient.shadeIntensity),n.indexOf("rgb")>-1?Ee.rgb2hex(n):n);else if(s.gradient.gradientToColors[l.seriesNumber]){const _=s.gradient.gradientToColors[l.seriesNumber];h=_,_.indexOf("rgba")>-1&&(b=Ee.getOpacityFromRGBA(_))}else h=n;if(s.gradient.gradientFrom&&(f=s.gradient.gradientFrom),s.gradient.gradientTo&&(h=s.gradient.gradientTo),s.gradient.inverseColors){let _=f;f=h,h=_}return f.indexOf("rgb")>-1&&(f=Ee.rgb2hex(f)),h.indexOf("rgb")>-1&&(h=Ee.rgb2hex(h)),u.drawGradient(e,f,h,m,b,l.size,s.gradient.stops,a,o)}}class V_{constructor(e){this.ctx=e,this.w=e.w,this._filters=new Io(this.ctx),this._graphics=new at(this.ctx)}setGlobalMarkerSize(){const e=this.w;if(e.globals.markers.size=Array.isArray(e.config.markers.size)?e.config.markers.size:[e.config.markers.size],e.globals.markers.size.length>0){if(e.globals.markers.size.length"u"&&e.globals.markers.size.push(e.globals.markers.size[0])}else e.globals.markers.size=e.config.series.map(()=>e.config.markers.size)}plotChartMarkers({pointsPos:e,seriesIndex:n,j:r,pSize:i,alwaysDrawMarker:a=!1,isVirtualPoint:o=!1}){let s=this.w,l=n,u=e,c=null,f=new at(this.ctx);const h=s.config.markers.discrete&&s.config.markers.discrete.length;if(Array.isArray(u.x))for(let m=0;m0:s.config.markers.size>0)||a||h){y||(x+=` w${Ee.randomId()}`);let A=this.getMarkerConfig({cssClass:x,seriesIndex:n,dataPointIndex:_});s.config.series[l].data[_]&&(s.config.series[l].data[_].fillColor&&(A.pointFillColor=s.config.series[l].data[_].fillColor),s.config.series[l].data[_].strokeColor&&(A.pointStrokeColor=s.config.series[l].data[_].strokeColor)),typeof i<"u"&&(A.pSize=i),(u.x[m]<-s.globals.markers.largestSize||u.x[m]>s.globals.gridWidth+s.globals.markers.largestSize||u.y[m]<-s.globals.markers.largestSize||u.y[m]>s.globals.gridHeight+s.globals.markers.largestSize)&&(A.pSize=0),y||((s.globals.markers.size[n]>0||a||h)&&!c&&(c=f.group({class:a||h?"":"apexcharts-series-markers"}),c.attr("clip-path",`url(#gridRectMarkerMask${s.globals.cuid})`),this.setupMarkerDelegation(c)),b=f.drawMarker(u.x[m],u.y[m],A),b.attr("rel",_),b.attr("j",_),b.attr("index",n),b.node.setAttribute("default-marker-size",A.pSize),this._filters.setSelectionFilter(b,n,_),c&&c.add(b))}else typeof s.globals.pointsArray[n]>"u"&&(s.globals.pointsArray[n]=[]),s.globals.pointsArray[n].push([u.x[m],u.y[m]])}return c}getMarkerConfig({cssClass:e,seriesIndex:n,dataPointIndex:r=null,radius:i=null,size:a=null,strokeWidth:o=null}){const s=this.w;let l=this.getMarkerStyle(n),u=a===null?s.globals.markers.size[n]:a;const c=s.config.markers;return r!==null&&c.discrete.length&&c.discrete.map(f=>{f.seriesIndex===n&&f.dataPointIndex===r&&(l.pointStrokeColor=f.strokeColor,l.pointFillColor=f.fillColor,u=f.size,l.pointShape=f.shape)}),{pSize:i===null?u:i,pRadius:i!==null?i:c.radius,pointStrokeWidth:o!==null?o:Array.isArray(c.strokeWidth)?c.strokeWidth[n]:c.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(c.shape)?c.shape[n]:c.shape),class:e,pointStrokeOpacity:Array.isArray(c.strokeOpacity)?c.strokeOpacity[n]:c.strokeOpacity,pointStrokeDashArray:Array.isArray(c.strokeDashArray)?c.strokeDashArray[n]:c.strokeDashArray,pointFillOpacity:Array.isArray(c.fillOpacity)?c.fillOpacity[n]:c.fillOpacity,seriesIndex:n}}setupMarkerDelegation(e){const n=this.w,r=".apexcharts-marker";this._graphics.setupEventDelegation(e,r),e.node.addEventListener("click",i=>{n.config.markers.onClick&&at._findDelegateTarget(i.target,e.node,r)&&n.config.markers.onClick(i)}),e.node.addEventListener("dblclick",i=>{n.config.markers.onDblClick&&at._findDelegateTarget(i.target,e.node,r)&&n.config.markers.onDblClick(i)}),e.node.addEventListener("touchstart",i=>{const a=at._findDelegateTarget(i.target,e.node,r);a&&a.instance&&this._graphics.pathMouseDown(a.instance,i)},{passive:!0})}addEvents(e){const n=this.w;e.node.addEventListener("mouseenter",this._graphics.pathMouseEnter.bind(this.ctx,e)),e.node.addEventListener("mouseleave",this._graphics.pathMouseLeave.bind(this.ctx,e)),e.node.addEventListener("mousedown",this._graphics.pathMouseDown.bind(this.ctx,e)),e.node.addEventListener("click",n.config.markers.onClick),e.node.addEventListener("dblclick",n.config.markers.onDblClick),e.node.addEventListener("touchstart",this._graphics.pathMouseDown.bind(this.ctx,e),{passive:!0})}getMarkerStyle(e){let n=this.w,r=n.globals.markers.colors,i=n.config.markers.strokeColor||n.config.markers.strokeColors,a=Array.isArray(i)?i[e]:i,o=Array.isArray(r)?r[e]:r;return{pointStrokeColor:a,pointFillColor:o}}}class Whe{constructor(e){this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.anim=new G_(this.ctx),this.filters=new Io(this.ctx),this.fill=new fu(this.ctx),this.markers=new V_(this.ctx),this.graphics=new at(this.ctx)}draw(e,n,r){let i=this.w,a=this.graphics,o=r.realIndex,s=r.pointsPos,l=r.zRatio,u=r.elParent,c=a.group({class:`apexcharts-series-markers apexcharts-series-${i.config.chart.type}`});if(c.attr("clip-path",`url(#gridRectMarkerMask${i.globals.cuid})`),this.markers.setupMarkerDelegation(c),Array.isArray(s.x))for(let f=0;fx.maxBubbleRadius&&(b=x.maxBubbleRadius)}let _=s.x[f],y=s.y[f];if(b=b||0,(y===null||typeof i.globals.series[o][h]>"u")&&(m=!1),m){const x=this.drawPoint(_,y,b,o,h,n);c.add(x)}u.add(c)}}drawPoint(e,n,r,i,a,o){const s=this.w;let l=i;const u=this.anim,c=this.filters,f=this.fill,h=this.markers,m=this.graphics,b=h.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:l,dataPointIndex:a,radius:s.config.chart.type==="bubble"||s.globals.comboCharts&&s.config.series[i]&&s.config.series[i].type==="bubble"?r:null});let _=f.fillPath({seriesNumber:i,dataPointIndex:a,color:b.pointFillColor,patternUnits:"objectBoundingBox",value:s.globals.series[i][o]}),y=m.drawMarker(e,n,b);if(s.config.series[l].data[a]&&s.config.series[l].data[a].fillColor&&(_=s.config.series[l].data[a].fillColor),y.attr({fill:_}),s.config.chart.dropShadow.enabled){const x=s.config.chart.dropShadow;c.dropShadow(y,x,i)}if(this.initialAnim&&!s.globals.dataChanged&&!s.globals.resized){let x=s.config.chart.animations.speed;u.animateMarker(y,x,s.globals.easing,()=>{window.setTimeout(()=>{u.animationCompleted(y)},100)})}else s.globals.animationEnded=!0;return y.attr({rel:a,j:a,index:i,"default-marker-size":b.pSize}),c.setSelectionFilter(y,i,a),y.node.classList.add("apexcharts-marker"),y}centerTextInBubble(e){let n=this.w;return e=e+parseInt(n.config.dataLabels.style.fontSize,10)/4,{y:e}}}class u_{constructor(e){this.ctx=e,this.w=e.w}dataLabelsCorrection(e,n,r,i,a,o,s){let l=this.w,u=new at(this.ctx),c=!1,f=u.getTextRects(r,s),h=f.width,m=f.height;n<0&&(n=0),n>l.globals.gridHeight+m&&(n=l.globals.gridHeight+m/2),typeof l.globals.dataLabelsRects[i]>"u"&&(l.globals.dataLabelsRects[i]=[]),l.globals.dataLabelsRects[i].push({x:e,y:n,width:h,height:m});let b=l.globals.dataLabelsRects[i].length-2,_=typeof l.globals.lastDrawnDataLabelsIndexes[i]<"u"?l.globals.lastDrawnDataLabelsIndexes[i][l.globals.lastDrawnDataLabelsIndexes[i].length-1]:0;if(typeof l.globals.dataLabelsRects[i][b]<"u"){let y=l.globals.dataLabelsRects[i][_];(e>y.x+y.width||n>y.y+y.height||n+ms.config.dataLabels.formatter(R,{ctx:this.ctx,seriesIndex:r,dataPointIndex:h,w:s});s.config.chart.type==="bubble"?(y=s.globals.seriesZ[r][h],x=C(y),f=n.y[_],f=new Whe(this.ctx).centerTextInBubble(f,r,h).y):typeof y<"u"&&(x=C(y));let A=s.config.dataLabels.textAnchor;s.globals.isSlopeChart&&(h===0?A="end":h===s.config.series[r].data.length-1?A="start":A="middle"),this.plotDataLabelsText({x:c,y:f,text:x,i:r,j:h,parent:m,offsetCorrection:!0,dataLabelsConfig:s.config.dataLabels,textAnchor:A})}return m}plotDataLabelsText(e){let n=this.w,r=new at(this.ctx),{x:i,y:a,i:o,j:s,text:l,textAnchor:u,fontSize:c,parent:f,dataLabelsConfig:h,color:m,alwaysDrawDataLabel:b,offsetCorrection:_,className:y}=e,x=null;if(Array.isArray(n.config.dataLabels.enabledOnSeries)&&n.config.dataLabels.enabledOnSeries.indexOf(o)<0)return x;let C={x:i,y:a,drawnextLabel:!0,textRects:null};_&&(C=this.dataLabelsCorrection(i,a,l,o,s,b,parseInt(h.style.fontSize,10))),n.globals.zoomed||(i=C.x,a=C.y),C.textRects&&(i<-20-C.textRects.width||i>n.globals.gridWidth+C.textRects.width+30)&&(l="");let A=n.globals.dataLabels.style.colors[o];((n.config.chart.type==="bar"||n.config.chart.type==="rangeBar")&&n.config.plotOptions.bar.distributed||n.config.dataLabels.distributed)&&(A=n.globals.dataLabels.style.colors[s]),typeof A=="function"&&(A=A({series:n.globals.series,seriesIndex:o,dataPointIndex:s,w:n})),m&&(A=m);let R=h.offsetX,I=h.offsetY;if((n.config.chart.type==="bar"||n.config.chart.type==="rangeBar")&&(R=0,I=0),n.globals.isSlopeChart&&(s!==0&&(R=h.offsetX*-2+5),s!==0&&s!==n.config.series[o].data.length-1&&(R=0)),C.drawnextLabel){if(u==="middle"&&i===n.globals.gridWidth&&(u="end"),x=r.drawText({width:100,height:parseInt(h.style.fontSize,10),x:i+R,y:a+I,foreColor:A,textAnchor:u||h.textAnchor,text:l,fontSize:c||h.style.fontSize,fontFamily:h.style.fontFamily,fontWeight:h.style.fontWeight||"normal"}),x.attr({class:y||"apexcharts-datalabel",cx:i,cy:a}),h.dropShadow.enabled){const O=h.dropShadow;new Io(this.ctx).dropShadow(x,O)}f.add(x),typeof n.globals.lastDrawnDataLabelsIndexes[o]>"u"&&(n.globals.lastDrawnDataLabelsIndexes[o]=[]),n.globals.lastDrawnDataLabelsIndexes[o].push(s)}return x}addBackgroundToDataLabel(e,n){const r=this.w,i=r.config.dataLabels.background,a=i.padding,o=i.padding/2,s=n.width,l=n.height,c=new at(this.ctx).drawRect(n.x-a,n.y-o/2,s+a*2,l+o,i.borderRadius,r.config.chart.background==="transparent"||!r.config.chart.background?"#fff":r.config.chart.background,i.opacity,i.borderWidth,i.borderColor);return i.dropShadow.enabled&&new Io(this.ctx).dropShadow(c,i.dropShadow),c}dataLabelsBackground(){const e=this.w;if(e.config.chart.type==="bubble")return;const n=e.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text");for(let r=0;r-1&&(e[r].data=[]);return e}highlightSeries(e){const n=this.w,r=this.getSeriesByName(e);let i=parseInt(r?.getAttribute("data:realIndex"),10);const a="highlightSeriesEls";let o=n.globals.cachedSelectors[a];o||(o=n.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels, .apexcharts-yaxis"),n.globals.cachedSelectors[a]=o);let s=null,l=null,u=null;if(n.globals.axisCharts||n.config.chart.type==="radialBar")if(n.globals.axisCharts){s=n.globals.dom.baseEl.querySelector(`.apexcharts-series[data\\:realIndex='${i}']`),l=n.globals.dom.baseEl.querySelector(`.apexcharts-datalabels[data\\:realIndex='${i}']`);let c=n.globals.seriesYAxisReverseMap[i];u=n.globals.dom.baseEl.querySelector(`.apexcharts-yaxis[rel='${c}']`)}else s=n.globals.dom.baseEl.querySelector(`.apexcharts-series[rel='${i+1}']`);else s=n.globals.dom.baseEl.querySelector(`.apexcharts-series[rel='${i+1}'] path`);for(let c=0;c{for(let l=0;l{for(let u=0;u=s.from&&(cMath.max(f,h.to),0);o(u,c)}else e.type==="mouseout"&&a("remove")}getActiveConfigSeriesIndex(e="asc",n=[]){const r=this.w;let i=0;if(r.config.series.length>1){let a=r.config.series.map((o,s)=>{const l=()=>r.globals.comboCharts?n.length===0||n.length&&n.indexOf(r.config.series[s].type)>-1:!0;return o.data&&o.data.length>0&&r.globals.collapsedSeriesIndices.indexOf(s)===-1&&l()?s:-1});for(let o=e==="asc"?0:a.length-1;e==="asc"?o=0;e==="asc"?o++:o--)if(a[o]!==-1){i=a[o];break}}return i}getBarSeriesIndices(){return this.w.globals.comboCharts?this.w.config.series.map((n,r)=>n.type==="bar"||n.type==="column"?r:-1).filter(n=>n!==-1):this.w.config.series.map((n,r)=>r)}getPreviousPaths(){let e=this.w;e.globals.previousPaths=[];function n(o,s,l){let u=o[s].childNodes,c={type:l,paths:[],realIndex:o[s].getAttribute("data:realIndex")};for(let f=0;fe.globals.dom.baseEl.querySelectorAll(`.apexcharts-${o}-series .apexcharts-series`);["line","area","bar","rangebar","rangeArea","candlestick","radar"].forEach(o=>{const s=r(o);for(let l=0;l0)for(let o=0;os[u].getAttribute(h),f={x:parseFloat(c("x")),y:parseFloat(c("y")),width:parseFloat(c("width")),height:parseFloat(c("height"))};l.push({rect:f,color:s[u].getAttribute("color")})}e.globals.previousPaths.push(l)}e.globals.axisCharts||(e.globals.previousPaths=e.globals.series)}clearPreviousPaths(){const e=this.w;e.globals.previousPaths=[],e.globals.allSeriesCollapsed=!1}handleNoData(){const e=this.w,n=this,r=e.config.noData,i=new at(n.ctx);let a=e.globals.svgWidth/2,o=e.globals.svgHeight/2,s="middle";if(e.globals.noData=!0,e.globals.animationEnded=!0,r.align==="left"?(a=10,s="start"):r.align==="right"&&(a=e.globals.svgWidth-10,s="end"),r.verticalAlign==="top"?o=50:r.verticalAlign==="bottom"&&(o=e.globals.svgHeight-50),a=a+r.offsetX,o=o+parseInt(r.style.fontSize,10)+2+r.offsetY,r.text!==void 0&&r.text!==""){let l=i.drawText({x:a,y:o,text:r.text,textAnchor:s,fontSize:r.style.fontSize,fontFamily:r.style.fontFamily,foreColor:r.style.color,opacity:1,class:"apexcharts-text-nodata"});e.globals.dom.Paper.add(l)}}setNullSeriesToZeroValues(e){let n=this.w;for(let r=0;rr.length>0?r:[])}}class LF{constructor(e){this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new xa(this.ctx)}getFirstDataPoint(){const e=this.w.config.series,n=new _u(this.ctx);return this.activeSeriesIndex=n.getActiveConfigSeriesIndex(),e[this.activeSeriesIndex]&&e[this.activeSeriesIndex].data&&e[this.activeSeriesIndex].data.length>0&&e[this.activeSeriesIndex].data[0]!==null&&typeof e[this.activeSeriesIndex].data[0]<"u"?e[this.activeSeriesIndex].data[0]:null}isMultiFormat(){return this.isFormatXY()||this.isFormat2DArray()}isFormatXY(){const e=this.getFirstDataPoint();return e&&typeof e.x<"u"}isFormat2DArray(){const e=this.getFirstDataPoint();return e&&Array.isArray(e)}handleFormat2DArray(e,n){const r=this.w.config,i=this.w.globals,a=e[n].data,o=r.chart.type==="boxPlot"||r.series[n].type==="boxPlot";for(let s=0;s=5?this.twoDSeries.push(Ee.parseNumber(l[4])):this.twoDSeries.push(Ee.parseNumber(c)),i.dataFormatXNumeric=!0),r.xaxis.type==="datetime"){let h=new Date(u);h=h.getTime(),this.twoDSeriesX.push(h)}else this.twoDSeriesX.push(u);typeof f<"u"&&(this.threeDSeries.push(f),i.isDataXYZ=!0)}}handleFormatXY(e,n){const r=this.w.config,i=this.w.globals,a=new Ao(this.ctx),o=e[n].data;let s=n;i.collapsedSeriesIndices.indexOf(n)>-1&&(s=this.activeSeriesIndex);const l=e[s].data;for(let u=0;u"u"&&(this.seriesGoals[n]=[]),typeof c.goals<"u"&&Array.isArray(c.goals)?this.seriesGoals[n].push(c.goals):this.seriesGoals[n].push(null),typeof c.z<"u"&&(this.threeDSeries.push(c.z),i.isDataXYZ=!0)}for(let u=0;u{a&&a.forEach(o=>{const s=o.y,l=s.length;if(!(l<=1))for(let u=0;u{if(!o.has(l.x)){const u={x:l.x,overlaps:[],y:[]};o.set(l.x,u),s.push(u)}}),e==="array")for(let l=0;lb.slice(1):h=b=>Array.isArray(b[1])?b[1]:[]:h=m=>Array.isArray(m.y)?m.y:[];for(let m=0;m=2&&(o.push(b[0]),s.push(b[1]),a?(l.push(b[2]),u.push(b[3]),c.push(b[4])):(u.push(b[2]),c.push(b[3])))}return{o,h:s,m:l,l:u,c}}parseDataAxisCharts(e,n=this.ctx){const r=this.w.config,i=this.w.globals,a=new Ao(n),o=r.labels.length>0?r.labels.slice():r.xaxis.categories.slice();i.isRangeBar=r.chart.type==="rangeBar"&&i.isBarHorizontal,i.hasXaxisGroups=r.xaxis.type==="category"&&r.xaxis.group.groups.length>0,i.hasXaxisGroups&&(i.groups=r.xaxis.group.groups),e.forEach((c,f)=>{c.name!==void 0?i.seriesNames.push(c.name):i.seriesNames.push("series-"+parseInt(f+1,10))}),this.coreUtils.setSeriesYAxisMappings();let s=[],l=[...new Set(r.series.map(c=>c.group))];r.series.forEach((c,f)=>{let h=l.indexOf(c.group);s[h]||(s[h]=[]),s[h].push(i.seriesNames[f])}),i.seriesGroups=s;const u=()=>{for(let c=0;c"u"){console.error("It is a possibility that you may have not included 'data' property in series.");return}if((r.chart.type==="rangeBar"||r.chart.type==="rangeArea"||e[c].type==="rangeBar"||e[c].type==="rangeArea")&&(i.isRangeData=!0,this.handleRangeData(e,c)),this.isMultiFormat())this.isFormat2DArray()?this.handleFormat2DArray(e,c):this.isFormatXY()&&this.handleFormatXY(e,c),(r.chart.type==="candlestick"||e[c].type==="candlestick"||r.chart.type==="boxPlot"||e[c].type==="boxPlot")&&this.handleCandleStickBoxData(e,c),i.series.push(this.twoDSeries),i.labels.push(this.twoDSeriesX),i.seriesX.push(this.twoDSeriesX),i.seriesGoals=this.seriesGoals,c===this.activeSeriesIndex&&!this.fallbackToCategory&&(i.isXNumeric=!0);else{r.xaxis.type==="datetime"?(i.isXNumeric=!0,u(),i.seriesX.push(this.twoDSeriesX)):r.xaxis.type==="numeric"&&(i.isXNumeric=!0,o.length>0&&(this.twoDSeriesX=o,i.seriesX.push(this.twoDSeriesX))),i.labels.push(this.twoDSeriesX);const f=e[c].data.map(h=>Ee.parseNumber(h));i.series.push(f)}i.seriesZ.push(this.threeDSeries),e[c].color!==void 0?i.seriesColors.push(e[c].color):i.seriesColors.push(void 0)}return this.w}parseDataNonAxisCharts(e){const n=this.w.globals,r=this.w.config,i=Array.isArray(e)&&e.every(s=>typeof s=="number")&&r.labels.length>0,a=Array.isArray(e)&&e.some(s=>s&&typeof s=="object"&&s.data||s&&typeof s=="object"&&s.parsing);if(i&&a&&console.warn("ApexCharts: Both old format (numeric series + labels) and new format (series objects with data/parsing) detected. Using old format for backward compatibility."),i){n.series=e.slice(),n.seriesNames=r.labels.slice();for(let s=0;stypeof s=="number")){n.series=e.slice(),n.seriesNames=[];for(let s=0;s{const l=Ee.parseNumber(s);return l>100&&console.warn(`ApexCharts: RadialBar value ${l} > 100, consider using percentage values (0-100)`),l}));for(let s=0;s{n.__apexParsed&&delete n.__apexParsed})}extractPieDataFromSeries(e){const n=[],r=[];if(!Array.isArray(e))return console.warn("ApexCharts: Expected array for series data"),{values:[],labels:[]};if(e.length===0)return console.warn("ApexCharts: Empty series array"),{values:[],labels:[]};const i=e[0];if(typeof i=="object"&&i!==null&&i.data)this.extractPieDataFromSeriesObjects(e,n,r);else return console.warn("ApexCharts: Unsupported series format for pie/donut/radialBar. Expected series objects with data property."),{values:[],labels:[]};return{values:n,labels:r}}extractPieDataFromSeriesObjects(e,n,r){e.forEach((i,a)=>{if(!i.data||!Array.isArray(i.data)){console.warn(`ApexCharts: Series ${a} has no valid data array`);return}i.data.forEach(o=>{typeof o=="object"&&o!==null?o.x!==void 0&&o.y!==void 0?(r.push(String(o.x)),n.push(Ee.parseNumber(o.y))):console.warn("ApexCharts: Invalid data point format for pie chart. Expected {x, y} format:",o):console.warn("ApexCharts: Expected object data point, got:",typeof o)})})}handleExternalLabelsData(e){const n=this.w.config,r=this.w.globals;n.xaxis.categories.length>0?r.labels=n.xaxis.categories:n.labels.length>0?r.labels=n.labels.slice():this.fallbackToCategory?(r.labels=r.labels[0],r.seriesRange.length&&(r.seriesRange.map(i=>{i.forEach(a=>{r.labels.indexOf(a.x)<0&&a.x&&r.labels.push(a.x)})}),r.labels=Array.from(new Set(r.labels.map(JSON.stringify)),JSON.parse)),n.xaxis.convertedCatToNumeric&&(new Jy(n).convertCatToNumericXaxis(n,this.ctx,r.seriesX[0]),this._generateExternalLabels(e))):this._generateExternalLabels(e)}_generateExternalLabels(e){const n=this.w.globals,r=this.w.config;let i=[];if(n.axisCharts){if(n.series.length>0)if(this.isFormatXY()){const a=r.series.map(s=>s.data.filter((l,u,c)=>c.findIndex(f=>f.x===l.x)===u)),o=a.reduce((s,l,u,c)=>c[s].length>l.length?s:u,0);for(let s=0;so+1);for(let a=0;ar.xaxis.labels.formatter(a))),n.noLabelsProvided=!0}parseRawDataIfNeeded(e){const n=this.w.config,r=this.w.globals,i=n.parsing;if(r.dataWasParsed||!i&&!e.some(o=>o.parsing))return e;const a=e.map((o,s)=>{var l,u,c;if(!o.data||!Array.isArray(o.data)||o.data.length===0)return o;const f={x:((l=o.parsing)==null?void 0:l.x)||i?.x,y:((u=o.parsing)==null?void 0:u.y)||i?.y,z:((c=o.parsing)==null?void 0:c.z)||i?.z};if(!f.x&&!f.y)return o;const h=o.data[0];if(typeof h=="object"&&h!==null&&(Object.prototype.hasOwnProperty.call(h,"x")||Object.prototype.hasOwnProperty.call(h,"y"))||Array.isArray(h))return o;if(!f.x||!f.y||Array.isArray(f.y)&&f.y.length===0)return console.warn(`ApexCharts: Series ${s} has parsing config but missing x or y field specification`),o;const m=o.data.map((b,_)=>{if(typeof b!="object"||b===null)return console.warn(`ApexCharts: Series ${s}, data point ${_} is not an object, skipping parsing`),b;const y=this.getNestedValue(b,f.x);let x,C;if(Array.isArray(f.y)){const R=f.y.map(I=>this.getNestedValue(b,I));this.w.config.chart.type==="bubble"&&R.length===2?x=R[0]:x=R}else x=this.getNestedValue(b,f.y);f.z&&(C=this.getNestedValue(b,f.z)),y===void 0&&console.warn(`ApexCharts: Series ${s}, data point ${_} missing field '${f.x}'`),x===void 0&&console.warn(`ApexCharts: Series ${s}, data point ${_} missing field '${f.y}'`);const A={x:y,y:x};if(this.w.config.chart.type==="bubble"&&Array.isArray(f.y)&&f.y.length===2){const R=this.getNestedValue(b,f.y[1]);R!==void 0&&(A.z=R)}return C!==void 0&&(A.z=C),A});return rr(vn({},o),{data:m,__apexParsed:!0})});return r.dataWasParsed=!0,r.originalSeries||(r.originalSeries=Ee.clone(e)),a}getNestedValue(e,n){if(!e||typeof e!="object"||!n)return;if(n.indexOf(".")===-1)return e[n];const r=n.split(".");let i=e;for(let a=0;a{let a=0;r.forEach(o=>{e.globals.collapsedSeriesIndices.indexOf(o)!==-1&&a++}),a>0&&a==r.length&&n.push(i)}),e.globals.ignoreYAxisIndexes=n.map(r=>r)}}class ry{constructor(e){this.ctx=e,this.w=e.w}svgStringToNode(e){return new DOMParser().parseFromString(e,"image/svg+xml").documentElement}scaleSvgNode(e,n){let r=parseFloat(e.getAttributeNS(null,"width")),i=parseFloat(e.getAttributeNS(null,"height"));e.setAttributeNS(null,"width",r*n),e.setAttributeNS(null,"height",i*n),e.setAttributeNS(null,"viewBox","0 0 "+r+" "+i)}getSvgString(e){return new Promise(n=>{const r=this.w;let i=e||r.config.chart.toolbar.export.scale||r.config.chart.toolbar.export.width/r.globals.svgWidth;i||(i=1);const a=r.globals.svgWidth*i,o=r.globals.svgHeight*i,s=r.globals.dom.elWrap.cloneNode(!0);s.style.width=a+"px",s.style.height=o+"px";const l=new XMLSerializer().serializeToString(s),u=r.config.legend.show&&r.globals.dom.elLegendWrap&&r.globals.dom.elLegendWrap.children.length>0;let c=` + .apexcharts-tooltip, .apexcharts-toolbar, .apexcharts-xaxistooltip, .apexcharts-yaxistooltip, .apexcharts-xcrosshairs, .apexcharts-ycrosshairs, .apexcharts-zoom-rect, .apexcharts-selection-rect { + display: none; + } + `;u&&(c+=qhe);let f=` + + +
+ + ${l} +
+
+
+ `;const h=this.svgStringToNode(f);i!==1&&this.scaleSvgNode(h,i),this.convertImagesToBase64(h).then(()=>{f=new XMLSerializer().serializeToString(h),n(f.replace(/ /g," "))})})}convertImagesToBase64(e){const n=e.getElementsByTagName("image"),r=Array.from(n).map(i=>{const a=i.getAttributeNS("http://www.w3.org/1999/xlink","href");return a&&!a.startsWith("data:")?this.getBase64FromUrl(a).then(o=>{i.setAttributeNS("http://www.w3.org/1999/xlink","href",o)}).catch(o=>{console.error("Error converting image to base64:",o)}):Promise.resolve()});return Promise.all(r)}getBase64FromUrl(e){return new Promise((n,r)=>{const i=new Image;i.crossOrigin="Anonymous",i.onload=()=>{const a=document.createElement("canvas");a.width=i.width,a.height=i.height,a.getContext("2d").drawImage(i,0,0),n(a.toDataURL())},i.onerror=r,i.src=e})}svgUrl(){return new Promise(e=>{this.getSvgString().then(n=>{const r=new Blob([n],{type:"image/svg+xml;charset=utf-8"});e(URL.createObjectURL(r))})})}dataURI(e){return new Promise(n=>{const r=this.w,i=e?e.scale||e.width/r.globals.svgWidth:1,a=document.createElement("canvas");a.width=r.globals.svgWidth*i,a.height=parseInt(r.globals.dom.elWrap.style.height,10)*i;const o=r.config.chart.background==="transparent"||!r.config.chart.background?"#fff":r.config.chart.background;let s=a.getContext("2d");s.fillStyle=o,s.fillRect(0,0,a.width*i,a.height*i),this.getSvgString(i).then(l=>{const u="data:image/svg+xml,"+encodeURIComponent(l);let c=new Image;c.crossOrigin="anonymous",c.onload=()=>{if(s.drawImage(c,0,0),a.msToBlob){let f=a.msToBlob();n({blob:f})}else{let f=a.toDataURL("image/png");n({imgURI:f})}},c.src=u})})}exportToSVG(){this.svgUrl().then(e=>{this.triggerDownload(e,this.w.config.chart.toolbar.export.svg.filename,".svg")})}exportToPng(){const e=this.w.config.chart.toolbar.export.scale,n=this.w.config.chart.toolbar.export.width,r=e?{scale:e}:n?{width:n}:void 0;this.dataURI(r).then(({imgURI:i,blob:a})=>{a?navigator.msSaveOrOpenBlob(a,this.w.globals.chartID+".png"):this.triggerDownload(i,this.w.config.chart.toolbar.export.png.filename,".png")})}exportToCSV({series:e,fileName:n,columnDelimiter:r=",",lineDelimiter:i=` +`}){const a=this.w;e||(e=a.config.series);let o=[],s=[],l="",u="\uFEFF",c=a.globals.series.map((R,I)=>a.globals.collapsedSeriesIndices.indexOf(I)===-1?R:[]);const f=R=>typeof a.config.chart.toolbar.export.csv.categoryFormatter=="function"?a.config.chart.toolbar.export.csv.categoryFormatter(R):a.config.xaxis.type==="datetime"&&String(R).length>=10?new Date(R).toDateString():Ee.isNumber(R)?R:R.split(r).join(""),h=R=>typeof a.config.chart.toolbar.export.csv.valueFormatter=="function"?a.config.chart.toolbar.export.csv.valueFormatter(R):R,m=Math.max(...e.map(R=>R.data?R.data.length:0)),b=new LF(this.ctx),_=new gh(this.ctx),y=R=>{let I="";if(!a.globals.axisCharts)I=a.config.labels[R];else{if(a.config.xaxis.type==="category"||a.config.xaxis.convertedCatToNumeric)if(a.globals.isBarHorizontal){let O=a.globals.yLabelFormatters[0],k=new _u(this.ctx).getActiveConfigSeriesIndex();I=O(a.globals.labels[R],{seriesIndex:k,dataPointIndex:R,w:a})}else I=_.getLabel(a.globals.labels,a.globals.timescaleLabels,0,R).text;a.config.xaxis.type==="datetime"&&(a.config.xaxis.categories.length?I=a.config.xaxis.categories[R]:a.config.labels.length&&(I=a.config.labels[R]))}return I===null?"nullvalue":(Array.isArray(I)&&(I=I.join(" ")),Ee.isNumber(I)?I:I.split(r).join(""))},x=()=>[...Array(m)].map(()=>""),C=(R,I)=>{var O;if(o.length&&I===0&&s.push(o.join(r)),R.data){R.data=R.data.length&&R.data||x();for(let N=0;N{const R=new Set,I={};e.forEach((O,N)=>{O?.data.forEach(k=>{let D,P;if(b.isFormatXY())D=k.x,P=k.y;else if(b.isFormat2DArray())D=k[0],P=k[1];else return;I[D]||(I[D]=Array(e.length).fill("")),I[D][N]=h(P),R.add(D)})}),o.length&&s.push(o.join(r)),Array.from(R).sort().forEach(O=>{s.push([f(O),I[O].join(r)])})};o.push(a.config.chart.toolbar.export.csv.headerCategory),a.config.chart.type==="boxPlot"?(o.push("minimum"),o.push("q1"),o.push("median"),o.push("q3"),o.push("maximum")):a.config.chart.type==="candlestick"?(o.push("open"),o.push("high"),o.push("low"),o.push("close")):a.config.chart.type==="rangeBar"?(o.push("minimum"),o.push("maximum")):e.map((R,I)=>{const O=(R.name?R.name:`series-${I}`)+"";a.globals.axisCharts&&o.push(O.split(r).join("")?O.split(r).join(""):`series-${I}`)}),a.globals.axisCharts||(o.push(a.config.chart.toolbar.export.csv.headerValue),s.push(o.join(r))),!a.globals.allSeriesHasEqualX&&a.globals.axisCharts&&!a.config.xaxis.categories.length&&!a.config.labels.length?A():e.map((R,I)=>{a.globals.axisCharts?C(R,I):(o=[],o.push(f(a.globals.labels[I])),o.push(h(c[I])),s.push(o.join(r)))}),l+=s.join(i),this.triggerDownload("data:text/csv; charset=utf-8,"+encodeURIComponent(u+l),n||a.config.chart.toolbar.export.csv.filename,".csv")}triggerDownload(e,n,r){const i=document.createElement("a");i.href=e,i.download=(n||this.w.globals.chartID)+r,document.body.appendChild(i),i.click(),document.body.removeChild(i)}}class tS{constructor(e,n){this.ctx=e,this.elgrid=n,this.w=e.w;const r=this.w;this.axesUtils=new gh(e),this.xaxisLabels=r.globals.labels.slice(),r.globals.timescaleLabels.length>0&&!r.globals.isBarHorizontal&&(this.xaxisLabels=r.globals.timescaleLabels.slice()),r.config.xaxis.overwriteCategories&&(this.xaxisLabels=r.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],r.config.xaxis.position==="top"?this.offY=0:this.offY=r.globals.gridHeight,this.offY=this.offY+r.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal=r.config.chart.type==="bar"&&r.config.plotOptions.bar.horizontal,this.xaxisFontSize=r.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=r.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=r.config.xaxis.labels.style.colors,this.xaxisBorderWidth=r.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=r.config.yaxis[0].axisBorder.width.toString()),String(this.xaxisBorderWidth).indexOf("%")>-1?this.xaxisBorderWidth=r.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=r.config.xaxis.axisBorder.height,this.yaxis=r.config.yaxis[0]}drawXaxis(){let e=this.w,n=new at(this.ctx),r=n.group({class:"apexcharts-xaxis",transform:`translate(${e.config.xaxis.offsetX}, ${e.config.xaxis.offsetY})`}),i=n.group({class:"apexcharts-xaxis-texts-g",transform:`translate(${e.globals.translateXAxisX}, ${e.globals.translateXAxisY})`});r.add(i);let a=[];for(let o=0;os),e.globals.hasXaxisGroups){let o=e.globals.groups;a=[];for(let l=0;lo[l].cols*u,s)}if(e.config.xaxis.title.text!==void 0){let o=n.group({class:"apexcharts-xaxis-title"}),s=n.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.offY+parseFloat(this.xaxisFontSize)+(e.config.xaxis.position==="bottom"?e.globals.xAxisLabelsHeight:-e.globals.xAxisLabelsHeight-10)+e.config.xaxis.title.offsetY,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});o.add(s),r.add(o)}if(e.config.xaxis.axisBorder.show){const o=e.globals.barPadForNumericAxis;let s=n.drawLine(e.globals.padHorizontal+e.config.xaxis.axisBorder.offsetX-o,this.offY,this.xaxisBorderWidth+o,this.offY,e.config.xaxis.axisBorder.color,0,this.xaxisBorderHeight);this.elgrid&&this.elgrid.elGridBorders&&e.config.grid.show?this.elgrid.elGridBorders.add(s):r.add(s)}return r}drawXAxisLabelAndGroup(e,n,r,i,a,o,s={}){let l=[],u=[],c=this.w;const f=s.xaxisFontSize||this.xaxisFontSize,h=s.xaxisFontFamily||this.xaxisFontFamily,m=s.xaxisForeColors||this.xaxisForeColors,b=s.fontWeight||c.config.xaxis.labels.style.fontWeight,_=s.cssClass||c.config.xaxis.labels.style.cssClass;let y,x=c.globals.padHorizontal,C=i.length,A=c.config.xaxis.type==="category"?c.globals.dataPoints:C;if(A===0&&C>A&&(A=C),a){let R=Math.max(Number(c.config.xaxis.tickAmount)||1,A>1?A-1:A);y=c.globals.gridWidth/Math.min(R,C-1),x=x+o(0,y)/2+c.config.xaxis.labels.offsetX}else y=c.globals.gridWidth/A,x=x+o(0,y)+c.config.xaxis.labels.offsetX;for(let R=0;R<=C-1;R++){let I=x-o(R,y)/2+c.config.xaxis.labels.offsetX;R===0&&C===1&&y/2===x&&A===1&&(I=c.globals.gridWidth/2);let O=this.axesUtils.getLabel(i,c.globals.timescaleLabels,I,R,l,f,e),N=28;c.globals.rotateXLabels&&e&&(N=22),c.config.xaxis.title.text&&c.config.xaxis.position==="top"&&(N+=parseFloat(c.config.xaxis.title.style.fontSize)+2),e||(N=N+parseFloat(f)+(c.globals.xAxisLabelsHeight-c.globals.xAxisGroupLabelsHeight)+(c.globals.rotateXLabels?10:0)),typeof c.config.xaxis.tickAmount<"u"&&c.config.xaxis.tickAmount!=="dataPoints"&&c.config.xaxis.type!=="datetime"?O=this.axesUtils.checkLabelBasedOnTickamount(R,O,C):O=this.axesUtils.checkForOverflowingLabels(R,O,C,l,u);const D=()=>e&&c.config.xaxis.convertedCatToNumeric?m[c.globals.minX+R-1]:m[R];if(c.config.xaxis.labels.show){let P=n.drawText({x:O.x,y:this.offY+c.config.xaxis.labels.offsetY+N-(c.config.xaxis.position==="top"?c.globals.xAxisHeight+c.config.xaxis.axisTicks.height-2:0),text:O.text,textAnchor:"middle",fontWeight:O.isBold?600:b,fontSize:f,fontFamily:h,foreColor:Array.isArray(m)?D():m,isPlainText:!1,cssClass:(e?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+_});if(r.add(P),P.on("click",j=>{if(typeof c.config.chart.events.xAxisLabelClick=="function"){const M=Object.assign({},c,{labelIndex:R});c.config.chart.events.xAxisLabelClick(j,this.ctx,M)}}),e){let j=document.createElementNS(c.globals.SVGNS,"title");j.textContent=Array.isArray(O.text)?O.text.join(" "):O.text,P.node.appendChild(j),O.text!==""&&(l.push(O.text),u.push(O))}}R"u"?"":u[b];_=c(_,{seriesIndex:e,dataPointIndex:b,w:n});const y=this.axesUtils.getYAxisForeColor(f.style.colors,e),x=()=>Array.isArray(y)?y[b]:y;let C=0;Array.isArray(_)&&(C=_.length/2*parseInt(f.style.fontSize,10));let A=f.offsetX-15,R="end";this.yaxis.opposite&&(R="start"),n.config.yaxis[0].labels.align==="left"?(A=f.offsetX,R="start"):n.config.yaxis[0].labels.align==="center"?(A=f.offsetX,R="middle"):n.config.yaxis[0].labels.align==="right"&&(R="end");let I=r.drawText({x:A,y:l+s+f.offsetY-C,text:_,textAnchor:R,foreColor:x(),fontSize:f.style.fontSize,fontFamily:f.style.fontFamily,fontWeight:f.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-yaxis-label "+f.style.cssClass,maxWidth:f.maxWidth});o.add(I),I.on("click",N=>{if(typeof n.config.chart.events.xAxisLabelClick=="function"){const k=Object.assign({},n,{labelIndex:b});n.config.chart.events.xAxisLabelClick(N,this.ctx,k)}});let O=document.createElementNS(n.globals.SVGNS,"title");if(O.textContent=Array.isArray(_)?_.join(" "):_,I.node.appendChild(O),n.config.yaxis[e].labels.rotate!==0){let N=r.rotateAroundCenter(I.node);I.node.setAttribute("transform",`rotate(${n.config.yaxis[e].labels.rotate} 0 ${N.y})`)}l=l+s}if(n.config.yaxis[0].title.text!==void 0){let b=r.group({class:"apexcharts-yaxis-title apexcharts-xaxis-title-inversed",transform:"translate("+i+", 0)"}),_=r.drawText({x:n.config.yaxis[0].title.offsetX,y:n.globals.gridHeight/2+n.config.yaxis[0].title.offsetY,text:n.config.yaxis[0].title.text,textAnchor:"middle",foreColor:n.config.yaxis[0].title.style.color,fontSize:n.config.yaxis[0].title.style.fontSize,fontWeight:n.config.yaxis[0].title.style.fontWeight,fontFamily:n.config.yaxis[0].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+n.config.yaxis[0].title.style.cssClass});b.add(_),a.add(b)}let h=0;this.isCategoryBarHorizontal&&n.config.yaxis[0].opposite&&(h=n.globals.gridWidth);const m=n.config.xaxis.axisBorder;if(m.show){let b=r.drawLine(n.globals.padHorizontal+m.offsetX+h,1+m.offsetY,n.globals.padHorizontal+m.offsetX+h,n.globals.gridHeight+m.offsetY,m.color,0);this.elgrid&&this.elgrid.elGridBorders&&n.config.grid.show?this.elgrid.elGridBorders.add(b):a.add(b)}return n.config.yaxis[0].axisTicks.show&&this.axesUtils.drawYAxisTicks(h,u.length,n.config.yaxis[0].axisBorder,n.config.yaxis[0].axisTicks,0,s,a),a}drawXaxisTicks(e,n,r){let i=this.w,a=e;if(e<0||e-2>i.globals.gridWidth)return;let o=this.offY+i.config.xaxis.axisTicks.offsetY;if(n=n+o+i.config.xaxis.axisTicks.height,i.config.xaxis.position==="top"&&(n=o-i.config.xaxis.axisTicks.height),i.config.xaxis.axisTicks.show){let l=new at(this.ctx).drawLine(e+i.config.xaxis.axisTicks.offsetX,o+i.config.xaxis.offsetY,a+i.config.xaxis.axisTicks.offsetX,n+i.config.xaxis.offsetY,i.config.xaxis.axisTicks.color);r.add(l),l.node.classList.add("apexcharts-xaxis-tick")}}getXAxisTicksPositions(){const e=this.w;let n=[];const r=this.xaxisLabels.length;let i=e.globals.padHorizontal;if(e.globals.timescaleLabels.length>0)for(let a=0;a{n.placeTextWithEllipsis(c,c.textContent,e.globals.xAxisLabelsHeight-(e.config.legend.position==="bottom"?20:10))})}else{let s=e.globals.gridWidth/(e.globals.labels.length+1);for(let l=0;l{n.placeTextWithEllipsis(c,c.textContent,s)})}}if(a.length>0){let s=a[a.length-1].getBBox(),l=a[0].getBBox();s.x<-20&&a[a.length-1].parentNode.removeChild(a[a.length-1]),l.x+l.width>e.globals.gridWidth&&!e.globals.isBarHorizontal&&a[0].parentNode.removeChild(a[0]);for(let u=0;u0&&(this.xaxisLabels=n.globals.timescaleLabels.slice())}drawGridArea(e=null){const n=this.w,r=new at(this.ctx);e||(e=r.group({class:"apexcharts-grid"}));const i=r.drawLine(n.globals.padHorizontal,1,n.globals.padHorizontal,n.globals.gridHeight,"transparent"),a=r.drawLine(n.globals.padHorizontal,n.globals.gridHeight,n.globals.gridWidth,n.globals.gridHeight,"transparent");return e.add(a),e.add(i),e}drawGrid(){if(this.w.globals.axisCharts){const n=this.renderGrid();return this.drawGridArea(n.el),n}return null}createGridMask(){const e=this.w,n=e.globals,r=new at(this.ctx),i=Array.isArray(e.config.stroke.width)?Math.max(...e.config.stroke.width):e.config.stroke.width,a=f=>{const h=document.createElementNS(n.SVGNS,"clipPath");return h.setAttribute("id",f),h};n.dom.elGridRectMask=a(`gridRectMask${n.cuid}`),n.dom.elGridRectBarMask=a(`gridRectBarMask${n.cuid}`),n.dom.elGridRectMarkerMask=a(`gridRectMarkerMask${n.cuid}`),n.dom.elForecastMask=a(`forecastMask${n.cuid}`),n.dom.elNonForecastMask=a(`nonForecastMask${n.cuid}`);const o=["bar","rangeBar","candlestick","boxPlot"].includes(e.config.chart.type)||e.globals.comboBarCount>0;let s=0,l=0;o&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&(s=Math.max(e.config.grid.padding.left,n.barPadForNumericAxis),l=Math.max(e.config.grid.padding.right,n.barPadForNumericAxis)),n.dom.elGridRect=r.drawRect(-i/2-2,-i/2-2,n.gridWidth+i+4,n.gridHeight+i+4,0,"#fff"),n.dom.elGridRectBar=r.drawRect(-i/2-s-2,-i/2-2,n.gridWidth+i+l+s+4,n.gridHeight+i+4,0,"#fff");const u=e.globals.markers.largestSize;n.dom.elGridRectMarker=r.drawRect(Math.min(-i/2-s-2,-u),-u,n.gridWidth+Math.max(i+l+s+4,u*2),n.gridHeight+u*2,0,"#fff"),n.dom.elGridRectMask.appendChild(n.dom.elGridRect.node),n.dom.elGridRectBarMask.appendChild(n.dom.elGridRectBar.node),n.dom.elGridRectMarkerMask.appendChild(n.dom.elGridRectMarker.node);const c=n.dom.baseEl.querySelector("defs");c.appendChild(n.dom.elGridRectMask),c.appendChild(n.dom.elGridRectBarMask),c.appendChild(n.dom.elGridRectMarkerMask),c.appendChild(n.dom.elForecastMask),c.appendChild(n.dom.elNonForecastMask)}_drawGridLines({i:e,x1:n,y1:r,x2:i,y2:a,xCount:o,parent:s}){const l=this.w;if(!(e===0&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||l.config.chart.type==="radar")){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:n,y1:r,x2:i,y2:a,xCount:o,parent:s});let c=0;if(l.globals.hasXaxisGroups&&l.config.xaxis.tickPlacement==="between"){const h=l.globals.groups;if(h){let m=0;for(let b=0;m{for(let f=0;f{for(let f=0;f0&&i.config.xaxis.type!=="datetime"&&(u=a.yAxisScale[s].result.length-1)),this._drawXYLines({xCount:u,tickAmount:l})):(u=l,l=a.xTickAmount,this._drawInvertedXYLines({xCount:u,tickAmount:l})),this.drawGridBands(u,l),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:a.gridWidth/u}}drawGridBands(e,n){var r,i,a;const o=this.w,s=(l,u,c,f,h,m)=>{for(let b=0,_=0;b=o.config.grid[l].colors.length&&(_=0),this._drawGridBandRect({c:_,x1:c,y1:f,x2:h,y2:m,type:l}),f+=o.globals.gridHeight/n};if(((r=o.config.grid.row.colors)==null?void 0:r.length)>0&&s("row",n,0,0,o.globals.gridWidth,o.globals.gridHeight/n),((i=o.config.grid.column.colors)==null?void 0:i.length)>0){let l=!o.globals.isBarHorizontal&&o.config.xaxis.tickPlacement==="on"&&(o.config.xaxis.type==="category"||o.config.xaxis.convertedCatToNumeric)?e-1:e;o.globals.isXNumeric&&(l=o.globals.xAxisScale.result.length-1);let u=o.globals.padHorizontal,c=0,f=o.globals.padHorizontal+o.globals.gridWidth/l,h=o.globals.gridHeight;for(let m=0,b=0;m=o.config.grid.column.colors.length&&(b=0),o.config.xaxis.type==="datetime"&&(u=this.xaxisLabels[m].position,f=(((a=this.xaxisLabels[m+1])==null?void 0:a.position)||o.globals.gridWidth)-this.xaxisLabels[m].position),this._drawGridBandRect({c:b,x1:u,y1:c,x2:f,y2:h,type:"column"}),u+=o.globals.gridWidth/l}}}class Xhe{constructor(e){this.ctx=e,this.w=e.w,this.coreUtils=new xa(this.ctx)}niceScale(e,n,r=0){const a=this.w,o=a.globals;let s,l,u,c;o.isBarHorizontal?(s=a.config.xaxis,l=Math.max((o.svgWidth-100)/25,2)):(s=a.config.yaxis[r],l=Math.max((o.svgHeight-100)/15,2)),Ee.isNumber(l)||(l=10),u=s.min!==void 0&&s.min!==null,c=s.max!==void 0&&s.min!==null;let f=s.stepSize!==void 0&&s.stepSize!==null,h=s.tickAmount!==void 0&&s.tickAmount!==null,m=h?s.tickAmount:o.niceScaleDefaultTicks[Math.min(Math.round(l/2),o.niceScaleDefaultTicks.length-1)];if(o.isMultipleYAxis&&!h&&o.multiAxisTickAmount>0&&(m=o.multiAxisTickAmount,h=!0),m==="dataPoints"?m=o.dataPoints-1:m=Math.abs(Math.round(m)),(e===Number.MIN_VALUE&&n===0||!Ee.isNumber(e)&&!Ee.isNumber(n)||e===Number.MIN_VALUE&&n===-Number.MAX_VALUE)&&(e=Ee.isNumber(s.min)?s.min:0,n=Ee.isNumber(s.max)?s.max:e+m,o.allSeriesCollapsed=!1),e>n){console.warn("axis.min cannot be greater than axis.max: swapping min and max");let M=n;n=e,e=M}else e===n&&(e=e===0?0:e-1,n=n===0?2:n+1);let b=[];m<1&&(m=1);let _=m,y=Math.abs(n-e),x=.15;!u&&e>0&&e/y0&&el&&(e=n-C*m,e+=C*Math.floor((M-e)/C))}else if(u)if(h)n=e+C*_;else{let M=n;n=C*Math.ceil(n/C),Math.abs(n-e)/Ee.getGCD(y,C)>l&&(n=e+C*m,n+=C*Math.ceil((M-n)/C))}y=Math.abs(n-e),C=Ee.getGCD(y,C),_=Math.round(y/C)}if(!h&&!(u||c)&&(_=Math.ceil((y-1e-11)/(C+1e-11)),_>16&&Ee.getPrimeFactors(_).length<2&&_++),!h&&s.forceNiceScale&&o.yValueDecimal===0&&_>y&&(_=y,C=Math.round(y/_)),_>l&&(!(h||f)||s.forceNiceScale)){let M=Ee.getPrimeFactors(_),z=M.length-1,G=_;e:for(var N=0;Nj);return{result:b,niceMin:b[0],niceMax:b[b.length-1]}}linearScale(e,n,r=10,i=0,a=void 0){let o=Math.abs(n-e),s=[];if(e===n)return s=[e],{result:s,niceMin:s[0],niceMax:s[s.length-1]};r=this._adjustTicksForSmallRange(r,i,o),r==="dataPoints"&&(r=this.w.globals.dataPoints-1),a||(a=o/r);const l=2;if(a!==0&&isFinite(a)){const c=Math.floor(Math.log10(Math.abs(a))),f=Math.max(l,-c+l),h=Math.pow(10,f);a=Math.round((a+Number.EPSILON)*h)/h}r===Number.MAX_VALUE&&(r=5,a=1);let u=e;for(;r>=0;)s.push(u),u=Ee.preciseAddition(u,a),r-=1;return{result:s,niceMin:s[0],niceMax:s[s.length-1]}}logarithmicScaleNice(e,n,r){n<=0&&(n=Math.max(e,r)),e<=0&&(e=Math.min(n,r));const i=[],a=Math.ceil(Math.log(n)/Math.log(r)+1),o=Math.floor(Math.log(e)/Math.log(r));for(let s=o;s"u"&&(i.yAxisScale[e]=[]);let s=Math.abs(r-n);o.logarithmic&&s<=5&&(i.invalidLogScale=!0),o.logarithmic&&s>5?(i.allSeriesCollapsed=!1,i.yAxisScale[e]=o.forceNiceScale?this.logarithmicScaleNice(n,r,o.logBase):this.logarithmicScale(n,r,o.logBase)):r===-Number.MAX_VALUE||!Ee.isNumber(r)||n===Number.MAX_VALUE||!Ee.isNumber(n)?i.yAxisScale[e]=this.niceScale(Number.MIN_VALUE,0,e):(i.allSeriesCollapsed=!1,i.yAxisScale[e]=this.niceScale(n,r,e))}setXScale(e,n){const r=this.w,i=r.globals;if(n===-Number.MAX_VALUE||!Ee.isNumber(n))i.xAxisScale=this.linearScale(0,10,10);else{let a=i.xTickAmount;i.xAxisScale=this.linearScale(e,n,a,0,r.config.xaxis.max===void 0?r.config.xaxis.stepSize:void 0)}return i.xAxisScale}scaleMultipleYAxes(){const e=this.w.config,n=this.w.globals;this.coreUtils.setSeriesYAxisMappings();let r=n.seriesYAxisMap,i=n.minYArr,a=n.maxYArr;n.allSeriesCollapsed=!0,n.barGroups=[],r.forEach((o,s)=>{let l=[];if(o.forEach(u=>{var c;let f=(c=e.series[u])==null?void 0:c.group;l.indexOf(f)<0&&l.push(f)}),o.length>0){let u=Number.MAX_VALUE,c=-Number.MAX_VALUE,f=u,h=c,m,b;if(e.chart.stacked){let _=new Array(n.dataPoints).fill(0),y=[],x=[],C=[];l.forEach(()=>{y.push(_.map(()=>Number.MIN_VALUE)),x.push(_.map(()=>Number.MIN_VALUE)),C.push(_.map(()=>Number.MIN_VALUE))});for(let A=0;A{if(e.series[R].group===O)for(let k=0;k=0?x[N][k]+=D:C[N][k]+=D,y[N][k]+=D,f=Math.min(f,D),h=Math.max(h,D)}})),(m==="bar"||m==="column")&&n.barGroups.push(b)}m||(m=e.chart.type),m==="bar"||m==="column"?l.forEach((A,R)=>{u=Math.min(u,Math.min.apply(null,C[R])),c=Math.max(c,Math.max.apply(null,x[R]))}):(l.forEach((A,R)=>{f=Math.min(f,Math.min.apply(null,y[R])),h=Math.max(h,Math.max.apply(null,y[R]))}),u=f,c=h),u===Number.MIN_VALUE&&c===Number.MIN_VALUE&&(c=-Number.MAX_VALUE)}else for(let _=0;_x.indexOf(_)===y),this.setYScaleForIndex(s,u,c),o.forEach(_=>{i[_]=n.yAxisScale[s].niceMin,a[_]=n.yAxisScale[s].niceMax})}else this.setYScaleForIndex(s,0,-Number.MAX_VALUE)})}}class QL{constructor(e){this.ctx=e,this.w=e.w,this.scales=new Xhe(e)}init(){this.setYRange(),this.setXRange(),this.setZRange()}getMinYMaxY(e,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,i=null){var a,o,s,l,u;const c=this.w.config,f=this.w.globals;let h=-Number.MAX_VALUE,m=Number.MIN_VALUE;i===null&&(i=e+1);let b=f.series,_=b,y=b;c.chart.type==="candlestick"?(_=f.seriesCandleL,y=f.seriesCandleH):c.chart.type==="boxPlot"?(_=f.seriesCandleO,y=f.seriesCandleC):f.isRangeData&&(_=f.seriesRangeStart,y=f.seriesRangeEnd);let x=!1;if(f.seriesX.length>=i){let C=(a=f.brushSource)==null?void 0:a.w.config.chart.brush;(c.chart.zoom.enabled&&c.chart.zoom.autoScaleYaxis||C?.enabled&&C?.autoScaleYaxis)&&(x=!0)}for(let C=e;Ctypeof O<"u").length),f.labels.length&&c.xaxis.type!=="datetime"&&f.series.reduce((O,N)=>O+N.length,0)!==0&&(f.dataPoints=Math.max(f.dataPoints,f.labels.length));let R=0,I=b[C].length-1;if(x){if(c.xaxis.min)for(;RR&&f.seriesX[C][I]>c.xaxis.max;I--);}for(let O=R;O<=I&&O{h=Math.max(h,k.value),n=Math.min(n,k.value)}),r=h,N=Ee.noExponents(N),Ee.isFloat(N)&&(f.yValueDecimal=Math.max(f.yValueDecimal,N.toString().split(".")[1].length)),m>((l=_[C])==null?void 0:l[O])&&((u=_[C])==null?void 0:u[O])<0&&(m=_[C][O])}else f.hasNullValues=!0}(A==="bar"||A==="column")&&(m<0&&h<0&&(h=0,r=Math.max(r,0)),m===Number.MIN_VALUE&&(m=0,n=Math.min(n,0)))}return c.chart.type==="rangeBar"&&f.seriesRangeStart.length&&f.isBarHorizontal&&(m=n),c.chart.type==="bar"&&(m<0&&h<0&&(h=0),m===Number.MIN_VALUE&&(m=0)),{minY:m,maxY:h,lowestY:n,highestY:r}}setYRange(){let e=this.w.globals,n=this.w.config;e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE;let r=Number.MAX_VALUE,i;if(e.isMultipleYAxis){r=Number.MAX_VALUE;for(let a=0;a{a.max!==void 0&&(typeof a.max=="number"?e.maxYArr[o]=a.max:typeof a.max=="function"&&(e.maxYArr[o]=a.max(e.isMultipleYAxis?e.maxYArr[o]:e.maxY)),e.maxY=e.maxYArr[o]),a.min!==void 0&&(typeof a.min=="number"?e.minYArr[o]=a.min:typeof a.min=="function"&&(e.minYArr[o]=a.min(e.isMultipleYAxis?e.minYArr[o]===Number.MIN_VALUE?0:e.minYArr[o]:e.minY)),e.minY=e.minYArr[o])}),e.isBarHorizontal&&["min","max"].forEach(o=>{n.xaxis[o]!==void 0&&typeof n.xaxis[o]=="number"&&(o==="min"?e.minY=n.xaxis[o]:e.maxY=n.xaxis[o])}),e.isMultipleYAxis?(this.scales.scaleMultipleYAxes(),e.minY=r):(this.scales.setYScaleForIndex(0,e.minY,e.maxY),e.minY=e.yAxisScale[0].niceMin,e.maxY=e.yAxisScale[0].niceMax,e.minYArr[0]=e.minY,e.maxYArr[0]=e.maxY),e.barGroups=[],e.lineGroups=[],e.areaGroups=[],n.series.forEach(a=>{switch(a.type||n.chart.type){case"bar":case"column":e.barGroups.push(a.group);break;case"line":e.lineGroups.push(a.group);break;case"area":e.areaGroups.push(a.group);break}}),e.barGroups=e.barGroups.filter((a,o,s)=>s.indexOf(a)===o),e.lineGroups=e.lineGroups.filter((a,o,s)=>s.indexOf(a)===o),e.areaGroups=e.areaGroups.filter((a,o,s)=>s.indexOf(a)===o),{minY:e.minY,maxY:e.maxY,minYArr:e.minYArr,maxYArr:e.maxYArr,yAxisScale:e.yAxisScale}}setXRange(){let e=this.w.globals,n=this.w.config;const r=n.xaxis.type==="numeric"||n.xaxis.type==="datetime"||n.xaxis.type==="category"&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric,i=()=>{for(let a=0;ae.dataPoints&&e.dataPoints!==0&&(a=e.dataPoints-1);else if(n.xaxis.tickAmount==="dataPoints"){if(e.series.length>1&&(a=e.series[e.maxValsInArrayIndex].length-1),e.isXNumeric){const o=Math.round(e.maxX-e.minX);o<30&&(a=o)}}else a=n.xaxis.tickAmount;if(e.xTickAmount=a,n.xaxis.max!==void 0&&typeof n.xaxis.max=="number"&&(e.maxX=n.xaxis.max),n.xaxis.min!==void 0&&typeof n.xaxis.min=="number"&&(e.minX=n.xaxis.min),n.xaxis.range!==void 0&&(e.minX=e.maxX-n.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE)if(n.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric){let o=[];for(let s=e.minX-1;s0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,a-1,0,n.xaxis.stepSize),e.seriesX=e.labels.slice());r&&(e.labels=e.xAxisScale.result.slice())}return e.isBarHorizontal&&e.labels.length&&(e.xTickAmount=e.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:e.minX,maxX:e.maxX}}setZRange(){let e=this.w.globals;if(e.isDataXYZ){for(let n=0;n{if(n.length){n.length===1&&n.push(e.seriesX[e.maxValsInArrayIndex][e.seriesX[e.maxValsInArrayIndex].length-1]);const r=n.slice();r.sort((i,a)=>i-a),r.forEach((i,a)=>{if(a>0){let o=i-r[a-1];o>0&&(e.minXDiff=Math.min(o,e.minXDiff))}}),(e.dataPoints===1||e.minXDiff===Number.MAX_VALUE)&&(e.minXDiff=.5)}})}_setStackedMinMax(){const e=this.w.globals;if(!e.series.length)return;let n=e.seriesGroups;n.length||(n=[this.w.globals.seriesNames.map(a=>a)]);let r={},i={};n.forEach(a=>{r[a]=[],i[a]=[],this.w.config.series.map((s,l)=>a.indexOf(e.seriesNames[l])>-1?l:null).filter(s=>s!==null).forEach(s=>{var l,u,c,f;for(let h=0;h"u"&&(r[a][h]=0,i[a][h]=0),(this.w.config.chart.stacked&&!e.comboCharts||this.w.config.chart.stacked&&e.comboCharts&&(!this.w.config.chart.stackOnlyBar||((u=(l=this.w.config.series)==null?void 0:l[s])==null?void 0:u.type)==="bar"||((f=(c=this.w.config.series)==null?void 0:c[s])==null?void 0:f.type)==="column"))&&e.series[s][h]!==null&&Ee.isNumber(e.series[s][h])&&(e.series[s][h]>0?r[a][h]+=parseFloat(e.series[s][h])+1e-4:i[a][h]+=parseFloat(e.series[s][h]))})}),Object.entries(r).forEach(([a])=>{r[a].forEach((o,s)=>{e.maxY=Math.max(e.maxY,r[a][s]),e.minY=Math.min(e.minY,i[a][s])})})}}class BF{constructor(e,n){this.ctx=e,this.elgrid=n,this.w=e.w;const r=this.w;this.xaxisFontSize=r.config.xaxis.labels.style.fontSize,this.axisFontFamily=r.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=r.config.xaxis.labels.style.colors,this.isCategoryBarHorizontal=r.config.chart.type==="bar"&&r.config.plotOptions.bar.horizontal,this.xAxisoffX=r.config.xaxis.position==="bottom"?r.globals.gridHeight:0,this.drawnLabels=[],this.axesUtils=new gh(e)}drawYaxis(e){const n=this.w,r=new at(this.ctx),i=n.config.yaxis[e].labels.style,{fontSize:a,fontFamily:o,fontWeight:s}=i,l=r.group({class:"apexcharts-yaxis",rel:e,transform:`translate(${n.globals.translateYAxisX[e]}, 0)`});if(this.axesUtils.isYAxisHidden(e))return l;const u=r.group({class:"apexcharts-yaxis-texts-g"});l.add(u);const c=n.globals.yAxisScale[e].result.length-1,f=n.globals.gridHeight/c,h=n.globals.yLabelFormatters[e];let m=this.axesUtils.checkForReversedLabels(e,n.globals.yAxisScale[e].result.slice());if(n.config.yaxis[e].labels.show){let b=n.globals.translateY+n.config.yaxis[e].labels.offsetY;n.globals.isBarHorizontal?b=0:n.config.chart.type==="heatmap"&&(b-=f/2),b+=parseInt(a,10)/3;let _=null;for(let y=c;y>=0;y--){let x=h(m[y],y,n),C=n.config.yaxis[e].labels.padding;n.config.yaxis[e].opposite&&n.config.yaxis.length!==0&&(C*=-1);const A=this.getTextAnchor(n.config.yaxis[e].labels.align,n.config.yaxis[e].opposite),R=this.axesUtils.getYAxisForeColor(i.colors,e),I=Array.isArray(R)?R[y]:R,O=Ee.listToArray(n.globals.dom.baseEl.querySelectorAll(`.apexcharts-yaxis[rel='${e}'] .apexcharts-yaxis-label tspan`)).map(k=>k.textContent),N=r.drawText({x:C,y:b,text:O.includes(x)&&!n.config.yaxis[e].labels.showDuplicates?"":x,textAnchor:A,fontSize:a,fontFamily:o,fontWeight:s,maxWidth:n.config.yaxis[e].labels.maxWidth,foreColor:I,isPlainText:!1,cssClass:`apexcharts-yaxis-label ${i.cssClass}`});u.add(N),this.addTooltip(N,x),_===null&&(_=N),n.config.yaxis[e].labels.rotate!==0&&this.rotateLabel(r,N,_,n.config.yaxis[e].labels.rotate),b+=f}}return this.addYAxisTitle(r,l,e),this.addAxisBorder(r,l,e,c,f),l}getTextAnchor(e,n){return e==="left"?"start":e==="center"?"middle":e==="right"?"end":n?"start":"end"}addTooltip(e,n){const r=document.createElementNS(this.w.globals.SVGNS,"title");r.textContent=Array.isArray(n)?n.join(" "):n,e.node.appendChild(r)}rotateLabel(e,n,r,i){const a=e.rotateAroundCenter(r.node),o=e.rotateAroundCenter(n.node);n.node.setAttribute("transform",`rotate(${i} ${a.x} ${o.y})`)}addYAxisTitle(e,n,r){const i=this.w;if(i.config.yaxis[r].title.text!==void 0){const a=e.group({class:"apexcharts-yaxis-title"}),o=i.config.yaxis[r].opposite?i.globals.translateYAxisX[r]:0,s=e.drawText({x:o,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[r].title.offsetY,text:i.config.yaxis[r].title.text,textAnchor:"end",foreColor:i.config.yaxis[r].title.style.color,fontSize:i.config.yaxis[r].title.style.fontSize,fontWeight:i.config.yaxis[r].title.style.fontWeight,fontFamily:i.config.yaxis[r].title.style.fontFamily,cssClass:`apexcharts-yaxis-title-text ${i.config.yaxis[r].title.style.cssClass}`});a.add(s),n.add(a)}}addAxisBorder(e,n,r,i,a){const o=this.w,s=o.config.yaxis[r].axisBorder;let l=31+s.offsetX;if(o.config.yaxis[r].opposite&&(l=-31-s.offsetX),s.show){const u=e.drawLine(l,o.globals.translateY+s.offsetY-2,l,o.globals.gridHeight+o.globals.translateY+s.offsetY+2,s.color,0,s.width);n.add(u)}o.config.yaxis[r].axisTicks.show&&this.axesUtils.drawYAxisTicks(l,i,s,o.config.yaxis[r].axisTicks,r,a,n)}drawYaxisInversed(e){const n=this.w,r=new at(this.ctx),i=r.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),a=r.group({class:"apexcharts-xaxis-texts-g",transform:`translate(${n.globals.translateXAxisX}, ${n.globals.translateXAxisY})`});i.add(a);let o=n.globals.yAxisScale[e].result.length-1;const s=n.globals.gridWidth/o+.1;let l=s+n.config.xaxis.labels.offsetX;const u=n.globals.xLabelFormatter;let c=this.axesUtils.checkForReversedLabels(e,n.globals.yAxisScale[e].result.slice());const f=n.globals.timescaleLabels;if(f.length>0&&(this.xaxisLabels=f.slice(),c=f.slice(),o=c.length),n.config.xaxis.labels.show)for(let h=f.length?0:o;f.length?h=0;f.length?h++:h--){let m=u(c[h],h,n),b=n.globals.gridWidth+n.globals.padHorizontal-(l-s+n.config.xaxis.labels.offsetX);if(f.length){const y=this.axesUtils.getLabel(c,f,b,h,this.drawnLabels,this.xaxisFontSize);b=y.x,m=y.text,this.drawnLabels.push(y.text),h===0&&n.globals.skipFirstTimelinelabel&&(m=""),h===c.length-1&&n.globals.skipLastTimelinelabel&&(m="")}const _=r.drawText({x:b,y:this.xAxisoffX+n.config.xaxis.labels.offsetY+30-(n.config.xaxis.position==="top"?n.globals.xAxisHeight+n.config.xaxis.axisTicks.height-2:0),text:m,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[e]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:n.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:`apexcharts-xaxis-label ${n.config.xaxis.labels.style.cssClass}`});a.add(_),this.addTooltip(_,m),l+=s}return this.inversedYAxisTitleText(i),this.inversedYAxisBorder(i),i}inversedYAxisBorder(e){const n=this.w,r=new at(this.ctx),i=n.config.xaxis.axisBorder;if(i.show){let a=0;n.config.chart.type==="bar"&&n.globals.isXNumeric&&(a-=15);const o=r.drawLine(n.globals.padHorizontal+a+i.offsetX,this.xAxisoffX,n.globals.gridWidth,this.xAxisoffX,i.color,0,i.height);this.elgrid&&this.elgrid.elGridBorders&&n.config.grid.show?this.elgrid.elGridBorders.add(o):e.add(o)}}inversedYAxisTitleText(e){const n=this.w,r=new at(this.ctx);if(n.config.xaxis.title.text!==void 0){const i=r.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),a=r.drawText({x:n.globals.gridWidth/2+n.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(n.config.xaxis.title.style.fontSize)+n.config.xaxis.title.offsetY+20,text:n.config.xaxis.title.text,textAnchor:"middle",fontSize:n.config.xaxis.title.style.fontSize,fontFamily:n.config.xaxis.title.style.fontFamily,fontWeight:n.config.xaxis.title.style.fontWeight,foreColor:n.config.xaxis.title.style.color,cssClass:`apexcharts-xaxis-title-text ${n.config.xaxis.title.style.cssClass}`});i.add(a),e.add(i)}}yAxisTitleRotate(e,n){const r=this.w,i=new at(this.ctx),a=r.globals.dom.baseEl.querySelector(`.apexcharts-yaxis[rel='${e}'] .apexcharts-yaxis-texts-g`),o=a?a.getBoundingClientRect():{width:0,height:0},s=r.globals.dom.baseEl.querySelector(`.apexcharts-yaxis[rel='${e}'] .apexcharts-yaxis-title text`),l=s?s.getBoundingClientRect():{width:0,height:0};if(s){const u=this.xPaddingForYAxisTitle(e,o,l,n);s.setAttribute("x",u.xPos-(n?10:0));const c=i.rotateAroundCenter(s);s.setAttribute("transform",`rotate(${n?r.config.yaxis[e].title.rotate*-1:r.config.yaxis[e].title.rotate} ${c.x} ${c.y})`)}}xPaddingForYAxisTitle(e,n,r,i){const a=this.w;let o=0,s=10;return a.config.yaxis[e].title.text===void 0||e<0?{xPos:o,padd:0}:(i?o=n.width+a.config.yaxis[e].title.offsetX+r.width/2+s/2:(o=n.width*-1+a.config.yaxis[e].title.offsetX+s/2+r.width/2,a.globals.isBarHorizontal&&(s=25,o=n.width*-1-a.config.yaxis[e].title.offsetX-s)),{xPos:o,padd:s})}setYAxisXPosition(e,n){const r=this.w;let i=0,a=0,o=18,s=1;r.config.yaxis.length>1&&(this.multipleYs=!0),r.config.yaxis.forEach((l,u)=>{const c=r.globals.ignoreYAxisIndexes.includes(u)||!l.show||l.floating||e[u].width===0,f=e[u].width+n[u].width;l.opposite?r.globals.isBarHorizontal?(a=r.globals.gridWidth+r.globals.translateX-1,r.globals.translateYAxisX[u]=a-l.labels.offsetX):(a=r.globals.gridWidth+r.globals.translateX+s,c||(s+=f+20),r.globals.translateYAxisX[u]=a-l.labels.offsetX+20):(i=r.globals.translateX-o,c||(o+=f+20),r.globals.translateYAxisX[u]=i+l.labels.offsetX)})}setYAxisTextAlignments(){const e=this.w;Ee.listToArray(e.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis")).forEach((r,i)=>{const a=e.config.yaxis[i];if(a&&!a.floating&&a.labels.align!==void 0){const o=e.globals.dom.baseEl.querySelector(`.apexcharts-yaxis[rel='${i}'] .apexcharts-yaxis-texts-g`),s=Ee.listToArray(e.globals.dom.baseEl.querySelectorAll(`.apexcharts-yaxis[rel='${i}'] .apexcharts-yaxis-label`)),l=o.getBoundingClientRect();s.forEach(u=>{u.setAttribute("text-anchor",a.labels.align)}),a.labels.align==="left"&&!a.opposite?o.setAttribute("transform",`translate(-${l.width}, 0)`):a.labels.align==="center"?o.setAttribute("transform",`translate(${l.width/2*(a.opposite?1:-1)}, 0)`):a.labels.align==="right"&&a.opposite&&o.setAttribute("transform",`translate(${l.width}, 0)`)}})}}class w1t{constructor(e){this.ctx=e,this.w=e.w,this.documentEvent=Ee.bind(this.documentEvent,this)}addEventListener(e,n){const r=this.w;Object.prototype.hasOwnProperty.call(r.globals.events,e)?r.globals.events[e].push(n):r.globals.events[e]=[n]}removeEventListener(e,n){const r=this.w;if(!Object.prototype.hasOwnProperty.call(r.globals.events,e))return;let i=r.globals.events[e].indexOf(n);i!==-1&&r.globals.events[e].splice(i,1)}fireEvent(e,n){const r=this.w;if(!Object.prototype.hasOwnProperty.call(r.globals.events,e))return;(!n||!n.length)&&(n=[]);let i=r.globals.events[e],a=i.length;for(let o=0;o{r.addEventListener(i,a=>{let o=a.target.getAttribute("i")===null&&e.globals.capturedSeriesIndex!==-1?e.globals.capturedSeriesIndex:a.target.getAttribute("i"),s=a.target.getAttribute("j")===null&&e.globals.capturedDataPointIndex!==-1?e.globals.capturedDataPointIndex:a.target.getAttribute("j");const l=Object.assign({},e,{seriesIndex:e.globals.axisCharts?o:0,dataPointIndex:s});a.type==="keydown"?e.config.chart.accessibility.enabled&&e.config.chart.accessibility.keyboard.enabled&&(typeof e.config.chart.events.keyDown=="function"&&e.config.chart.events.keyDown(a,n,l),n.ctx.events.fireEvent("keydown",[a,n,l])):a.type==="keyup"?e.config.chart.accessibility.enabled&&e.config.chart.accessibility.keyboard.enabled&&(typeof e.config.chart.events.keyUp=="function"&&e.config.chart.events.keyUp(a,n,l),n.ctx.events.fireEvent("keyup",[a,n,l])):a.type==="mousemove"||a.type==="touchmove"?typeof e.config.chart.events.mouseMove=="function"&&e.config.chart.events.mouseMove(a,n,l):a.type==="mouseleave"||a.type==="touchleave"?typeof e.config.chart.events.mouseLeave=="function"&&e.config.chart.events.mouseLeave(a,n,l):(a.type==="mouseup"&&a.which===1||a.type==="touchend")&&(typeof e.config.chart.events.click=="function"&&e.config.chart.events.click(a,n,l),n.ctx.events.fireEvent("click",[a,n,l]))},{capture:!1,passive:!0})}),this.ctx.eventList.forEach(i=>{e.globals.dom.baseEl.addEventListener(i,this.documentEvent,{passive:!0})}),this.ctx.core.setupBrushHandler()}documentEvent(e){const n=this.w,r=e.target.className;if(e.type==="click"){let i=n.globals.dom.baseEl.querySelector(".apexcharts-menu");i&&i.classList.contains("apexcharts-menu-open")&&r!=="apexcharts-menu-icon"&&i.classList.remove("apexcharts-menu-open")}n.globals.clientX=e.type==="touchmove"?e.touches[0].clientX:e.clientX,n.globals.clientY=e.type==="touchmove"?e.touches[0].clientY:e.clientY}}class T1t{constructor(e){this.ctx=e,this.w=e.w}setCurrentLocaleValues(e){let n=this.w.config.chart.locales;window.Apex.chart&&window.Apex.chart.locales&&window.Apex.chart.locales.length>0&&(n=this.w.config.chart.locales.concat(window.Apex.chart.locales));const r=n.filter(i=>i.name===e)[0];if(r){let i=Ee.extend(Vhe,r);this.w.globals.locale=i.options}else throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options")}}class A1t{constructor(e){this.ctx=e,this.w=e.w}drawAxis(e,n){let r=this.w.globals,i=this.w.config,a=new tS(this.ctx,n),o=new BF(this.ctx,n);if(r.axisCharts&&e!=="radar"){let s,l;r.isBarHorizontal?(l=o.drawYaxisInversed(0),s=a.drawXaxisInversed(0),r.dom.elGraphical.add(s),r.dom.elGraphical.add(l)):(s=a.drawXaxis(),r.dom.elGraphical.add(s),i.yaxis.map((u,c)=>{if(r.ignoreYAxisIndexes.indexOf(c)===-1&&(l=o.drawYaxis(c),r.dom.Paper.add(l),this.w.config.grid.position==="back")){const f=r.dom.Paper.children()[1];f.remove(),r.dom.Paper.add(f)}}))}}}class ZL{constructor(e){this.ctx=e,this.w=e.w}drawXCrosshairs(){const e=this.w;let n=new at(this.ctx),r=new Io(this.ctx),i=e.config.xaxis.crosshairs.fill.gradient,a=e.config.xaxis.crosshairs.dropShadow,o=e.config.xaxis.crosshairs.fill.type,s=i.colorFrom,l=i.colorTo,u=i.opacityFrom,c=i.opacityTo,f=i.stops,h="none",m=a.enabled,b=a.left,_=a.top,y=a.blur,x=a.color,C=a.opacity,A=e.config.xaxis.crosshairs.fill.color;if(e.config.xaxis.crosshairs.show){o==="gradient"&&(A=n.drawGradient("vertical",s,l,u,c,null,f,null));let R=n.drawRect();e.config.xaxis.crosshairs.width===1&&(R=n.drawLine());let I=e.globals.gridHeight;(!Ee.isNumber(I)||I<0)&&(I=0);let O=e.config.xaxis.crosshairs.width;(!Ee.isNumber(O)||O<0)&&(O=0),R.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:I,width:O,height:I,fill:A,filter:h,"fill-opacity":e.config.xaxis.crosshairs.opacity,stroke:e.config.xaxis.crosshairs.stroke.color,"stroke-width":e.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":e.config.xaxis.crosshairs.stroke.dashArray}),m&&(R=r.dropShadow(R,{left:b,top:_,blur:y,color:x,opacity:C})),e.globals.dom.elGraphical.add(R)}}drawYCrosshairs(){const e=this.w;let n=new at(this.ctx),r=e.config.yaxis[0].crosshairs;const i=e.globals.barPadForNumericAxis;if(e.config.yaxis[0].crosshairs.show){let o=n.drawLine(-i,0,e.globals.gridWidth+i,0,r.stroke.color,r.stroke.dashArray,r.stroke.width);o.attr({class:"apexcharts-ycrosshairs"}),e.globals.dom.elGraphical.add(o)}let a=n.drawLine(-i,0,e.globals.gridWidth+i,0,r.stroke.color,0,0);a.attr({class:"apexcharts-ycrosshairs-hidden"}),e.globals.dom.elGraphical.add(a)}}class R1t{constructor(e){this.ctx=e,this.w=e.w}checkResponsiveConfig(e){const n=this.w,r=n.config;if(r.responsive.length===0)return;let i=r.responsive.slice();i.sort((s,l)=>s.breakpoint>l.breakpoint?1:l.breakpoint>s.breakpoint?-1:0).reverse();let a=new eS({});const o=(s={})=>{let l=i[0].breakpoint;const u=window.innerWidth>0?window.innerWidth:screen.width;if(u>l){let c=Ee.clone(n.globals.initialConfig);c.series=Ee.clone(n.config.series);let f=xa.extendArrayProps(a,c,n);s=Ee.extend(f,s),s=Ee.extend(n.config,s),this.overrideResponsiveOptions(s)}else for(let c=0;c0&&typeof e[0]=="function"?(this.isColorFn=!0,n.config.series.map((r,i)=>{let a=e[i]||e[0];return typeof a=="function"?a({value:n.globals.axisCharts?n.globals.series[i][0]||0:n.globals.series[i],seriesIndex:i,dataPointIndex:i,w:this.w}):a})):e}applySeriesColors(e,n){e.forEach((r,i)=>{r&&(n[i]=r)})}getMonochromeColors(e,n,r){const{color:i,shadeIntensity:a,shadeTo:o}=e,s=this.isBarDistributed||this.isHeatmapDistributed?n[0].length*n.length:n.length,l=1/(s/a);let u=0;return Array.from({length:s},()=>{const c=o==="dark"?r.shadeColor(u*-1,i):r.shadeColor(u,i);return u+=l,c})}applyColorTypes(e,n){const r=this.w;e.forEach(i=>{r.globals[i].colors=r.config[i].colors===void 0?this.isColorFn?r.config.colors:n:r.config[i].colors.slice(),this.pushExtraColors(r.globals[i].colors)})}applyDataLabelsColors(e){const n=this.w;n.globals.dataLabels.style.colors=n.config.dataLabels.style.colors===void 0?e:n.config.dataLabels.style.colors.slice(),this.pushExtraColors(n.globals.dataLabels.style.colors,50)}applyRadarPolygonsColors(){const e=this.w;e.globals.radarPolygons.fill.colors=e.config.plotOptions.radar.polygons.fill.colors===void 0?[e.config.theme.mode==="dark"?"#343A3F":"none"]:e.config.plotOptions.radar.polygons.fill.colors.slice(),this.pushExtraColors(e.globals.radarPolygons.fill.colors,20)}applyMarkersColors(e){const n=this.w;n.globals.markers.colors=n.config.markers.colors===void 0?e:n.config.markers.colors.slice(),this.pushExtraColors(n.globals.markers.colors)}pushExtraColors(e,n,r=null){const i=this.w;let a=n||i.globals.series.length;if(r===null&&(r=this.isBarDistributed||this.isHeatmapDistributed||i.config.chart.type==="heatmap"&&i.config.plotOptions.heatmap&&i.config.plotOptions.heatmap.colorScale.inverse),r&&i.globals.series.length&&(a=i.globals.series[i.globals.maxValsInArrayIndex].length*i.globals.series.length),e.lengthe.globals.svgWidth&&(this.dCtx.lgRect.width=e.globals.svgWidth/1.5),this.dCtx.lgRect}getDatalabelsRect(){let e=this.w,n=[];e.config.series.forEach((s,l)=>{s.data.forEach((u,c)=>{const h=(m=>e.config.dataLabels.formatter(m,{ctx:this.dCtx.ctx,seriesIndex:l,dataPointIndex:c,w:e}))(e.globals.series[l][c]);n.push(h)})});let r=Ee.getLargestStringFromArr(n),i=new at(this.dCtx.ctx);const a=e.config.dataLabels.style;let o=i.getTextRects(r,parseInt(a.fontSize),a.fontFamily);return{width:o.width*1.05,height:o.height}}getLargestStringFromMultiArr(e,n){const r=this.w;let i=e;if(r.globals.isMultiLineX){let a=n.map(l=>Array.isArray(l)?l.length:1),o=Math.max(...a),s=a.indexOf(o);i=n[s]}return i}};class M1t{constructor(e){this.w=e.w,this.dCtx=e}getxAxisLabelsCoords(){let e=this.w,n=e.globals.labels.slice();e.config.xaxis.convertedCatToNumeric&&n.length===0&&(n=e.globals.categoryLabels);let r;if(e.globals.timescaleLabels.length>0){const i=this.getxAxisTimeScaleLabelsCoords();r={width:i.width,height:i.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends=(e.config.legend.position==="left"||e.config.legend.position==="right")&&!e.config.legend.floating?this.dCtx.lgRect.width:0;let i=e.globals.xLabelFormatter,a=Ee.getLargestStringFromArr(n),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(a,n);e.globals.isBarHorizontal&&(a=e.globals.yAxisScale[0].result.reduce((h,m)=>h.length>m.length?h:m,0),o=a);let s=new cx(this.dCtx.ctx),l=a;a=s.xLabelFormat(i,a,l,{i:void 0,dateFormatter:new Ao(this.dCtx.ctx).formatDate,w:e}),o=s.xLabelFormat(i,o,l,{i:void 0,dateFormatter:new Ao(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&typeof a>"u"||String(a).trim()==="")&&(a="1",o=a);let u=new at(this.dCtx.ctx),c=u.getTextRects(a,e.config.xaxis.labels.style.fontSize),f=c;if(a!==o&&(f=u.getTextRects(o,e.config.xaxis.labels.style.fontSize)),r={width:c.width>=f.width?c.width:f.width,height:c.height>=f.height?c.height:f.height},r.width*n.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&e.config.xaxis.labels.rotate!==0||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;const h=m=>u.getTextRects(m,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,`rotate(${e.config.xaxis.labels.rotate} 0 0)`,!1);c=h(a),a!==o&&(f=h(o)),r.height=(c.height>f.height?c.height:f.height)/1.5,r.width=c.width>f.width?c.width:f.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(r={width:0,height:0}),{width:r.width,height:r.height}}getxAxisGroupLabelsCoords(){var e;let n=this.w;if(!n.globals.hasXaxisGroups)return{width:0,height:0};const r=((e=n.config.xaxis.group.style)==null?void 0:e.fontSize)||n.config.xaxis.labels.style.fontSize;let i=n.globals.groups.map(f=>f.title),a,o=Ee.getLargestStringFromArr(i),s=this.dCtx.dimHelpers.getLargestStringFromMultiArr(o,i),l=new at(this.dCtx.ctx),u=l.getTextRects(o,r),c=u;return o!==s&&(c=l.getTextRects(s,r)),a={width:u.width>=c.width?u.width:c.width,height:u.height>=c.height?u.height:c.height},n.config.xaxis.labels.show||(a={width:0,height:0}),{width:a.width,height:a.height}}getxAxisTitleCoords(){let e=this.w,n=0,r=0;if(e.config.xaxis.title.text!==void 0){let a=new at(this.dCtx.ctx).getTextRects(e.config.xaxis.title.text,e.config.xaxis.title.style.fontSize);n=a.width,r=a.height}return{width:n,height:r}}getxAxisTimeScaleLabelsCoords(){let e=this.w,n;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();let r=this.dCtx.timescaleLabels.map(s=>s.value),i=r.reduce((s,l)=>typeof s>"u"?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):s.length>l.length?s:l,0);return n=new at(this.dCtx.ctx).getTextRects(i,e.config.xaxis.labels.style.fontSize),n.width*1.05*r.length>e.globals.gridWidth&&e.config.xaxis.labels.rotate!==0&&(e.globals.overlappingXLabels=!0),n}additionalPaddingXLabels(e){const n=this.w,r=n.globals,i=n.config,a=i.xaxis.type;let o=e.width;r.skipLastTimelinelabel=!1,r.skipFirstTimelinelabel=!1;const s=n.config.yaxis[0].opposite&&n.globals.isBarHorizontal,l=f=>r.collapsedSeriesIndices.indexOf(f)!==-1,u=f=>{if(this.dCtx.timescaleLabels&&this.dCtx.timescaleLabels.length){const h=this.dCtx.timescaleLabels[0],b=this.dCtx.timescaleLabels[this.dCtx.timescaleLabels.length-1].position+o/1.75-this.dCtx.yAxisWidthRight,_=h.position-o/1.75+this.dCtx.yAxisWidthLeft;let y=n.config.legend.position==="right"&&this.dCtx.lgRect.width>0?this.dCtx.lgRect.width:0;b>r.svgWidth-r.translateX-y&&(r.skipLastTimelinelabel=!0),_<-((!f.show||f.floating)&&(i.chart.type==="bar"||i.chart.type==="candlestick"||i.chart.type==="rangeBar"||i.chart.type==="boxPlot")?o/1.75:10)&&(r.skipFirstTimelinelabel=!0)}else a==="datetime"?this.dCtx.gridPad.right{i.yaxis.length>1&&l(h)||u(f)};i.yaxis.forEach((f,h)=>{s?(this.dCtx.gridPad.left{const u={seriesIndex:l,dataPointIndex:-1,w:e},c=e.globals.yAxisScale[l];let f=0;if(!o.isYAxisHidden(l)&&s.labels.show&&s.labels.minWidth!==void 0&&(f=s.labels.minWidth),!o.isYAxisHidden(l)&&s.labels.show&&c.result.length){let h=e.globals.yLabelFormatters[l],m=c.niceMin===Number.MIN_VALUE?0:c.niceMin,b=c.result.reduce((R,I)=>{var O,N;return((O=String(h(R,u)))==null?void 0:O.length)>((N=String(h(I,u)))==null?void 0:N.length)?R:I},m);b=h(b,u);let _=b;if((typeof b>"u"||b.length===0)&&(b=c.niceMax),String(b).length===1&&(b=b+".0",_=b),e.globals.isBarHorizontal){a=0;let R=e.globals.labels.slice();b=Ee.getLargestStringFromArr(R),b=h(b,{seriesIndex:l,dataPointIndex:-1,w:e}),_=this.dCtx.dimHelpers.getLargestStringFromMultiArr(b,R)}let y=new at(this.dCtx.ctx),x="rotate(".concat(s.labels.rotate," 0 0)"),C=y.getTextRects(b,s.labels.style.fontSize,s.labels.style.fontFamily,x,!1),A=C;b!==_&&(A=y.getTextRects(_,s.labels.style.fontSize,s.labels.style.fontFamily,x,!1)),i.push({width:(f>A.width||f>C.width?f:A.width>C.width?A.width:C.width)+a,height:A.height>C.height?A.height:C.height})}else i.push({width:n,height:r})}),i}getyAxisTitleCoords(){let e=this.w,n=[];return e.config.yaxis.map(r=>{if(r.show&&r.title.text!==void 0){let i=new at(this.dCtx.ctx),a="rotate(".concat(r.title.rotate," 0 0)"),o=i.getTextRects(r.title.text,r.title.style.fontSize,r.title.style.fontFamily,a,!1);n.push({width:o.width,height:o.height})}else n.push({width:0,height:0})}),n}getTotalYAxisWidth(){let e=this.w,n=0,r=0,i=0,a=e.globals.yAxisScale.length>1?10:0;const o=new gh(this.dCtx.ctx),s=function(u){return e.globals.ignoreYAxisIndexes.indexOf(u)>-1},l=(u,c)=>{let f=e.config.yaxis[c].floating,h=0;u.width>0&&!f?(h=u.width+a,s(c)&&(h=h-u.width-a)):h=f||o.isYAxisHidden(c)?0:5,e.config.yaxis[c].opposite?i=i+h:r=r+h,n=n+h};return e.globals.yLabelsCoords.map((u,c)=>{l(u,c)}),e.globals.yTitleCoords.map((u,c)=>{l(u,c)}),e.globals.isBarHorizontal&&!e.config.yaxis[0].floating&&(n=e.globals.yLabelsCoords[0].width+e.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=r,this.dCtx.yAxisWidthRight=i,n}}class P1t{constructor(e){this.w=e.w,this.dCtx=e}gridPadForColumnsInNumericAxis(e){const{w:n}=this,{config:r,globals:i}=n;if(i.noData||i.collapsedSeries.length+i.ancillaryCollapsedSeries.length===r.series.length)return 0;const a=f=>["bar","rangeBar","candlestick","boxPlot"].includes(f),o=r.chart.type;let s=0,l=a(o)?r.series.length:1;i.comboBarCount>0&&(l=i.comboBarCount),i.collapsedSeries.forEach(f=>{a(f.type)&&(l-=1)}),r.chart.stacked&&(l=1);const u=a(o)||i.comboBarCount>0;let c=Math.abs(i.initialMaxX-i.initialMinX);if(u&&i.isXNumeric&&!i.isBarHorizontal&&l>0&&c!==0){c<=3&&(c=i.dataPoints);const f=c/e;let h=i.minXDiff&&i.minXDiff/f>0?i.minXDiff/f:0;h>e/2&&(h/=2),s=h*parseInt(r.plotOptions.bar.columnWidth,10)/100,s<1&&(s=1),i.barPadForNumericAxis=s}return s}gridPadFortitleSubtitle(){const{w:e}=this,{globals:n}=e;let r=this.dCtx.isSparkline||!n.axisCharts?0:10;["title","subtitle"].forEach(s=>{e.config[s].text!==void 0?r+=e.config[s].margin:r+=this.dCtx.isSparkline||!n.axisCharts?0:5}),e.config.legend.show&&e.config.legend.position==="bottom"&&!e.config.legend.floating&&!n.axisCharts&&(r+=10);const a=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),o=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");n.gridHeight-=a.height+o.height+r,n.translateY+=a.height+o.height+r}setGridXPosForDualYAxis(e,n){const{w:r}=this,i=new gh(this.dCtx.ctx);r.config.yaxis.forEach((a,o)=>{r.globals.ignoreYAxisIndexes.indexOf(o)===-1&&!a.floating&&!i.isYAxisHidden(o)&&(a.opposite&&(r.globals.translateX-=n[o].width+e[o].width+parseInt(a.labels.style.fontSize,10)/1.2+12),r.globals.translateX<2&&(r.globals.translateX=2))})}}class ST{constructor(e){this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new N1t(this),this.dimYAxis=new D1t(this),this.dimXAxis=new M1t(this),this.dimGrid=new P1t(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}plotCoords(){let e=this.w,n=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.datalabelsCoords={width:0,height:0};const r=Array.isArray(e.config.stroke.width)?Math.max(...e.config.stroke.width):e.config.stroke.width;this.isSparkline&&((e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach(([a,o])=>{this.gridPad[a]=Math.max(o,this.w.globals.markers.largestSize/1.5)}),this.gridPad.top=Math.max(r/2,this.gridPad.top),this.gridPad.bottom=Math.max(r/2,this.gridPad.bottom)),n.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),n.gridHeight=n.gridHeight-this.gridPad.top-this.gridPad.bottom,n.gridWidth=n.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;let i=this.dimGrid.gridPadForColumnsInNumericAxis(n.gridWidth);n.gridWidth=n.gridWidth-i*2,n.translateX=n.translateX+this.gridPad.left+this.xPadLeft+(i>0?i:0),n.translateY=n.translateY+this.gridPad.top}setDimensionsForAxisCharts(){let e=this.w,n=e.globals,r=this.dimYAxis.getyAxisLabelsCoords(),i=this.dimYAxis.getyAxisTitleCoords();n.isSlopeChart&&(this.datalabelsCoords=this.dimHelpers.getDatalabelsRect()),e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((m,b)=>{e.globals.yLabelsCoords.push({width:r[b].width,index:b}),e.globals.yTitleCoords.push({width:i[b].width,index:b})}),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();let a=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),s=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(a,s,o),n.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,n.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(n.rotateXLabels=!1,n.translateXAxisY=-1*(parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5)),n.translateXAxisY=n.translateXAxisY+e.config.xaxis.labels.offsetY,n.translateXAxisX=n.translateXAxisX+e.config.xaxis.labels.offsetX;let l=this.yAxisWidth,u=this.xAxisHeight;n.xAxisLabelsHeight=this.xAxisHeight-s.height,n.xAxisGroupLabelsHeight=n.xAxisLabelsHeight-a.height,n.xAxisLabelsWidth=this.xAxisWidth,n.xAxisHeight=this.xAxisHeight;let c=10;(e.config.chart.type==="radar"||this.isSparkline)&&(l=0,u=0),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||e.config.chart.type==="treemap")&&(l=0,u=0,c=0),!this.isSparkline&&e.config.chart.type!=="treemap"&&this.dimXAxis.additionalPaddingXLabels(a);const f=()=>{n.translateX=l+this.datalabelsCoords.width,n.gridHeight=n.svgHeight-this.lgRect.height-u-(!this.isSparkline&&e.config.chart.type!=="treemap"?e.globals.rotateXLabels?10:15:0),n.gridWidth=n.svgWidth-l-this.datalabelsCoords.width*2};switch(e.config.xaxis.position==="top"&&(c=n.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":n.translateY=c,f();break;case"top":n.translateY=this.lgRect.height+c,f();break;case"left":n.translateY=c,n.translateX=this.lgRect.width+l+this.datalabelsCoords.width,n.gridHeight=n.svgHeight-u-12,n.gridWidth=n.svgWidth-this.lgRect.width-l-this.datalabelsCoords.width*2;break;case"right":n.translateY=c,n.translateX=l+this.datalabelsCoords.width,n.gridHeight=n.svgHeight-u-12,n.gridWidth=n.svgWidth-this.lgRect.width-l-this.datalabelsCoords.width*2-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(i,r),new BF(this.ctx).setYAxisXPosition(r,i)}setDimensionsForNonAxisCharts(){let e=this.w,n=e.globals,r=e.config,i=0;e.config.legend.show&&!e.config.legend.floating&&(i=20);const a=r.chart.type==="pie"||r.chart.type==="polarArea"||r.chart.type==="donut"?"pie":"radialBar";let o=r.plotOptions[a].offsetY,s=r.plotOptions[a].offsetX;if(!r.legend.show||r.legend.floating){n.gridHeight=n.svgHeight;const l=n.dom.elWrap.getBoundingClientRect().width;n.gridWidth=Math.min(l,n.gridHeight),n.translateY=o,n.translateX=s+(n.svgWidth-n.gridWidth)/2;return}switch(r.legend.position){case"bottom":n.gridHeight=n.svgHeight-this.lgRect.height,n.gridWidth=n.svgWidth,n.translateY=o-10,n.translateX=s+(n.svgWidth-n.gridWidth)/2;break;case"top":n.gridHeight=n.svgHeight-this.lgRect.height,n.gridWidth=n.svgWidth,n.translateY=this.lgRect.height+o+10,n.translateX=s+(n.svgWidth-n.gridWidth)/2;break;case"left":n.gridWidth=n.svgWidth-this.lgRect.width-i,n.gridHeight=r.chart.height!=="auto"?n.svgHeight:n.gridWidth,n.translateY=o,n.translateX=s+this.lgRect.width+i;break;case"right":n.gridWidth=n.svgWidth-this.lgRect.width-i-5,n.gridHeight=r.chart.height!=="auto"?n.svgHeight:n.gridWidth,n.translateY=o,n.translateX=s+10;break;default:throw new Error("Legend position not supported")}}conditionalChecksForAxisCoords(e,n,r){const i=this.w,a=i.globals.hasXaxisGroups?2:1,o=r.height+e.height+n.height,s=i.globals.isMultiLineX?1.2:i.globals.LINE_HEIGHT_RATIO,l=i.globals.rotateXLabels?22:10,c=i.globals.rotateXLabels&&i.config.legend.position==="bottom"?10:0;this.xAxisHeight=o*s+a*l+c,this.xAxisWidth=e.width,this.xAxisHeight-n.height>i.config.xaxis.labels.maxHeight&&(this.xAxisHeight=i.config.xaxis.labels.maxHeight),i.config.xaxis.labels.minHeight&&this.xAxisHeight{f+=m.labels.minWidth,h+=m.labels.maxWidth}),this.yAxisWidthh&&(this.yAxisWidth=h)}}let k1t=class{constructor(e){this.w=e.w,this.lgCtx=e}getLegendStyles(){var e,n,r;let i=document.createElement("style");i.setAttribute("type","text/css");const a=((r=(n=(e=this.lgCtx.ctx)==null?void 0:e.opts)==null?void 0:n.chart)==null?void 0:r.nonce)||this.w.config.chart.nonce;a&&i.setAttribute("nonce",a);const o=document.createTextNode(qhe);return i.appendChild(o),i}getLegendDimensions(){let n=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend"),{width:r,height:i}=n.getBoundingClientRect();return{clwh:i,clww:r}}appendToForeignObject(){const e=this.w.globals;this.w.config.chart.injectStyleSheet!==!1&&e.dom.elLegendForeign.appendChild(this.getLegendStyles())}toggleDataSeries(e,n){const r=this.w;if(r.globals.axisCharts||r.config.chart.type==="radialBar"){r.globals.resized=!0;let i=null,a=null;if(r.globals.risingSeries=[],r.globals.axisCharts){if(i=r.globals.dom.baseEl.querySelector(`.apexcharts-series[data\\:realIndex='${e}']`),!i)return;a=parseInt(i.getAttribute("data:realIndex"),10)}else{if(i=r.globals.dom.baseEl.querySelector(`.apexcharts-series[rel='${e+1}']`),!i)return;a=parseInt(i.getAttribute("rel"),10)-1}if(n?[{cs:r.globals.collapsedSeries,csi:r.globals.collapsedSeriesIndices},{cs:r.globals.ancillaryCollapsedSeries,csi:r.globals.ancillaryCollapsedSeriesIndices}].forEach(s=>{this.riseCollapsedSeries(s.cs,s.csi,a)}):this.hideSeries({seriesEl:i,realIndex:a}),r.config.chart.accessibility.enabled){const o=r.globals.dom.baseEl.querySelector(`.apexcharts-legend-series[rel="${e+1}"]`);if(o){const s=r.globals.collapsedSeriesIndices.includes(a)||r.globals.ancillaryCollapsedSeriesIndices.includes(a);o.setAttribute("aria-pressed",s?"true":"false");const l=o.querySelector(".apexcharts-legend-text"),u=l?l.textContent:r.globals.seriesNames[e],c=s?"hidden":"visible";o.setAttribute("aria-label",`${u}, ${c}. Press Enter or Space to toggle.`)}}}else{let i=r.globals.dom.Paper.findOne(` .apexcharts-series[rel='${e+1}'] path`);const a=r.config.chart.type;if(a==="pie"||a==="polarArea"||a==="donut"){let o=r.config.plotOptions.pie.donut.labels;new at(this.lgCtx.ctx).pathMouseDown(i,null),this.lgCtx.ctx.pie.printDataLabelsInner(i.node,o)}if(r.config.chart.accessibility.enabled){const o=r.globals.dom.baseEl.querySelector(`.apexcharts-legend-series[rel="${e+1}"]`);if(o){const s=r.globals.collapsedSeriesIndices.includes(e);o.setAttribute("aria-pressed",s?"true":"false");const l=o.querySelector(".apexcharts-legend-text"),u=l?l.textContent:r.globals.seriesNames[e],c=s?"hidden":"visible";o.setAttribute("aria-label",`${u}, ${c}. Press Enter or Space to toggle.`)}}}}getSeriesAfterCollapsing({realIndex:e}){const n=this.w,r=n.globals;let i=Ee.clone(n.config.series);if(r.axisCharts){let a=n.config.yaxis[r.seriesYAxisReverseMap[e]];const o={index:e,data:i[e].data.slice(),type:i[e].type||n.config.chart.type};if(a&&a.show&&a.showAlways)r.ancillaryCollapsedSeriesIndices.indexOf(e)<0&&(r.ancillaryCollapsedSeries.push(o),r.ancillaryCollapsedSeriesIndices.push(e));else if(r.collapsedSeriesIndices.indexOf(e)<0){r.collapsedSeries.push(o),r.collapsedSeriesIndices.push(e);let s=r.risingSeries.indexOf(e);r.risingSeries.splice(s,1)}}else r.collapsedSeries.push({index:e,data:i[e]}),r.collapsedSeriesIndices.push(e);return r.allSeriesCollapsed=r.collapsedSeries.length+r.ancillaryCollapsedSeries.length===n.config.series.length,this._getSeriesBasedOnCollapsedState(i)}hideSeries({seriesEl:e,realIndex:n}){const r=this.w;let i=this.getSeriesAfterCollapsing({realIndex:n}),a=e.childNodes;for(let o=0;o0){for(let o=0;o{n.globals.collapsedSeriesIndices.indexOf(a)<0&&n.globals.ancillaryCollapsedSeriesIndices.indexOf(a)<0||(e[a].data=[],r++)}):e.forEach((i,a)=>{n.globals.collapsedSeriesIndices.indexOf(a)<0||(e[a]=0,r++)}),n.globals.allSeriesCollapsed=r===e.length,e}};class Qhe{constructor(e){this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed=this.w.config.chart.type==="bar"&&this.w.config.plotOptions.bar.distributed&&this.w.config.series.length===1,this.legendHelpers=new k1t(this)}init(){const e=this.w,n=e.globals,r=e.config,i=r.legend.showForSingleSeries&&n.series.length===1||this.isBarsDistributed||n.series.length>1;if(this.legendHelpers.appendToForeignObject(),(i||!n.axisCharts)&&r.legend.show){for(;n.dom.elLegendWrap.firstChild;)n.dom.elLegendWrap.removeChild(n.dom.elLegendWrap.firstChild);this.drawLegends(),r.legend.position==="bottom"||r.legend.position==="top"?this.legendAlignHorizontal():(r.legend.position==="right"||r.legend.position==="left")&&this.legendAlignVertical()}}createLegendMarker({i:e,fillcolor:n}){const r=this.w,i=document.createElement("span");i.classList.add("apexcharts-legend-marker");let a=r.config.legend.markers.shape||r.config.markers.shape,o=a;Array.isArray(a)&&(o=a[e]);let s=Array.isArray(r.config.legend.markers.size)?parseFloat(r.config.legend.markers.size[e]):parseFloat(r.config.legend.markers.size),l=Array.isArray(r.config.legend.markers.offsetX)?parseFloat(r.config.legend.markers.offsetX[e]):parseFloat(r.config.legend.markers.offsetX),u=Array.isArray(r.config.legend.markers.offsetY)?parseFloat(r.config.legend.markers.offsetY[e]):parseFloat(r.config.legend.markers.offsetY),c=Array.isArray(r.config.legend.markers.strokeWidth)?parseFloat(r.config.legend.markers.strokeWidth[e]):parseFloat(r.config.legend.markers.strokeWidth),f=i.style;if(f.height=(s+c)*2+"px",f.width=(s+c)*2+"px",f.left=l+"px",f.top=u+"px",r.config.legend.markers.customHTML)f.background="transparent",f.color=n[e],Array.isArray(r.config.legend.markers.customHTML)?r.config.legend.markers.customHTML[e]&&(i.innerHTML=r.config.legend.markers.customHTML[e]()):i.innerHTML=r.config.legend.markers.customHTML();else{const m=new V_(this.ctx).getMarkerConfig({cssClass:`apexcharts-legend-marker apexcharts-marker apexcharts-marker-${o}`,seriesIndex:e,strokeWidth:c,size:s}),b=window.SVG().addTo(i).size("100%","100%"),_=new at(this.ctx).drawMarker(0,0,rr(vn({},m),{pointFillColor:Array.isArray(n)?n[e]:m.pointFillColor,shape:o}));r.globals.dom.Paper.find(".apexcharts-legend-marker.apexcharts-marker").forEach(x=>{x.node.classList.contains("apexcharts-marker-triangle")?x.node.style.transform="translate(50%, 45%)":x.node.style.transform="translate(50%, 50%)"}),b.add(_)}return i}drawLegends(){var e;let n=this,r=this.w,i=r.config.legend.fontFamily,a=r.globals.seriesNames,o=r.config.legend.markers.fillColors?r.config.legend.markers.fillColors.slice():r.globals.colors.slice();if(r.config.chart.type==="heatmap"){const c=r.config.plotOptions.heatmap.colorScale.ranges;a=c.map(f=>f.name?f.name:f.from+" - "+f.to),o=c.map(f=>f.color)}else this.isBarsDistributed&&(a=r.globals.labels.slice());r.config.legend.customLegendItems.length&&(a=r.config.legend.customLegendItems);let s=r.globals.legendFormatter,l=r.config.legend.inverseOrder,u=[];r.globals.seriesGroups.length>1&&r.config.legend.clusterGroupedSeries&&r.globals.seriesGroups.forEach((c,f)=>{u[f]=document.createElement("div"),u[f].classList.add("apexcharts-legend-group",`apexcharts-legend-group-${f}`),r.config.legend.clusterGroupedSeriesOrientation==="horizontal"?r.globals.dom.elLegendWrap.classList.add("apexcharts-legend-group-horizontal"):u[f].classList.add("apexcharts-legend-group-vertical")});for(let c=l?a.length-1:0;l?c>=0:c<=a.length-1;l?c--:c++){let f=s(a[c],{seriesIndex:c,w:r}),h=!1,m=!1;if(r.globals.collapsedSeries.length>0)for(let A=0;A0)for(let A=0;A{var I;A.includes((I=r.config.series[c])==null?void 0:I.name)&&(r.globals.dom.elLegendWrap.appendChild(u[R]),u[R].appendChild(_))}):r.globals.dom.elLegendWrap.appendChild(_),r.globals.dom.elLegendWrap.classList.add(`apexcharts-align-${r.config.legend.horizontalAlign}`),r.globals.dom.elLegendWrap.classList.add("apx-legend-position-"+r.config.legend.position),_.classList.add("apexcharts-legend-series"),_.style.margin=`${r.config.legend.itemMargin.vertical}px ${r.config.legend.itemMargin.horizontal}px`,r.globals.dom.elLegendWrap.style.width=r.config.legend.width?r.config.legend.width+"px":"",r.globals.dom.elLegendWrap.style.height=r.config.legend.height?r.config.legend.height+"px":"",at.setAttrs(_,{rel:c+1,seriesName:Ee.escapeString(a[c]),"data:collapsed":h||m}),(h||m)&&_.classList.add("apexcharts-inactive-legend"),r.config.legend.onItemClick.toggleDataSeries||_.classList.add("apexcharts-no-click")}r.globals.dom.elWrap.addEventListener("click",n.onLegendClick,!0),r.config.legend.onItemHover.highlightDataSeries&&r.config.legend.customLegendItems.length===0&&(r.globals.dom.elWrap.addEventListener("mousemove",n.onLegendHovered,!0),r.globals.dom.elWrap.addEventListener("mouseout",n.onLegendHovered,!0)),r.config.chart.accessibility.enabled&&r.config.chart.accessibility.keyboard.enabled&&r.globals.dom.elWrap.addEventListener("keydown",n.onLegendKeyDown.bind(n),!0)}setLegendWrapXY(e,n){let r=this.w,i=r.globals.dom.elLegendWrap;const a=i.clientHeight;let o=0,s=0;if(r.config.legend.position==="bottom")s=r.globals.svgHeight-Math.min(a,r.globals.svgHeight/2)-5;else if(r.config.legend.position==="top"){const u=new ST(this.ctx),c=u.dimHelpers.getTitleSubtitleCoords("title").height,f=u.dimHelpers.getTitleSubtitleCoords("subtitle").height;s=(c>0?c-10:0)+(f>0?f-10:0)}i.style.position="absolute",o=o+e+r.config.legend.offsetX,s=s+n+r.config.legend.offsetY,i.style.left=o+"px",i.style.top=s+"px",r.config.legend.position==="right"&&(i.style.left="auto",i.style.right=25+r.config.legend.offsetX+"px"),["width","height"].forEach(u=>{i.style[u]&&(i.style[u]=parseInt(r.config.legend[u],10)+"px")})}legendAlignHorizontal(){let e=this.w,n=e.globals.dom.elLegendWrap;n.style.right=0;let r=new ST(this.ctx),i=r.dimHelpers.getTitleSubtitleCoords("title"),a=r.dimHelpers.getTitleSubtitleCoords("subtitle"),o=20,s=0;e.config.legend.position==="top"&&(s=i.height+a.height+e.config.title.margin+e.config.subtitle.margin-10),this.setLegendWrapXY(o,s)}legendAlignVertical(){let e=this.w,n=this.legendHelpers.getLegendDimensions(),r=20,i=0;e.config.legend.position==="left"&&(i=20),e.config.legend.position==="right"&&(i=e.globals.svgWidth-n.clww-10),this.setLegendWrapXY(i,r)}onLegendHovered(e){const n=this.w,r=e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker");if(n.config.chart.type!=="heatmap"&&!this.isBarsDistributed)!e.target.classList.contains("apexcharts-inactive-legend")&&r&&new _u(this.ctx).toggleSeriesOnHover(e,e.target);else if(r){let i=parseInt(e.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,i,this.w]),new _u(this.ctx).highlightRangeInSeries(e,e.target)}}onLegendKeyDown(e){const n=this;(e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker"))&&(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),n.onLegendClick(e))}onLegendClick(e){const n=this.w;if(!n.config.legend.customLegendItems.length&&(e.target.classList.contains("apexcharts-legend-series")||e.target.classList.contains("apexcharts-legend-text")||e.target.classList.contains("apexcharts-legend-marker"))){let r=parseInt(e.target.getAttribute("rel"),10)-1,i=e.target.getAttribute("data:collapsed")==="true";const a=this.w.config.chart.events.legendClick;typeof a=="function"&&a(this.ctx,r,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,r,this.w]);const o=this.w.config.legend.markers.onClick;typeof o=="function"&&e.target.classList.contains("apexcharts-legend-marker")&&(o(this.ctx,r,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,r,this.w])),n.config.chart.type!=="treemap"&&n.config.chart.type!=="heatmap"&&!this.isBarsDistributed&&n.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(r,i)}}}const L1t=` + + + + + + + +`,B1t=` + + + +`,F1t=` + + +`,j1t=` + + + +`,U1t=` + + + +`,z1t=` + + +`,H1t='';let Zhe=class{constructor(e){this.ctx=e,this.w=e.w;const n=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=n.globals.minX,this.maxX=n.globals.maxX}createToolbar(){let e=this.w;const n=()=>document.createElement("div"),r=n();if(r.setAttribute("class","apexcharts-toolbar"),r.style.top=e.config.chart.toolbar.offsetY+"px",r.style.right=-e.config.chart.toolbar.offsetX+3+"px",e.globals.dom.elWrap.appendChild(r),this.elZoom=n(),this.elZoomIn=n(),this.elZoomOut=n(),this.elPan=n(),this.elSelection=n(),this.elZoomReset=n(),this.elMenuIcon=n(),this.elMenu=n(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(let s=0;s{const c=s.toLowerCase();this.t[c]&&e.config.chart.zoom.enabled&&i.push({el:l,icon:typeof this.t[c]=="string"?this.t[c]:u,title:this.localeValues[s],class:`apexcharts-${c}-icon`})};a("zoomIn",this.elZoomIn,j1t),a("zoomOut",this.elZoomOut,U1t);const o=s=>{this.t[s]&&e.config.chart[s].enabled&&i.push({el:s==="zoom"?this.elZoom:this.elSelection,icon:typeof this.t[s]=="string"?this.t[s]:s==="zoom"?B1t:z1t,title:this.localeValues[s==="zoom"?"selectionZoom":"selection"],class:`apexcharts-${s}-icon`})};o("zoom"),o("selection"),this.t.pan&&e.config.chart.zoom.enabled&&i.push({el:this.elPan,icon:typeof this.t.pan=="string"?this.t.pan:L1t,title:this.localeValues.pan,class:"apexcharts-pan-icon"}),a("reset",this.elZoomReset,F1t),this.t.download&&i.push({el:this.elMenuIcon,icon:typeof this.t.download=="string"?this.t.download:H1t,title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(let s=0;s{s.index&&Ee.moveIndexInArray(i,l,s.index)});for(let s=0;s{e.classList.contains("exportSVG")?e.addEventListener("click",this.handleDownload.bind(this,"svg")):e.classList.contains("exportPNG")?e.addEventListener("click",this.handleDownload.bind(this,"png")):e.classList.contains("exportCSV")&&e.addEventListener("click",this.handleDownload.bind(this,"csv"))});for(let e=0;e{r.ctx.toolbar.toggleOtherControls();let i=e==="selection"?r.ctx.toolbar.elSelection:r.ctx.toolbar.elZoom,a=e==="selection"?"selectionEnabled":"zoomEnabled";r.w.globals[a]=!r.w.globals[a],i.classList.contains(r.ctx.toolbar.selectedClass)?i.classList.remove(r.ctx.toolbar.selectedClass):i.classList.add(r.ctx.toolbar.selectedClass)})}getToolbarIconsReference(){const e=this.w;this.elZoom||(this.elZoom=e.globals.dom.baseEl.querySelector(".apexcharts-zoom-icon")),this.elPan||(this.elPan=e.globals.dom.baseEl.querySelector(".apexcharts-pan-icon")),this.elSelection||(this.elSelection=e.globals.dom.baseEl.querySelector(".apexcharts-selection-icon"))}enableZoomPanFromToolbar(e){this.toggleOtherControls(),e==="pan"?this.w.globals.panEnabled=!0:this.w.globals.zoomEnabled=!0;const n=e==="pan"?this.elPan:this.elZoom,r=e==="pan"?this.elZoom:this.elPan;n&&n.classList.add(this.selectedClass),r&&r.classList.remove(this.selectedClass)}togglePanning(){this.ctx.getSyncedCharts().forEach(n=>{n.ctx.toolbar.toggleOtherControls(),n.w.globals.panEnabled=!n.w.globals.panEnabled,n.ctx.toolbar.elPan.classList.contains(n.ctx.toolbar.selectedClass)?n.ctx.toolbar.elPan.classList.remove(n.ctx.toolbar.selectedClass):n.ctx.toolbar.elPan.classList.add(n.ctx.toolbar.selectedClass)})}toggleOtherControls(){const e=this.w;e.globals.panEnabled=!1,e.globals.zoomEnabled=!1,e.globals.selectionEnabled=!1,this.getToolbarIconsReference(),[this.elPan,this.elSelection,this.elZoom].forEach(r=>{r&&r.classList.remove(this.selectedClass)})}handleZoomIn(){const e=this.w;e.globals.isRangeBar&&(this.minX=e.globals.minY,this.maxX=e.globals.maxY);const n=(this.minX+this.maxX)/2;let r=(this.minX+n)/2,i=(this.maxX+n)/2;const a=this._getNewMinXMaxX(r,i);e.globals.disableZoomIn||this.zoomUpdateOptions(a.minX,a.maxX)}handleZoomOut(){const e=this.w;if(e.globals.isRangeBar&&(this.minX=e.globals.minY,this.maxX=e.globals.maxY),e.config.xaxis.type==="datetime"&&new Date(this.minX).getUTCFullYear()<1e3)return;const n=(this.minX+this.maxX)/2;let r=this.minX-(n-this.minX),i=this.maxX-(n-this.maxX);const a=this._getNewMinXMaxX(r,i);e.globals.disableZoomOut||this.zoomUpdateOptions(a.minX,a.maxX)}_getNewMinXMaxX(e,n){const r=this.w.config.xaxis.convertedCatToNumeric;return{minX:r?Math.floor(e):e,maxX:r?Math.floor(n):n}}zoomUpdateOptions(e,n){const r=this.w;if(e===void 0&&n===void 0){this.handleZoomReset();return}if(r.config.xaxis.convertedCatToNumeric&&(e<1&&(e=1,n=r.globals.dataPoints),n-e<2))return;let i={min:e,max:n};const a=this.getBeforeZoomRange(i);a&&(i=a.xaxis);let o={xaxis:i},s=Ee.clone(r.globals.initialConfig.yaxis);r.config.chart.group||(o.yaxis=s),this.w.globals.zoomed=!0,this.ctx.updateHelpers._updateOptions(o,!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(i,s)}zoomCallback(e,n){typeof this.ev.zoomed=="function"&&(this.ev.zoomed(this.ctx,{xaxis:e,yaxis:n}),this.ctx.events.fireEvent("zoomed",{xaxis:e,yaxis:n}))}getBeforeZoomRange(e,n){let r=null;return typeof this.ev.beforeZoom=="function"&&(r=this.ev.beforeZoom(this,{xaxis:e,yaxis:n})),r}toggleMenu(){window.setTimeout(()=>{this.elMenu.classList.contains("apexcharts-menu-open")?this.elMenu.classList.remove("apexcharts-menu-open"):this.elMenu.classList.add("apexcharts-menu-open")},0)}handleDownload(e){const n=this.w,r=new ry(this.ctx);switch(e){case"svg":r.exportToSVG(this.ctx);break;case"png":r.exportToPng(this.ctx);break;case"csv":r.exportToCSV({series:n.config.series,columnDelimiter:n.config.chart.toolbar.export.csv.columnDelimiter});break}}handleZoomReset(){this.ctx.getSyncedCharts().forEach(n=>{let r=n.w;if(r.globals.lastXAxis.min=r.globals.initialConfig.xaxis.min,r.globals.lastXAxis.max=r.globals.initialConfig.xaxis.max,n.updateHelpers.revertDefaultAxisMinMax(),typeof r.config.chart.events.beforeResetZoom=="function"){const a=r.config.chart.events.beforeResetZoom(n,r);a&&n.updateHelpers.revertDefaultAxisMinMax(a)}typeof r.config.chart.events.zoomed=="function"&&n.ctx.toolbar.zoomCallback({min:r.config.xaxis.min,max:r.config.xaxis.max}),r.globals.zoomed=!1;let i=n.ctx.series.emptyCollapsedSeries(Ee.clone(r.globals.initialSeries));n.updateHelpers._updateSeries(i,r.config.chart.animations.dynamicAnimation.enabled)})}destroy(){this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elZoomReset=null,this.elMenuIcon=null}};class Da{constructor(e){this.node=e,e&&(e.instance=this),this._listeners=[],this._filter=null}attr(e,n){if(typeof e=="string"&&n===void 0)return this.node.getAttribute(e);const r=typeof e=="string"?{[e]:n}:e;for(const i in r){let a=r[i];a===null?this.node.removeAttribute(i):a!==void 0&&(typeof a=="number"&&isNaN(a)&&(a=0),this.node.setAttribute(i,a))}if(this.node.nodeName==="text"&&r.x!=null){const i=this.node.querySelectorAll("tspan[data-newline]");for(let a=0;an.instance||new Da(n))}findOne(e){const n=this.node.querySelector(e);return n?n.instance||new Da(n):null}on(e,n){const r=e.split(".")[0];return this._listeners.push({event:e,eventType:r,handler:n}),this.node.addEventListener(r,n),this}off(e,n){if(!e&&!n)this._listeners.forEach(r=>{this.node.removeEventListener(r.eventType,r.handler)}),this._listeners=[];else if(e&&!n){const r=e.split(".")[0];this._listeners=this._listeners.filter(i=>i.eventType===r?(this.node.removeEventListener(i.eventType,i.handler),!1):!0)}else{const r=e.split(".")[0];this._listeners=this._listeners.filter(i=>i.eventType===r&&i.handler===n?(this.node.removeEventListener(i.eventType,i.handler),!1):!0)}return this}each(e,n){return Array.from(this.node.children).forEach(i=>{const a=i.instance||new Da(i);e.call(a),n&&a.each(e,n)}),this}removeClass(e){return e==="*"?this.node.removeAttribute("class"):this.node.classList.remove(e),this}children(){return Array.from(this.node.childNodes).filter(e=>e.nodeType===1).map(e=>e.instance||new Da(e))}hide(){return this.node.style.display="none",this}show(){return this.node.style.display="",this}bbox(){if(typeof this.node.getBBox=="function")try{return this.node.getBBox()}catch{}return{x:0,y:0,width:0,height:0}}tspan(e){const n=document.createElementNS("http://www.w3.org/2000/svg","tspan");return n.textContent=e,this.node.appendChild(n),new Da(n)}plot(e){return typeof e=="string"&&this.attr("d",e),this}animate(){throw new Error("Animation module not loaded")}filterWith(){throw new Error("Filter module not loaded")}unfilter(e){return this._filter&&(this.node.removeAttribute("filter"),e&&this._filter.node&&this._filter.node.parentNode&&this._filter.node.parentNode.removeChild(this._filter.node),this._filter=null),this}filterer(){return this._filter}}const Pa="http://www.w3.org/2000/svg";class oc{constructor(e,n){typeof e=="object"?(this.x=e.x,this.y=e.y):(this.x=e||0,this.y=n||0)}transform(e){return e.apply(this)}clone(){return new oc(this.x,this.y)}}class sm{constructor(e,n,r,i,a,o){this.a=e??1,this.b=n??0,this.c=r??0,this.d=i??1,this.e=a??0,this.f=o??0}rotate(e){const n=e*Math.PI/180,r=Math.cos(n),i=Math.sin(n);return this.multiply(new sm(r,i,-i,r,0,0))}scale(e,n){return this.multiply(new sm(e,0,0,n??e,0,0))}multiply(e){return new sm(this.a*e.a+this.c*e.b,this.b*e.a+this.d*e.b,this.a*e.c+this.c*e.d,this.b*e.c+this.d*e.d,this.a*e.e+this.c*e.f+this.e,this.b*e.e+this.d*e.f+this.f)}apply(e){return new oc(this.a*e.x+this.c*e.y+this.e,this.b*e.x+this.d*e.y+this.f)}}class $1t{constructor(e,n,r,i){this.x=e,this.y=n,this.w=r,this.h=i,this.width=r,this.height=i,this.x2=e+r,this.y2=n+i}}let G1t=0;class V1t extends Da{constructor(e,n,r){const i=n==="radial"?"radialGradient":"linearGradient",a=Ma.createElementNS(Pa,i);super(a),this._id="SvgjsGradient"+ ++G1t,this.attr("id",this._id),typeof r=="function"&&r(new Y1t(this));let o=e.node.querySelector("defs");o||(o=Ma.createElementNS(Pa,"defs"),e.node.appendChild(o)),o.appendChild(this.node)}stop(e,n,r){const i=Ma.createElementNS(Pa,"stop");return i.setAttribute("offset",e),i.setAttribute("stop-color",n),r!==void 0&&i.setAttribute("stop-opacity",r),this.node.appendChild(i),this}from(e,n){return this.attr({x1:e,y1:n})}to(e,n){return this.attr({x2:e,y2:n})}url(){return"url(#"+this._id+")"}toString(){return this.url()}valueOf(){return this.url()}fill(){return this.url()}}class Y1t{constructor(e){this.gradient=e}stop(e,n,r){return this.gradient.stop(e,n,r),this}}let W1t=0;class q1t extends Da{constructor(e,n,r,i){const a=Ma.createElementNS(Pa,"pattern");if(super(a),this._id="SvgjsPattern"+ ++W1t,this.attr({id:this._id,width:n,height:r,patternUnits:"userSpaceOnUse"}),typeof i=="function"){const s=new ux(this.node);i(s)}let o=e.node.querySelector("defs");o||(o=Ma.createElementNS(Pa,"defs"),e.node.appendChild(o)),o.appendChild(this.node)}url(){return"url(#"+this._id+")"}toString(){return this.url()}valueOf(){return this.url()}fill(){return this.url()}}class ux extends Da{line(e,n,r,i){const a=this._make("line");return e!==void 0&&a.attr({x1:e,y1:n,x2:r,y2:i}),a}rect(e,n){const r=this._make("rect");return e!==void 0&&r.attr({width:e,height:n}),r}circle(e){const n=this._make("circle");return e!==void 0&&n.attr({r:e/2,cx:e/2,cy:e/2}),n}path(e){const n=this._make("path");return e&&n.attr("d",e),n}polygon(e){const n=this._make("polygon");return e&&n.attr("points",e),n}group(){return this._makeContainer("g")}defs(){return this._makeContainer("defs")}plain(e){const n=Ma.createElementNS(Pa,"text");n.textContent=e;const r=new Da(n);return this.node.appendChild(n),r}text(e){const n=Ma.createElementNS(Pa,"text"),r=new Da(n);return this.node.appendChild(n),typeof e=="function"&&e(new K1t(n)),r}image(e,n){const r=Ma.createElementNS(Pa,"image");r.setAttributeNS("http://www.w3.org/1999/xlink","href",e);const i=new Da(r);if(this.node.appendChild(r),typeof n=="function"){const a=new Image;a.onload=function(){i.size(a.width,a.height),n.call(i,{width:a.width,height:a.height})},a.src=e}return i}gradient(e,n){return new V1t(this,e,n)}pattern(e,n,r){return new q1t(this,e,n,r)}_make(e){const n=Ma.createElementNS(Pa,e);return this.node.appendChild(n),new Da(n)}_makeContainer(e){const n=Ma.createElementNS(Pa,e);return this.node.appendChild(n),new ux(n)}}class K1t{constructor(e){this.textNode=e}tspan(e){const n=Ma.createElementNS(Pa,"tspan");return n.textContent=e,this.textNode.appendChild(n),new X1t(n,this.textNode)}}class X1t{constructor(e,n){this.node=e,this.textNode=n}newLine(){return this.node.setAttribute("dy","1.1em"),this.node.dataset.newline="1",this}}let Q1t=0;class Z1t extends Da{constructor(){const e=Ma.createElementNS(Pa,"filter");super(e),this._id="SvgjsFilter"+ ++Q1t,this.attr("id",this._id)}size(e,n,r,i){return this.attr({width:e,height:n,x:r,y:i})}}class J1t{constructor(e){this.filter=e}colorMatrix(e){return this._primitive("feColorMatrix",e)}offset(e){return this._primitive("feOffset",e)}gaussianBlur(e){return this._primitive("feGaussianBlur",e)}flood(e){return this._primitive("feFlood",e)}composite(e){return this._primitive("feComposite",e)}merge(e){const n=Ma.createElementNS(Pa,"feMerge");return e.forEach(r=>{const i=Ma.createElementNS(Pa,"feMergeNode");i.setAttribute("in",r),n.appendChild(i)}),this.filter.node.appendChild(n),new Da(n)}_primitive(e,n){const r=Ma.createElementNS(Pa,e);for(const i in n)r.setAttribute(i,n[i]);return this.filter.node.appendChild(r),new Da(r)}}function ebt(t){t.prototype.filterWith=function(e){const n=new Z1t;this._filter=n;let r=this.node;for(;r&&r.nodeName!=="svg";)r=r.parentNode;if(r){let i=r.querySelector("defs");i||(i=Ma.createElementNS(Pa,"defs"),r.insertBefore(i,r.firstChild)),i.appendChild(n.node)}return e(new J1t(n)),this.attr("filter","url(#"+n._id+")"),this},t.prototype.unfilter=function(e){return this._filter&&(this.node.removeAttribute("filter"),e&&this._filter.node&&this._filter.node.parentNode&&this._filter.node.parentNode.removeChild(this._filter.node),this._filter=null),this},t.prototype.filterer=function(){return this._filter}}function jte(t){if(!t||typeof t!="string")return[["M",0,0]];const e=[],n=/([MmLlHhVvCcSsQqTtAaZz])\s*/g,r=/[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/gi;let i;const a=[],o=[];for(;(i=n.exec(t))!==null;)a.push(i[1]),o.push(i.index);for(let s=0;s{for(let o=1;or&&(r=s),li&&(i=l))}}),e===1/0?{x:0,y:0,width:0,height:0}:{x:e,y:n,width:r-e,height:i-n}}function tbt(t){return t.map(e=>e.join(" ")).join(" ")}function zte(t){switch(t[0]){case"z":case"Z":t[0]="L",t[1]=this.start[0],t[2]=this.start[1];break;case"H":t[0]="L",t[2]=this.pos[1];break;case"V":t[0]="L",t[2]=t[1],t[1]=this.pos[0];break;case"T":t[0]="Q",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case"S":t[0]="C",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0];break}return t}function Hte(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],"SCQT".indexOf(t[0])!=-1&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function $te(t){var e=[t];switch(t[0]){case"M":return this.pos=this.start=[t[1],t[2]],e;case"L":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case"Q":t[6]=t[4],t[5]=t[3],t[4]=t[4]*1/3+t[2]*2/3,t[3]=t[3]*1/3+t[1]*2/3,t[2]=this.pos[1]*1/3+t[2]*2/3,t[1]=this.pos[0]*1/3+t[1]*2/3;break;case"A":e=nbt(this.pos,t),t=e[0];break}return t[0]="C",this.pos=[t[5],t[6]],this.reflection=[2*t[5]-t[3],2*t[6]-t[4]],e}function Gte(t,e){if(e===!1)return!1;for(var n=e,r=t.length;n1&&(h=Math.sqrt(h),n=h*n,r=h*r),m=new sm().rotate(i).scale(1/n,1/r).rotate(-i),u=u.transform(m),c=c.transform(m),b=[c.x-u.x,c.y-u.y],y=b[0]*b[0]+b[1]*b[1],_=Math.sqrt(y),b[0]/=_,b[1]/=_,x=y<4?Math.sqrt(1-y/4):0,a===o&&(x*=-1),C=new oc((c.x+u.x)/2+x*-b[1],(c.y+u.y)/2+x*b[0]),A=new oc(u.x-C.x,u.y-C.y),R=new oc(c.x-C.x,c.y-C.y),I=Math.acos(A.x/Math.sqrt(A.x*A.x+A.y*A.y)),A.y<0&&(I*=-1),O=Math.acos(R.x/Math.sqrt(R.x*R.x+R.y*R.y)),R.y<0&&(O*=-1),o&&I>O&&(O+=2*Math.PI),!o&&I>16&255,r>>8&255,r&255,1]}const e=t.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);return e?[+e[1],+e[2],+e[3],e[4]!==void 0?+e[4]:1]:null}function sbt(t,e,n){return`rgba(${Math.round(t[0]+(e[0]-t[0])*n)},${Math.round(t[1]+(e[1]-t[1])*n)},${Math.round(t[2]+(e[2]-t[2])*n)},${t[3]+(e[3]-t[3])*n})`}class FF{constructor(e,n,r){this.el=e,this.duration=n??300,this.delay=r||0,this._attrTarget=null,this._plotTarget=null,this._afterCb=null,this._duringCb=null,this._next=null,this._root=null,this._scheduled=!1}attr(e){return this._attrTarget=e,this._schedule(),this}plot(e){return this._plotTarget=e,this._schedule(),this}after(e){return this._afterCb=e,this._schedule(),this}during(e){return this._duringCb=e,this._schedule(),this}animate(e,n){const r=new FF(this.el,e,n);return this._next=r,r._root=this._root||this,r}_schedule(){const e=this._root||this;e._scheduled||(e._scheduled=!0,queueMicrotask(()=>e._executeChain()))}_executeChain(){const e=[];let n=this;for(;n;)e.push(n),n=n._next;let r=0;e.forEach(i=>{r+=i.delay,i._execute(r),r+=i.duration})}_execute(e){const n=this.el,r=this.duration;if(r<=1){const a=()=>{this._attrTarget&&n.attr(this._attrTarget),this._plotTarget&&n.plot(this._plotTarget),this._afterCb&&this._afterCb.call(n)};e>0?setTimeout(a,e):a();return}const i=()=>{const a={},o={},s={};if(this._attrTarget)for(const f of Object.keys(this._attrTarget)){const h=n.attr(f);a[f]=h;const m=Vte(h),b=Vte(String(this._attrTarget[f]));m&&b&&(o[f]=m,s[f]=b)}let l=null;if(this._plotTarget){const f=n.attr("d")||"";try{l=abt(f,this._plotTarget)}catch{l=null}}const u=performance.now(),c=f=>{const h=f-u,m=Math.min(h/r,1),b=obt(m);if(this._attrTarget)if(m>=1)n.attr(this._attrTarget);else{const _={};for(const y of Object.keys(this._attrTarget))if(o[y]&&s[y])_[y]=sbt(o[y],s[y],b);else{const x=parseFloat(a[y]),C=parseFloat(this._attrTarget[y]);!isNaN(x)&&!isNaN(C)&&(_[y]=x+(C-x)*b)}n.attr(_)}l&&m<1&&n.attr("d",l(b)),this._duringCb&&this._duringCb(b),m<1?requestAnimationFrame(c):(this._plotTarget&&n.attr("d",this._plotTarget),this._afterCb&&this._afterCb.call(n))};requestAnimationFrame(c)};e>0?setTimeout(i,e):i()}}function lbt(t){t.prototype.animate=function(e,n){return new FF(this,e,n)}}function cbt(t){t.prototype.draggable=function(e){if(e===!1)return this._dragCleanup&&(this._dragCleanup(),this._dragCleanup=null),this;const n=this,r=e||{},i=a=>{if(a.button&&a.button!==0)return;a.stopPropagation();const s=a.type==="touchstart"?a.touches[0]:a,l=n.node,u=parseFloat(l.getAttribute("x"))||0,c=parseFloat(l.getAttribute("y"))||0,f=s.clientX,h=s.clientY,m=l.ownerSVGElement;let b=null;m&&(b=m.getScreenCTM());const _=x=>{const C=x.type==="touchmove"?x.touches[0]:x;let A=C.clientX-f,R=C.clientY-h;b&&(A=A/b.a,R=R/b.d);let I=u+A,O=c+R;const N=parseFloat(l.getAttribute("width"))||0,k=parseFloat(l.getAttribute("height"))||0;r.minX!==void 0&&Ir.maxX&&(I=r.maxX-N),r.maxY!==void 0&&O+k>r.maxY&&(O=r.maxY-k);const D={x:I,y:O,w:N,h:k,x2:I+N,y2:O+k},P=new CustomEvent("dragmove",{detail:{handler:{move:function(j,M){l.setAttribute("x",j),l.setAttribute("y",M)}},box:D}});l.dispatchEvent(P)},y=()=>{document.removeEventListener("mousemove",_),document.removeEventListener("touchmove",_),document.removeEventListener("mouseup",y),document.removeEventListener("touchend",y)};document.addEventListener("mousemove",_),document.addEventListener("touchmove",_),document.addEventListener("mouseup",y),document.addEventListener("touchend",y)};return n.node.addEventListener("mousedown",i),n.node.addEventListener("touchstart",i),n._dragCleanup=()=>{n.node.removeEventListener("mousedown",i),n.node.removeEventListener("touchstart",i)},n}}function ubt(t){t.prototype.select=function(e){if(e===!1)return this._selectCleanup&&(this._selectCleanup(),this._selectCleanup=null),this;const n=this,{createHandle:r,updateHandle:i}=e,a=document.createElementNS(Pa,"g");a.setAttribute("class","svg_select_points");const o=n.node.parentNode;o&&o.appendChild(a);const s={},l=["t","b","l","r","lt","rt","lb","rb"];l.forEach((c,f)=>{const h=new ux(document.createElementNS(Pa,"g"));a.appendChild(h.node);const m=r(h,[0,0],f,[],c);s[c]={group:h,handle:m}});const u=()=>{const c=parseFloat(n.attr("x"))||0,f=parseFloat(n.attr("y"))||0,h=parseFloat(n.attr("width"))||0,m=parseFloat(n.attr("height"))||0,b=n.node.getAttribute("transform");b?a.setAttribute("transform",b):a.removeAttribute("transform");const _={t:[c+h/2,f],b:[c+h/2,f+m],l:[c,f+m/2],r:[c+h,f+m/2],lt:[c,f],rt:[c+h,f],lb:[c,f+m],rb:[c+h,f+m]};l.forEach(y=>{s[y]&&_[y]&&i(s[y].group,_[y])})};return u(),n._selectHandles=a,n._selectHandlesMap=s,n._updateSelectPositions=u,n._selectCleanup=()=>{a.parentNode&&a.parentNode.removeChild(a),n._selectHandles=null,n._selectHandlesMap=null,n._updateSelectPositions=null},n},t.prototype.resize=function(e){if(e===!1)return this._resizeCleanup&&(this._resizeCleanup(),this._resizeCleanup=null),this;const n=this,r=n._selectHandlesMap;if(!r)return n;const i=[],a=o=>{const s=r[o];if(!s||!s.group||!s.group.node)return;const l=s.group.node,u=c=>{if(c.button&&c.button!==0)return;c.stopPropagation();const m=(c.type==="touchstart"?c.touches[0]:c).clientX,b=n.node.ownerSVGElement;let _=null;b&&(_=b.getScreenCTM());const y=parseFloat(n.attr("x"))||0,x=parseFloat(n.attr("width"))||0,C=R=>{let O=(R.type==="touchmove"?R.touches[0]:R).clientX-m;_&&(O=O/_.a);let N=y,k=x;o==="l"?(N=y+O,k=x-O):o==="r"&&(k=x+O),k<0&&(k=0),n.attr({x:N,width:k}),n._updateSelectPositions&&n._updateSelectPositions();const D=new CustomEvent("resize",{detail:{el:n}});n.node.dispatchEvent(D)},A=()=>{document.removeEventListener("mousemove",C),document.removeEventListener("touchmove",C),document.removeEventListener("mouseup",A),document.removeEventListener("touchend",A);const R=new CustomEvent("resize",{detail:{el:n}});n.node.dispatchEvent(R)};document.addEventListener("mousemove",C),document.addEventListener("touchmove",C),document.addEventListener("mouseup",A),document.addEventListener("touchend",A)};l.addEventListener("mousedown",u),l.addEventListener("touchstart",u),i.push(()=>{l.removeEventListener("mousedown",u),l.removeEventListener("touchstart",u)})};return a("l"),a("r"),n._resizeCleanup=()=>{i.forEach(o=>o())},n}}ebt(Da);lbt(Da);cbt(Da);ubt(Da);function jF(){const t=Ma.createElementNS(Pa,"svg"),e=new ux(t);return e.attr({xmlns:Pa}),e}jF.xlink="http://www.w3.org/1999/xlink";yi.isBrowser()&&typeof window.SVG>"u"&&(window.SVG=jF);class dbt extends Zhe{constructor(e){super(e),this.ctx=e,this.w=e.w,this.dragged=!1,this.graphics=new at(this.ctx),this.eventList=["mousedown","mouseleave","mousemove","touchstart","touchmove","mouseup","touchend","wheel"],this.clientX=0,this.clientY=0,this.startX=0,this.endX=0,this.dragX=0,this.startY=0,this.endY=0,this.dragY=0,this.moveDirection="none",this.debounceTimer=null,this.debounceDelay=100,this.wheelDelay=400}init({xyRatios:e}){let n=this.w,r=this;this.xyRatios=e,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.gridRect=n.globals.dom.baseEl.querySelector(".apexcharts-grid"),this.constraints=new $1t(0,0,n.globals.gridWidth,n.globals.gridHeight),this.zoomRect.node.classList.add("apexcharts-zoom-rect"),this.selectionRect.node.classList.add("apexcharts-selection-rect"),n.globals.dom.Paper.add(this.zoomRect),n.globals.dom.Paper.add(this.selectionRect),n.config.chart.selection.type==="x"?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:n.globals.gridWidth,maxY:n.globals.gridHeight}).on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")):n.config.chart.selection.type==="y"?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:n.globals.gridWidth}).on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")):this.slDraggableRect=this.selectionRect.draggable().on("dragmove.namespace",this.selectionDragging.bind(this,"dragging")),this.preselectedSelection(),this.hoverArea=n.globals.dom.baseEl.querySelector(`${n.globals.chartClass} .apexcharts-svg`),this.hoverArea.classList.add("apexcharts-zoomable"),this.eventList.forEach(i=>{this.hoverArea.addEventListener(i,r.svgMouseEvents.bind(r,e),{capture:!1,passive:!0})}),n.config.chart.zoom.enabled&&n.config.chart.zoom.allowMouseWheelZoom&&this.hoverArea.addEventListener("wheel",r.mouseWheelEvent.bind(r),{capture:!1,passive:!1})}destroy(){this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null,this.gridRect=null}svgMouseEvents(e,n){let r=this.w;const i=this.ctx.toolbar;let a=r.globals.zoomEnabled?r.config.chart.zoom.type:r.config.chart.selection.type;const o=r.config.chart.toolbar.autoSelected;if(n.shiftKey?(this.shiftWasPressed=!0,i.enableZoomPanFromToolbar(o==="pan"?"zoom":"pan")):this.shiftWasPressed&&(i.enableZoomPanFromToolbar(o),this.shiftWasPressed=!1),!n.target)return;const s=n.target.classList;let l;if(n.target.parentNode&&n.target.parentNode!==null&&(l=n.target.parentNode.classList),!(s.contains("apexcharts-legend-marker")||s.contains("apexcharts-legend-text")||l&&l.contains("apexcharts-toolbar"))){if(this.clientX=n.type==="touchmove"||n.type==="touchstart"?n.touches[0].clientX:n.type==="touchend"?n.changedTouches[0].clientX:n.clientX,this.clientY=n.type==="touchmove"||n.type==="touchstart"?n.touches[0].clientY:n.type==="touchend"?n.changedTouches[0].clientY:n.clientY,n.type==="mousedown"&&n.which===1||n.type==="touchstart"){let c=this.gridRect.getBoundingClientRect();this.startX=this.clientX-c.left-r.globals.barPadForNumericAxis,this.startY=this.clientY-c.top,this.dragged=!1,this.w.globals.mousedown=!0}(n.type==="mousemove"&&n.which===1||n.type==="touchmove")&&(this.dragged=!0,r.globals.panEnabled?(r.globals.selection=null,this.w.globals.mousedown&&this.panDragging({context:this,zoomtype:a,xyRatios:e})):(this.w.globals.mousedown&&r.globals.zoomEnabled||this.w.globals.mousedown&&r.globals.selectionEnabled)&&(this.selection=this.selectionDrawing({context:this,zoomtype:a}))),(n.type==="mouseup"||n.type==="touchend"||n.type==="mouseleave")&&this.handleMouseUp({zoomtype:a}),this.makeSelectionRectDraggable()}}handleMouseUp({zoomtype:e,isResized:n}){var r;const i=this.w;let a=(r=this.gridRect)==null?void 0:r.getBoundingClientRect();a&&(this.w.globals.mousedown||n)&&(this.endX=this.clientX-a.left-i.globals.barPadForNumericAxis,this.endY=this.clientY-a.top,this.dragX=Math.abs(this.endX-this.startX),this.dragY=Math.abs(this.endY-this.startY),(i.globals.zoomEnabled||i.globals.selectionEnabled)&&this.selectionDrawn({context:this,zoomtype:e})),i.globals.zoomEnabled&&this.hideSelectionRect(this.selectionRect),this.dragged=!1,this.w.globals.mousedown=!1}mouseWheelEvent(e){const n=this.w;e.preventDefault();const r=Date.now();r-n.globals.lastWheelExecution>this.wheelDelay&&(this.executeMouseWheelZoom(e),n.globals.lastWheelExecution=r),this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{r-n.globals.lastWheelExecution>this.wheelDelay&&(this.executeMouseWheelZoom(e),n.globals.lastWheelExecution=r)},this.debounceDelay)}executeMouseWheelZoom(e){var n;const r=this.w;this.minX=r.globals.isRangeBar?r.globals.minY:r.globals.minX,this.maxX=r.globals.isRangeBar?r.globals.maxY:r.globals.maxX;const i=(n=this.gridRect)==null?void 0:n.getBoundingClientRect();if(!i)return;const a=(e.clientX-i.left)/i.width,o=this.minX,s=this.maxX,l=s-o,u=.5,c=1.5;let f,h,m;if(e.deltaY<0){f=u*l;const _=o+a*l;h=_-f/2,m=_+f/2}else f=c*l,h=o-f/2,m=s+f/2;if(!r.globals.isRangeBar){h=Math.max(h,r.globals.initialMinX),m=Math.min(m,r.globals.initialMaxX);const _=(r.globals.initialMaxX-r.globals.initialMinX)*.01;if(m-h<_){const y=(h+m)/2;h=y-_/2,m=y+_/2}}const b=this._getNewMinXMaxX(h,m);!isNaN(b.minX)&&!isNaN(b.maxX)&&this.zoomUpdateOptions(b.minX,b.maxX)}makeSelectionRectDraggable(){const e=this.w;if(!this.selectionRect)return;const n=this.selectionRect.node.getBoundingClientRect();n.width>0&&n.height>0&&(this.selectionRect.select(!1).resize(!1),this.selectionRect.select({createRot:()=>{},updateRot:()=>{},createHandle:(r,i,a,o,s)=>s==="l"||s==="r"?r.circle(8).css({"stroke-width":1,stroke:"#333",fill:"#fff"}):r.circle(0),updateHandle:(r,i)=>r.center(i[0],i[1])}).resize().on("resize",()=>{let r=e.globals.zoomEnabled?e.config.chart.zoom.type:e.config.chart.selection.type;this.handleMouseUp({zoomtype:r,isResized:!0})}))}preselectedSelection(){const e=this.w,n=this.xyRatios;if(!e.globals.zoomEnabled){if(typeof e.globals.selection<"u"&&e.globals.selection!==null)this.drawSelectionRect(rr(vn({},e.globals.selection),{translateX:e.globals.translateX,translateY:e.globals.translateY}));else if(e.config.chart.selection.xaxis.min!==void 0&&e.config.chart.selection.xaxis.max!==void 0){let r=(e.config.chart.selection.xaxis.min-e.globals.minX)/n.xRatio,i=e.globals.gridWidth-(e.globals.maxX-e.config.chart.selection.xaxis.max)/n.xRatio-r;e.globals.isRangeBar&&(r=(e.config.chart.selection.xaxis.min-e.globals.yAxisScale[0].niceMin)/n.invertedYRatio,i=(e.config.chart.selection.xaxis.max-e.config.chart.selection.xaxis.min)/n.invertedYRatio);let a={x:r,y:0,width:i,height:e.globals.gridHeight,translateX:e.globals.translateX,translateY:e.globals.translateY,selectionEnabled:!0};this.drawSelectionRect(a),this.makeSelectionRectDraggable(),typeof e.config.chart.events.selection=="function"&&e.config.chart.events.selection(this.ctx,{xaxis:{min:e.config.chart.selection.xaxis.min,max:e.config.chart.selection.xaxis.max},yaxis:{}})}}}drawSelectionRect({x:e,y:n,width:r,height:i,translateX:a=0,translateY:o=0}){const s=this.w,l=this.zoomRect,u=this.selectionRect;if(this.dragged||s.globals.selection!==null){let c={transform:"translate("+a+", "+o+")"};s.globals.zoomEnabled&&this.dragged&&(r<0&&(r=1),l.attr({x:e,y:n,width:r,height:i,fill:s.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":s.config.chart.zoom.zoomedArea.fill.opacity,stroke:s.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":s.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":s.config.chart.zoom.zoomedArea.stroke.opacity}),at.setAttrs(l.node,c)),s.globals.selectionEnabled&&(u.attr({x:e,y:n,width:r>0?r:0,height:i>0?i:0,fill:s.config.chart.selection.fill.color,"fill-opacity":s.config.chart.selection.fill.opacity,stroke:s.config.chart.selection.stroke.color,"stroke-width":s.config.chart.selection.stroke.width,"stroke-dasharray":s.config.chart.selection.stroke.dashArray,"stroke-opacity":s.config.chart.selection.stroke.opacity}),at.setAttrs(u.node,c))}}hideSelectionRect(e){e&&e.attr({x:0,y:0,width:0,height:0})}selectionDrawing({context:e,zoomtype:n}){const r=this.w;let i=e,a=this.gridRect.getBoundingClientRect(),o=i.startX-1,s=i.startY,l=!1,u=!1;const c=i.clientX-a.left-r.globals.barPadForNumericAxis,f=i.clientY-a.top;let h=c-o,m=f-s,b={translateX:r.globals.translateX,translateY:r.globals.translateY};return Math.abs(h+o)>r.globals.gridWidth?h=r.globals.gridWidth-o:c<0&&(h=o),o>c&&(l=!0,h=Math.abs(h)),s>f&&(u=!0,m=Math.abs(m)),n==="x"?b={x:l?o-h:o,y:0,width:h,height:r.globals.gridHeight}:n==="y"?b={x:0,y:u?s-m:s,width:r.globals.gridWidth,height:m}:b={x:l?o-h:o,y:u?s-m:s,width:h,height:m},b=rr(vn({},b),{translateX:r.globals.translateX,translateY:r.globals.translateY}),i.drawSelectionRect(b),i.selectionDragging("resizing"),b}selectionDragging(e,n){const r=this.w;if(!n)return;n.preventDefault();const{handler:i,box:a}=n.detail;let{x:o,y:s}=a;othis.constraints.x2&&(o=this.constraints.x2-a.w),a.y2>this.constraints.y2&&(s=this.constraints.y2-a.h),i.move(o,s);const l=this.xyRatios,u=this.selectionRect;let c=0;e==="resizing"&&(c=30);const f=m=>parseFloat(u.node.getAttribute(m)),h={x:f("x"),y:f("y"),width:f("width"),height:f("height")};r.globals.selection=h,typeof r.config.chart.events.selection=="function"&&r.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(()=>{const m=this.gridRect.getBoundingClientRect(),b=u.node.getBoundingClientRect();let _,y,x,C;r.globals.isRangeBar?(_=r.globals.yAxisScale[0].niceMin+(b.left-m.left)*l.invertedYRatio,y=r.globals.yAxisScale[0].niceMin+(b.right-m.left)*l.invertedYRatio,x=0,C=1):(_=r.globals.xAxisScale.niceMin+(b.left-m.left)*l.xRatio,y=r.globals.xAxisScale.niceMin+(b.right-m.left)*l.xRatio,x=r.globals.yAxisScale[0].niceMin+(m.bottom-b.bottom)*l.yRatio[0],C=r.globals.yAxisScale[0].niceMax-(b.top-m.top)*l.yRatio[0]);const A={xaxis:{min:_,max:y},yaxis:{min:x,max:C}};r.config.chart.events.selection(this.ctx,A),r.config.chart.brush.enabled&&r.config.chart.events.brushScrolled!==void 0&&r.config.chart.events.brushScrolled(this.ctx,A)},c))}selectionDrawn({context:e,zoomtype:n}){const r=this.w,i=e,a=this.xyRatios,o=this.ctx.toolbar,s=r.globals.zoomEnabled?i.zoomRect.node.getBoundingClientRect():i.selectionRect.node.getBoundingClientRect(),l=i.gridRect.getBoundingClientRect(),u=s.left-l.left-r.globals.barPadForNumericAxis,c=s.right-l.left-r.globals.barPadForNumericAxis,f=s.top-l.top,h=s.bottom-l.top;let m,b;r.globals.isRangeBar?(m=r.globals.yAxisScale[0].niceMin+u*a.invertedYRatio,b=r.globals.yAxisScale[0].niceMin+c*a.invertedYRatio):(m=r.globals.xAxisScale.niceMin+u*a.xRatio,b=r.globals.xAxisScale.niceMin+c*a.xRatio);let _=[],y=[];if(r.config.yaxis.forEach((x,C)=>{let A=r.globals.seriesYAxisMap[C][0],R=r.globals.yAxisScale[C].niceMax-a.yRatio[A]*f,I=r.globals.yAxisScale[C].niceMax-a.yRatio[A]*h;_.push(R),y.push(I)}),i.dragged&&(i.dragX>10||i.dragY>10)&&m!==b){if(r.globals.zoomEnabled){let x=Ee.clone(r.globals.initialConfig.yaxis),C=Ee.clone(r.globals.initialConfig.xaxis);if(r.globals.zoomed=!0,r.config.xaxis.convertedCatToNumeric&&(m=Math.floor(m),b=Math.floor(b),m<1&&(m=1,b=r.globals.dataPoints),b-m<2&&(b=m+1)),(n==="xy"||n==="x")&&(C={min:m,max:b}),(n==="xy"||n==="y")&&x.forEach((R,I)=>{x[I].min=y[I],x[I].max=_[I]}),o){let R=o.getBeforeZoomRange(C,x);R&&(C=R.xaxis?R.xaxis:C,x=R.yaxis?R.yaxis:x)}let A={xaxis:C};r.config.chart.group||(A.yaxis=x),i.ctx.updateHelpers._updateOptions(A,!1,i.w.config.chart.animations.dynamicAnimation.enabled),typeof r.config.chart.events.zoomed=="function"&&o.zoomCallback(C,x)}else if(r.globals.selectionEnabled){let x=null,C=null;C={min:m,max:b},(n==="xy"||n==="y")&&(x=Ee.clone(r.config.yaxis),x.forEach((A,R)=>{x[R].min=y[R],x[R].max=_[R]})),r.globals.selection=i.selection,typeof r.config.chart.events.selection=="function"&&r.config.chart.events.selection(i.ctx,{xaxis:C,yaxis:x})}}}panDragging({context:e}){const n=this.w;let r=e;if(typeof n.globals.lastClientPosition.x<"u"){const o=n.globals.lastClientPosition.x-r.clientX,s=n.globals.lastClientPosition.y-r.clientY;Math.abs(o)>Math.abs(s)&&o>0?this.moveDirection="left":Math.abs(o)>Math.abs(s)&&o<0?this.moveDirection="right":Math.abs(s)>Math.abs(o)&&s>0?this.moveDirection="up":Math.abs(s)>Math.abs(o)&&s<0&&(this.moveDirection="down")}n.globals.lastClientPosition={x:r.clientX,y:r.clientY};let i=n.globals.isRangeBar?n.globals.minY:n.globals.minX,a=n.globals.isRangeBar?n.globals.maxY:n.globals.maxX;r.panScrolled(i,a)}panScrolled(e,n){const r=this.w,i=this.xyRatios;let a=Ee.clone(r.globals.initialConfig.yaxis),o=i.xRatio,s=r.globals.minX,l=r.globals.maxX;r.globals.isRangeBar&&(o=i.invertedYRatio,s=r.globals.minY,l=r.globals.maxY),this.moveDirection==="left"?(e=s+r.globals.gridWidth/15*o,n=l+r.globals.gridWidth/15*o):this.moveDirection==="right"&&(e=s-r.globals.gridWidth/15*o,n=l-r.globals.gridWidth/15*o),r.globals.isRangeBar||(er.globals.initialMaxX)&&(e=s,n=l);let c={xaxis:{min:e,max:n}};r.config.chart.group||(c.yaxis=a),this.updateScrolledChart(c,e,n)}updateScrolledChart(e,n,r){const i=this.w;if(this.ctx.updateHelpers._updateOptions(e,!1,!1),typeof i.config.chart.events.scrolled=="function"){const a={xaxis:{min:n,max:r}};i.config.chart.events.scrolled(this.ctx,a),this.ctx.events.fireEvent("scrolled",a)}}}class Jhe{constructor(e){this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}getNearestValues({hoverArea:e,elGrid:n,clientX:r,clientY:i}){let a=this.w;const o=n.getBoundingClientRect(),s=o.width,l=o.height;let u=s/(a.globals.dataPoints-1),c=l/a.globals.dataPoints;const f=this.hasBars();(a.globals.comboCharts||f)&&!a.config.xaxis.convertedCatToNumeric&&(u=s/a.globals.dataPoints);let h=r-o.left-a.globals.barPadForNumericAxis,m=i-o.top;h<0||m<0||h>s||m>l?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):a.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):a.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));let _=Math.round(h/u),y=Math.floor(m/c);f&&!a.config.xaxis.convertedCatToNumeric&&(_=Math.ceil(h/u),_=_-1);let x=null,C=null,A=a.globals.seriesXvalues.map(I=>I.filter(O=>Ee.isNumber(O))),R=a.globals.seriesYvalues.map(I=>I.filter(O=>Ee.isNumber(O)));if(a.globals.isXNumeric){const O=this.ttCtx.getElGrid().getBoundingClientRect(),N=h*(O.width/s),k=m*(O.height/l);C=this.closestInMultiArray(N,k,A,R),x=C.index,_=C.j,x!==null&&a.globals.hasNullValues&&(A=a.globals.seriesXvalues[x],C=this.closestInArray(N,A),_=C.j)}return a.globals.capturedSeriesIndex=x===null?-1:x,(!_||_<1)&&(_=0),a.globals.isBarHorizontal?a.globals.capturedDataPointIndex=y:a.globals.capturedDataPointIndex=_,{capturedSeries:x,j:a.globals.isBarHorizontal?y:_,hoverX:h,hoverY:m}}getFirstActiveXArray(e){const n=this.w;let r=0,i=e.map((a,o)=>a.length>0?o:-1);for(let a=0;aa.globals.collapsedSeriesIndices.indexOf(c)===-1&&a.globals.ancillaryCollapsedSeriesIndices.indexOf(c)===-1;let s=1/0,l=null,u=null;for(let c=0;ctypeof a[0]<"u");if(i.length>0)for(let a=0;a{var o;return!((o=this.w.globals.collapsedSeriesIndices)!=null&&o.includes(a))}))||[];for(let i=0;ii+a.getBBox().height,0)}getElMarkers(e){return typeof e=="number"?this.w.globals.dom.baseEl.querySelectorAll(`.apexcharts-series[data\\:realIndex='${e}'] .apexcharts-series-markers-wrap > *`):this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap > *")}getAllMarkers(e=!1){let n=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");n=[...n],e&&(n=n.filter(i=>{const a=Number(i.getAttribute("data:realIndex"));return this.w.globals.collapsedSeriesIndices.indexOf(a)===-1})),n.sort((i,a)=>{var o=Number(i.getAttribute("data:realIndex")),s=Number(a.getAttribute("data:realIndex"));return so?-1:0});let r=[];return n.forEach(i=>{r.push(i.querySelector(".apexcharts-marker"))}),r}hasMarkers(e){return this.getElMarkers(e).length>0}getPathFromPoint(e,n){let r=Number(e.getAttribute("cx")),i=Number(e.getAttribute("cy")),a=e.getAttribute("shape");return new at(this.ctx).getMarkerPath(r,i,a,n)}getElBars(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}hasBars(){return this.getElBars().length>0}getHoverMarkerSize(e){const n=this.w;let r=n.config.markers.hover.size;return r===void 0&&(r=n.globals.markers.size[e]+n.config.markers.hover.sizeOffset),r}toggleAllTooltipSeriesGroups(e){let n=this.w;const r=this.ttCtx;r.allTooltipSeriesGroups.length===0&&(r.allTooltipSeriesGroups=n.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));let i=r.allTooltipSeriesGroups;for(let a=0;al.globals.seriesGoals[x]&&l.globals.seriesGoals[x][n]&&Array.isArray(l.globals.seriesGoals[x][n]),{xVal:h,zVal:m,xAxisTTVal:b}=r;let _="",y=l.globals.colors[e];n!==null&&l.config.plotOptions.bar.distributed&&(y=l.globals.colors[n]);for(let x=0,C=l.globals.series.length-1;x{var N,k,D,P;return l.globals.isRangeData?A.yLbFormatter((k=(N=l.globals.seriesRangeStart)==null?void 0:N[O])==null?void 0:k[n],{series:l.globals.seriesRangeStart,seriesIndex:O,dataPointIndex:n,w:l})+" - "+A.yLbFormatter((P=(D=l.globals.seriesRangeEnd)==null?void 0:D[O])==null?void 0:P[n],{series:l.globals.seriesRangeEnd,seriesIndex:O,dataPointIndex:n,w:l}):A.yLbFormatter(l.globals.series[O][n],{series:l.globals.series,seriesIndex:O,dataPointIndex:n,w:l})};if(a)A=this.getFormatters(R),_=this.getSeriesName({fn:A.yLbTitleFormatter,index:R,seriesIndex:e,j:n}),y=l.globals.colors[R],u=I(R),f(R)&&(c=l.globals.seriesGoals[R][n].map(O=>({attrs:O,val:A.yLbFormatter(O.value,{seriesIndex:R,dataPointIndex:n,w:l})})));else{const O=(s=o?.target)==null?void 0:s.getAttribute("fill");O&&(O.indexOf("url")!==-1?O.indexOf("Pattern")!==-1&&(y=l.globals.dom.baseEl.querySelector(O.substr(4).slice(0,-1)).childNodes[0].getAttribute("stroke")):y=O),u=I(e),f(e)&&Array.isArray(l.globals.seriesGoals[e][n])&&(c=l.globals.seriesGoals[e][n].map(N=>({attrs:N,val:A.yLbFormatter(N.value,{seriesIndex:e,dataPointIndex:n,w:l})})))}}n===null&&(u=A.yLbFormatter(l.globals.series[e],rr(vn({},l),{seriesIndex:e,dataPointIndex:e}))),this.DOMHandling({i:e,t:R,j:n,ttItems:i,values:{val:u,goalVals:c,xVal:h,xAxisTTVal:b,zVal:m},seriesName:_,shared:a,pColor:y})}}getFormatters(e){const n=this.w;let r=n.globals.yLabelFormatters[e],i;return n.globals.ttVal!==void 0?Array.isArray(n.globals.ttVal)?(r=n.globals.ttVal[e]&&n.globals.ttVal[e].formatter,i=n.globals.ttVal[e]&&n.globals.ttVal[e].title&&n.globals.ttVal[e].title.formatter):(r=n.globals.ttVal.formatter,typeof n.globals.ttVal.title.formatter=="function"&&(i=n.globals.ttVal.title.formatter)):i=n.config.tooltip.y.title.formatter,typeof r!="function"&&(n.globals.yLabelFormatters[0]?r=n.globals.yLabelFormatters[0]:r=function(a){return a}),typeof i!="function"&&(i=function(a){return a?a+": ":""}),{yLbFormatter:r,yLbTitleFormatter:i}}getSeriesName({fn:e,index:n,seriesIndex:r,j:i}){const a=this.w;return e(String(a.globals.seriesNames[n]),{series:a.globals.series,seriesIndex:r,dataPointIndex:i,w:a})}DOMHandling({t:e,j:n,ttItems:r,values:i,seriesName:a,shared:o,pColor:s}){const l=this.w,u=this.ttCtx,{val:c,goalVals:f,xVal:h,xAxisTTVal:m,zVal:b}=i;let _=null;_=r[e].children,l.config.tooltip.fillSeriesColor&&(r[e].style.backgroundColor=s,_[0].style.display="none"),u.showTooltipTitle&&(u.tooltipTitle===null&&(u.tooltipTitle=l.globals.dom.baseEl.querySelector(".apexcharts-tooltip-title")),u.tooltipTitle.innerHTML=h),u.isXAxisTooltipEnabled&&(u.xaxisTooltipText.innerHTML=m!==""?m:h);const y=r[e].querySelector(".apexcharts-tooltip-text-y-label");y&&(y.innerHTML=a||"");const x=r[e].querySelector(".apexcharts-tooltip-text-y-value");x&&(x.innerHTML=typeof c<"u"?c:""),_[0]&&_[0].classList.contains("apexcharts-tooltip-marker")&&(l.config.tooltip.marker.fillColors&&Array.isArray(l.config.tooltip.marker.fillColors)&&(s=l.config.tooltip.marker.fillColors[e]),l.config.tooltip.fillSeriesColor?_[0].style.backgroundColor=s:_[0].style.color=s),l.config.tooltip.marker.show||(_[0].style.display="none");const C=r[e].querySelector(".apexcharts-tooltip-text-goals-label"),A=r[e].querySelector(".apexcharts-tooltip-text-goals-value");if(f.length&&l.globals.seriesGoals[e]){const R=()=>{let I="
",O="
";f.forEach(N=>{I+=`
${N.attrs.name}
`,O+=`
${N.val}
`}),C.innerHTML=I+"
",A.innerHTML=O+"
"};o?l.globals.seriesGoals[e][n]&&Array.isArray(l.globals.seriesGoals[e][n])?R():(C.innerHTML="",A.innerHTML=""):R()}else C.innerHTML="",A.innerHTML="";if(b!==null){const R=r[e].querySelector(".apexcharts-tooltip-text-z-label");R.innerHTML=l.config.tooltip.z.title;const I=r[e].querySelector(".apexcharts-tooltip-text-z-value");I.innerHTML=typeof b<"u"?b:""}if(o&&_[0]){if(l.config.tooltip.hideEmptySeries){let R=r[e].querySelector(".apexcharts-tooltip-marker"),I=r[e].querySelector(".apexcharts-tooltip-text");parseFloat(c)==0?(R.style.display="none",I.style.display="none"):(R.style.display="block",I.style.display="block")}typeof c>"u"||c===null||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1||Array.isArray(u.tConfig.enabledOnSeries)&&u.tConfig.enabledOnSeries.indexOf(e)===-1?_[0].parentNode.style.display="none":_[0].parentNode.style.display=l.config.tooltip.items.display}else Array.isArray(u.tConfig.enabledOnSeries)&&u.tConfig.enabledOnSeries.indexOf(e)===-1&&(_[0].parentNode.style.display="none")}toggleActiveInactiveSeries(e,n){const r=this.w;if(e)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");let i=r.globals.dom.baseEl.querySelector(`.apexcharts-tooltip-series-group-${n}`);i&&(i.classList.add("apexcharts-active"),i.style.display=r.config.tooltip.items.display)}}getValuesToPrint({i:e,j:n}){const r=this.w,i=this.ctx.series.filteredSeriesX();let a="",o="",s=null,l=null;const u={series:r.globals.series,seriesIndex:e,dataPointIndex:n,w:r};let c=r.globals.ttZFormatter;if(n===null)l=r.globals.series[e];else if(r.globals.isXNumeric&&r.config.chart.type!=="treemap"){if(a=i[e][n],i[e].length===0){const h=this.tooltipUtil.getFirstActiveXArray(i);a=i[h][n]}}else new LF(this.ctx).isFormatXY()?a=typeof r.config.series[e].data[n]<"u"?r.config.series[e].data[n].x:"":a=typeof r.globals.labels[n]<"u"?r.globals.labels[n]:"";let f=a;return r.globals.isXNumeric&&r.config.xaxis.type==="datetime"?a=new cx(this.ctx).xLabelFormat(r.globals.ttKeyFormatter,f,f,{i:void 0,dateFormatter:new Ao(this.ctx).formatDate,w:this.w}):r.globals.isBarHorizontal?a=r.globals.yLabelFormatters[0](f,u):a=r.globals.xLabelFormatter(f,u),r.config.tooltip.x.formatter!==void 0&&(a=r.globals.ttKeyFormatter(f,u)),r.globals.seriesZ.length>0&&r.globals.seriesZ[e].length>0&&(s=c(r.globals.seriesZ[e][n],r)),typeof r.config.xaxis.tooltip.formatter=="function"?o=r.globals.xaxisTooltipFormatter(f,u):o=a,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(a)?a.join(" "):a,xAxisTTVal:Array.isArray(o)?o.join(" "):o,zVal:s}}handleCustomTooltip({i:e,j:n,y1:r,y2:i,w:a}){const o=this.ttCtx.getElTooltip();let s=a.config.tooltip.custom;Array.isArray(s)&&s[e]&&(s=s[e]);const l=s({ctx:this.ctx,series:a.globals.series,seriesIndex:e,dataPointIndex:n,y1:r,y2:i,w:a});typeof l=="string"||typeof l=="number"?o.innerHTML=l:(l instanceof Element||typeof l.nodeName=="string")&&(o.innerHTML="",o.appendChild(l.cloneNode(!0)))}}class ege{constructor(e){this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}moveXCrosshairs(e,n=null){const r=this.ttCtx;let i=this.w;const a=r.getElXCrosshairs();let o=e-r.xcrosshairsWidth/2,s=i.globals.labels.slice().length;if(n!==null&&(o=i.globals.gridWidth/s*n),a!==null&&!i.globals.isBarHorizontal&&(a.setAttribute("x",o),a.setAttribute("x1",o),a.setAttribute("x2",o),a.setAttribute("y2",i.globals.gridHeight),a.classList.add("apexcharts-active")),o<0&&(o=0),o>i.globals.gridWidth&&(o=i.globals.gridWidth),r.isXAxisTooltipEnabled){let l=o;(i.config.xaxis.crosshairs.width==="tickWidth"||i.config.xaxis.crosshairs.width==="barWidth")&&(l=o+r.xcrosshairsWidth/2),this.moveXAxisTooltip(l)}}moveYCrosshairs(e){const n=this.ttCtx;n.ycrosshairs!==null&&at.setAttrs(n.ycrosshairs,{y1:e,y2:e}),n.ycrosshairsHidden!==null&&at.setAttrs(n.ycrosshairsHidden,{y1:e,y2:e})}moveXAxisTooltip(e){let n=this.w;const r=this.ttCtx;if(r.xaxisTooltip!==null&&r.xcrosshairsWidth!==0){r.xaxisTooltip.classList.add("apexcharts-active");let i=r.xaxisOffY+n.config.xaxis.tooltip.offsetY+n.globals.translateY+1+n.config.xaxis.offsetY,o=r.xaxisTooltip.getBoundingClientRect().width;if(e=e-o/2,!isNaN(e)){e=e+n.globals.translateX;let s=0;s=new at(this.ctx).getTextRects(r.xaxisTooltipText.innerHTML),r.xaxisTooltipText.style.minWidth=s.width+"px",r.xaxisTooltip.style.left=e+"px",r.xaxisTooltip.style.top=i+"px"}}}moveYAxisTooltip(e){const n=this.w,r=this.ttCtx;r.yaxisTTEls===null&&(r.yaxisTTEls=n.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));const i=parseInt(r.ycrosshairsHidden.getAttribute("y1"),10);let a=n.globals.translateY+i;const o=r.yaxisTTEls[e].getBoundingClientRect(),s=o.height;let l=n.globals.translateYAxisX[e]-2;n.config.yaxis[e].opposite&&(l=l-o.width),a=a-s/2,n.globals.ignoreYAxisIndexes.indexOf(e)===-1&&a>0&&ai.globals.gridWidth/2&&(u=u-s.ttWidth-l-10),u>i.globals.gridWidth-s.ttWidth-10&&(u=i.globals.gridWidth-s.ttWidth),u<-20&&(u=-20),i.config.tooltip.followCursor){const h=a.getElGrid().getBoundingClientRect();u=a.e.clientX-h.left,u>i.globals.gridWidth/2&&(u=u-a.tooltipRect.ttWidth),c=a.e.clientY+i.globals.translateY-h.top,c>i.globals.gridHeight/2&&(c=c-a.tooltipRect.ttHeight)}else i.globals.isBarHorizontal||s.ttHeight/2+c>i.globals.gridHeight&&(c=i.globals.gridHeight-s.ttHeight+i.globals.translateY);isNaN(u)||(u=u+i.globals.translateX,o.style.left=u+"px",o.style.top=c+"px")}moveMarkers(e,n){let r=this.w,i=this.ttCtx;if(r.globals.markers.size[e]>0){let a=r.globals.dom.baseEl.querySelectorAll(` .apexcharts-series[data\\:realIndex='${e}'] .apexcharts-marker`);for(let o=0;o0){const b=m.getAttribute("shape"),_=u.getMarkerPath(s,l,b,f*1.5);m.setAttribute("d",_)}this.moveXCrosshairs(s),o.fixedTooltip||this.moveTooltip(s,l,f)}moveDynamicPointsOnHover(e){const n=this.ttCtx;let r=n.w,i=0,a=0,o=0,s=r.globals.pointsArray,l=new _u(this.ctx);const u=new at(this.ctx);o=l.getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);let c=n.tooltipUtil.getHoverMarkerSize(o);if(s[o]&&(i=s[o][e][0],a=s[o][e][1]),isNaN(i))return;let f=n.tooltipUtil.getAllMarkers();if(f.length)for(let h=0;h"u"&&f.splice(h,0,null),m&&m.length){let b=s[h][e][1],_;f[h].setAttribute("cx",i);const y=f[h].getAttribute("shape");if(r.config.chart.type==="rangeArea"&&!r.globals.comboCharts){const x=e+r.globals.series[h].length;_=s[h][x][1];const C=Math.abs(b-_)/2;b=b-C}if(b!==null&&!isNaN(b)&&b0){const x=u.getMarkerPath(i,b,y,c);f[h].setAttribute("d",x)}else f[h].setAttribute("d","")}}this.moveXCrosshairs(i),n.fixedTooltip||this.moveTooltip(i,a||r.globals.gridHeight,c)}moveStickyTooltipOverBars(e,n){const r=this.w,i=this.ttCtx;let a=r.globals.columnSeries?r.globals.columnSeries.length:r.globals.series.length;r.config.chart.stacked&&(a=r.globals.barGroups.length);let o=a>=2&&a%2===0?Math.floor(a/2):Math.floor(a/2)+1;r.globals.isBarHorizontal&&(o=new _u(this.ctx).getActiveConfigSeriesIndex("desc")+1);let s=r.globals.dom.baseEl.querySelector(`.apexcharts-bar-series .apexcharts-series[rel='${o}'] path[j='${e}'], .apexcharts-candlestick-series .apexcharts-series[rel='${o}'] path[j='${e}'], .apexcharts-boxPlot-series .apexcharts-series[rel='${o}'] path[j='${e}'], .apexcharts-rangebar-series .apexcharts-series[rel='${o}'] path[j='${e}']`);!s&&typeof n=="number"&&(s=r.globals.dom.baseEl.querySelector(`.apexcharts-bar-series .apexcharts-series[data\\:realIndex='${n}'] path[j='${e}'], + .apexcharts-candlestick-series .apexcharts-series[data\\:realIndex='${n}'] path[j='${e}'], + .apexcharts-boxPlot-series .apexcharts-series[data\\:realIndex='${n}'] path[j='${e}'], + .apexcharts-rangebar-series .apexcharts-series[data\\:realIndex='${n}'] path[j='${e}']`));let l=s?parseFloat(s.getAttribute("cx")):0,u=s?parseFloat(s.getAttribute("cy")):0,c=s?parseFloat(s.getAttribute("barWidth")):0,h=i.getElGrid().getBoundingClientRect();const m=s&&(s.classList.contains("apexcharts-candlestick-area")||s.classList.contains("apexcharts-boxPlot-area"));r.globals.isXNumeric?(s&&!m&&(l=l-(a%2!==0?c/2:0)),s&&m&&(l=l-c/2)):r.globals.isBarHorizontal||(l=i.xAxisTicksPositions[e-1]+i.dataPointsDividedWidth/2,isNaN(l)&&(l=i.xAxisTicksPositions[e]-i.dataPointsDividedWidth/2)),r.globals.isBarHorizontal?u=u-i.tooltipRect.ttHeight:r.config.tooltip.followCursor?u=i.e.clientY-h.top-i.tooltipRect.ttHeight/2:u+i.tooltipRect.ttHeight+15>r.globals.gridHeight&&(u=r.globals.gridHeight),r.globals.isBarHorizontal||this.moveXCrosshairs(l),i.fixedTooltip||this.moveTooltip(l,u||r.globals.gridHeight)}}class pbt{constructor(e){this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ege(e)}drawDynamicPoints(){let e=this.w,n=new at(this.ctx),r=new V_(this.ctx),i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series");i=[...i],e.config.chart.stacked&&i.sort((a,o)=>parseFloat(a.getAttribute("data:realIndex"))-parseFloat(o.getAttribute("data:realIndex")));for(let a=0;a0){const a=this.ttCtx.tooltipUtil.getPathFromPoint(n[r],i);n[r].setAttribute("d",a)}else n[r].setAttribute("d","M0,0")}}}class hbt{constructor(e){this.w=e.w;const n=this.w;this.ttCtx=e,this.isVerticalGroupedRangeBar=!n.globals.isBarHorizontal&&n.config.chart.type==="rangeBar"&&n.config.plotOptions.bar.rangeBarGroupRows}getAttr(e,n){return parseFloat(e.target.getAttribute(n))}handleHeatTreeTooltip({e,opt:n,x:r,y:i,type:a}){const o=this.ttCtx,s=this.w;if(e.target.classList.contains(`apexcharts-${a}-rect`)){let l=this.getAttr(e,"i"),u=this.getAttr(e,"j"),c=this.getAttr(e,"cx"),f=this.getAttr(e,"cy"),h=this.getAttr(e,"width"),m=this.getAttr(e,"height");if(o.tooltipLabels.drawSeriesTexts({ttItems:n.ttItems,i:l,j:u,shared:!1,e}),s.globals.capturedSeriesIndex=l,s.globals.capturedDataPointIndex=u,r=c+o.tooltipRect.ttWidth/2+h,i=f+o.tooltipRect.ttHeight/2-m/2,o.tooltipPosition.moveXCrosshairs(c+h/2),r>s.globals.gridWidth/2&&(r=c-o.tooltipRect.ttWidth/2+h),o.w.config.tooltip.followCursor){let b=s.globals.dom.elWrap.getBoundingClientRect();r=s.globals.clientX-b.left-(r>s.globals.gridWidth/2?o.tooltipRect.ttWidth:0),i=s.globals.clientY-b.top-(i>s.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:r,y:i}}handleMarkerTooltip({e,opt:n,x:r,y:i}){let a=this.w;const o=this.ttCtx;let s,l;if(e.target.classList.contains("apexcharts-marker")){let u=parseInt(n.paths.getAttribute("cx"),10),c=parseInt(n.paths.getAttribute("cy"),10),f=parseFloat(n.paths.getAttribute("val"));if(l=parseInt(n.paths.getAttribute("rel"),10),s=parseInt(n.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,o.intersect){const h=Ee.findAncestor(n.paths,"apexcharts-series");h&&(s=parseInt(h.getAttribute("data:realIndex"),10))}if(o.tooltipLabels.drawSeriesTexts({ttItems:n.ttItems,i:s,j:l,shared:o.showOnIntersect?!1:a.config.tooltip.shared,e}),e.type==="mouseup"&&o.markerClick(e,s,l),a.globals.capturedSeriesIndex=s,a.globals.capturedDataPointIndex=l,r=u,i=c+a.globals.translateY-o.tooltipRect.ttHeight*1.4,o.w.config.tooltip.followCursor){const m=o.getElGrid().getBoundingClientRect();i=o.e.clientY+a.globals.translateY-m.top}f<0&&(i=c),o.marker.enlargeCurrentPoint(l,n.paths,r,i)}return{x:r,y:i}}handleBarTooltip({e,opt:n}){const r=this.w,i=this.ttCtx,a=i.getElTooltip();let o=0,s=0,l=0,u=0,c,f=this.getBarTooltipXY({e,opt:n});if(f.j===null&&f.barHeight===0&&f.barWidth===0)return;u=f.i;let h=f.j;if(r.globals.capturedSeriesIndex=u,r.globals.capturedDataPointIndex=h,r.globals.isBarHorizontal&&i.tooltipUtil.hasBars()||!r.config.tooltip.shared?(s=f.x,l=f.y,c=Array.isArray(r.config.stroke.width)?r.config.stroke.width[u]:r.config.stroke.width,o=s):!r.globals.comboCharts&&!r.config.tooltip.shared&&(o=o/2),isNaN(l)&&(l=r.globals.svgHeight-i.tooltipRect.ttHeight),s+i.tooltipRect.ttWidth>r.globals.gridWidth?s=s-i.tooltipRect.ttWidth:s<0&&(s=0),i.w.config.tooltip.followCursor){const b=i.getElGrid().getBoundingClientRect();l=i.e.clientY-b.top}i.tooltip===null&&(i.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?i.tooltipPosition.moveXCrosshairs(o+c/2):i.tooltipPosition.moveXCrosshairs(o)),!i.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&i.tooltipUtil.hasBars())&&(l=l+r.globals.translateY-i.tooltipRect.ttHeight/2,a.style.left=s+r.globals.translateX+"px",a.style.top=l+"px")}getBarTooltipXY({e,opt:n}){let r=this.w,i=null;const a=this.ttCtx;let o=0,s=0,l=0,u=0,c=0;const f=e.target.classList;if(f.contains("apexcharts-bar-area")||f.contains("apexcharts-candlestick-area")||f.contains("apexcharts-boxPlot-area")||f.contains("apexcharts-rangebar-area")){let h=e.target,m=h.getBoundingClientRect(),b=n.elGrid.getBoundingClientRect(),_=m.height;c=m.height;let y=m.width,x=parseInt(h.getAttribute("cx"),10),C=parseInt(h.getAttribute("cy"),10);u=parseFloat(h.getAttribute("barWidth"));const A=e.type==="touchmove"?e.touches[0].clientX:e.clientX;i=parseInt(h.getAttribute("j"),10),o=parseInt(h.parentNode.getAttribute("rel"),10)-1;let R=h.getAttribute("data-range-y1"),I=h.getAttribute("data-range-y2");r.globals.comboCharts&&(o=parseInt(h.parentNode.getAttribute("data:realIndex"),10));const O=k=>(r.globals.isXNumeric?k=x-y/2:this.isVerticalGroupedRangeBar?k=x+y/2:k=x-a.dataPointsDividedWidth+y/2,k),N=()=>C-a.dataPointsDividedHeight+_/2-a.tooltipRect.ttHeight/2;a.tooltipLabels.drawSeriesTexts({ttItems:n.ttItems,i:o,j:i,y1:R?parseInt(R,10):null,y2:I?parseInt(I,10):null,shared:a.showOnIntersect?!1:r.config.tooltip.shared,e}),r.config.tooltip.followCursor?r.globals.isBarHorizontal?(s=A-b.left+15,l=N()):(s=O(s),l=e.clientY-b.top-a.tooltipRect.ttHeight/2-15):r.globals.isBarHorizontal?(s=x,s0&&r.setAttribute("width",n.xcrosshairsWidth)}handleYCrosshair(){let e=this.w;const n=this.ttCtx;n.ycrosshairs=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),n.ycrosshairsHidden=e.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}drawYaxisTooltipText(e,n,r){const i=this.ttCtx,a=this.w,o=a.globals,s=o.seriesYAxisMap[e];if(i.yaxisTooltips[e]&&s.length>0){const l=o.yLabelFormatters[e],c=i.getElGrid().getBoundingClientRect(),f=s[0];let h=0;r.yRatio.length>1&&(h=f);const m=(n-c.top)*r.yRatio[h],b=o.maxYArr[f]-o.minYArr[f];let _=o.minYArr[f]+(b-m);a.config.yaxis[e].reversed&&(_=o.maxYArr[f]-(b-m)),i.tooltipPosition.moveYCrosshairs(n-c.top),i.yaxisTooltipText[e].innerHTML=l(_),i.tooltipPosition.moveYAxisTooltip(e)}}}class Yte{constructor(e){this.ctx=e,this.w=e.w;const n=this.w;this.tConfig=n.config.tooltip,this.tooltipUtil=new Jhe(this),this.tooltipLabels=new fbt(this),this.tooltipPosition=new ege(this),this.marker=new pbt(this),this.intersect=new hbt(this),this.axesTooltip=new gbt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!n.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now(),this.dimensionUpdateScheduled=!1}setupDimensionCache(){const e=this.w,n=this.getElTooltip();n&&(this.updateDimensionCache(),typeof ResizeObserver<"u"&&!e.globals.resizeObserver&&(e.globals.resizeObserver=new ResizeObserver(()=>{this.dimensionUpdateScheduled||(this.dimensionUpdateScheduled=!0,requestAnimationFrame(()=>{this.updateDimensionCache(),this.dimensionUpdateScheduled=!1}))}),e.globals.resizeObserver.observe(n)))}updateDimensionCache(){const e=this.w,n=this.getElTooltip();if(!n)return;const r=n.getBoundingClientRect();e.globals.dimensionCache.tooltip={width:r.width,height:r.height,lastUpdate:Date.now()}}getCachedDimensions(){const e=this.w;if(e.globals.dimensionCache.tooltip){const r=e.globals.dimensionCache.tooltip;if(Date.now()-r.lastUpdate<1e3)return{ttWidth:r.width,ttHeight:r.height}}this.updateDimensionCache();const n=e.globals.dimensionCache.tooltip;return n?{ttWidth:n.width,ttHeight:n.height}:{ttWidth:0,ttHeight:0}}getElTooltip(e){return e||(e=this),e.w.globals.dom.baseEl?e.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}getElXCrosshairs(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}getElGrid(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}drawTooltip(e){let n=this.w;this.xyRatios=e,this.isXAxisTooltipEnabled=n.config.xaxis.tooltip.enabled&&n.globals.axisCharts,this.yaxisTooltips=n.config.yaxis.map(a=>!!(a.show&&a.tooltip.enabled&&n.globals.axisCharts)),this.allTooltipSeriesGroups=[],n.globals.axisCharts||(this.showTooltipTitle=!1);const r=document.createElement("div");if(r.classList.add("apexcharts-tooltip"),n.config.tooltip.cssClass&&r.classList.add(n.config.tooltip.cssClass),r.classList.add(`apexcharts-theme-${this.tConfig.theme||"light"}`),n.config.chart.accessibility.enabled&&n.config.chart.accessibility.announcements.enabled&&(r.setAttribute("role","tooltip"),r.setAttribute("aria-live","polite"),r.setAttribute("aria-atomic","true"),r.setAttribute("aria-hidden","true")),n.globals.dom.elWrap.appendChild(r),n.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();let a=new tS(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if((n.globals.comboCharts||this.tConfig.intersect||n.config.chart.type==="rangeBar")&&!this.tConfig.shared&&(this.showOnIntersect=!0),(n.config.markers.size===0||n.globals.markers.largestSize===0)&&this.marker.drawDynamicPoints(this),n.globals.collapsedSeries.length===n.globals.series.length)return;this.dataPointsDividedHeight=n.globals.gridHeight/n.globals.dataPoints,this.dataPointsDividedWidth=n.globals.gridWidth/n.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||n.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,r.appendChild(this.tooltipTitle));let i=n.globals.series.length;(n.globals.xyCharts||n.globals.comboCharts)&&this.tConfig.shared&&(this.showOnIntersect?i=1:i=n.globals.series.length),this.legendLabels=n.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(i),this.addSVGEvents(),this.setupDimensionCache()}createTTElements(e){const n=this.w;let r=[];const i=this.getElTooltip();for(let a=0;a{const h=document.createElement("div");h.classList.add(`apexcharts-tooltip-${f}-group`);let m=document.createElement("span");m.classList.add(`apexcharts-tooltip-text-${f}-label`),h.appendChild(m);let b=document.createElement("span");b.classList.add(`apexcharts-tooltip-text-${f}-value`),h.appendChild(b),c.appendChild(h)}),o.appendChild(c),i.appendChild(o),r.push(o)}return r}addSVGEvents(){const e=this.w;let n=e.config.chart.type;const r=this.getElTooltip(),i=n==="bar"||n==="candlestick"||n==="boxPlot"||n==="rangeBar",a=n==="area"||n==="line"||n==="scatter"||n==="bubble"||n==="radar";let o=e.globals.dom.Paper.node;const s=this.getElGrid();s&&(this.seriesBound=s.getBoundingClientRect());let l=[],u=[],c={hoverArea:o,elGrid:s,tooltipEl:r,tooltipY:l,tooltipX:u,ttItems:this.ttItems},f;if(e.globals.axisCharts&&(a?f=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker"):i?f=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area"):(n==="heatmap"||n==="treemap")&&(f=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap")),f&&f.length))for(let m=0;m0&&this.addPathsEventListeners(m,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}drawFixedTooltipRect(){let e=this.w;const n=this.getElTooltip();let r=n.getBoundingClientRect(),i=r.width+10,a=r.height+10,o=this.tConfig.fixed.offsetX,s=this.tConfig.fixed.offsetY;const l=this.tConfig.fixed.position.toLowerCase();return l.indexOf("right")>-1&&(o=o+e.globals.svgWidth-i+10),l.indexOf("bottom")>-1&&(s=s+e.globals.svgHeight-a-10),n.style.left=o+"px",n.style.top=s+"px",{x:o,y:s,ttWidth:i,ttHeight:a}}addDatapointEventsListeners(e){let r=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(r,e)}addPathsEventListeners(e,n){let r=this;for(let i=0;ie[i].addEventListener(s,r.onSeriesHover.bind(r,a),{capture:!1,passive:!0}))}}onSeriesHover(e,n){const i=Date.now()-this.lastHoverTime;i>=20?this.seriesHover(e,n):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout(()=>{this.seriesHover(e,n)},20-i))}seriesHover(e,n){this.lastHoverTime=Date.now();let r=[];const i=this.w;i.config.chart.group&&(r=this.ctx.getGroupedCharts()),!(i.globals.axisCharts&&(i.globals.minX===-1/0&&i.globals.maxX===1/0||i.globals.dataPoints===0))&&(r.length?r.forEach(a=>{const o=this.getElTooltip(a),s={paths:e.paths,tooltipEl:o,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===this.w.globals.minX&&a.w.globals.maxX===this.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:s,e:n})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:e,e:n}))}seriesHoverByContext({chartCtx:e,ttCtx:n,opt:r,e:i}){let a=e.w;if(!this.getElTooltip(e))return;const s=n.getCachedDimensions();n.tooltipRect={x:0,y:0,ttWidth:s.ttWidth,ttHeight:s.ttHeight},n.e=i,n.tooltipUtil.hasBars()&&!a.globals.comboCharts&&!n.isBarShared&&this.tConfig.onDatasetHover.highlightDataSeries&&new _u(e).toggleSeriesOnHover(i,i.target.parentNode),a.globals.axisCharts?n.axisChartsTooltips({e:i,opt:r,tooltipRect:n.tooltipRect}):n.nonAxisChartsTooltips({e:i,opt:r,tooltipRect:n.tooltipRect}),n.fixedTooltip&&n.drawFixedTooltipRect()}axisChartsTooltips({e,opt:n}){let r=this.w,i,a,o=n.elGrid.getBoundingClientRect();const s=e.type==="touchmove"?e.touches[0].clientX:e.clientX,l=e.type==="touchmove"?e.touches[0].clientY:e.clientY;if(this.clientY=l,this.clientX=s,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height){this.handleMouseOut(n);return}if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){const m=parseInt(n.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(m)<0){this.handleMouseOut(n);return}}const u=this.getElTooltip(),c=this.getElXCrosshairs();let f=[];r.config.chart.group&&(f=this.ctx.getSyncedCharts());let h=r.globals.xyCharts||r.config.chart.type==="bar"&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(e.type==="mousemove"||e.type==="touchmove"||e.type==="mouseup"){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;c!==null&&c.classList.add("apexcharts-active");const m=this.yaxisTooltips.filter(b=>b===!0);if(this.ycrosshairs!==null&&m.length&&this.ycrosshairs.classList.add("apexcharts-active"),h&&!this.showOnIntersect||f.length>1)this.handleStickyTooltip(e,s,l,n);else if(r.config.chart.type==="heatmap"||r.config.chart.type==="treemap"){let b=this.intersect.handleHeatTreeTooltip({e,opt:n,x:i,y:a,type:r.config.chart.type});i=b.x,a=b.y,u.style.left=i+"px",u.style.top=a+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e,opt:n}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e,opt:n,x:i,y:a});if(this.yaxisTooltips.length)for(let b=0;b{const u=l.getAttribute("data:default-text");l.innerHTML=decodeURIComponent(u)}))}handleStickyTooltip(e,n,r,i){const a=this.w;let o=this.tooltipUtil.getNearestValues({context:this,hoverArea:i.hoverArea,elGrid:i.elGrid,clientX:n,clientY:r}),s=o.j,l=o.capturedSeries;a.globals.collapsedSeriesIndices.includes(l)&&(l=null);const u=i.elGrid.getBoundingClientRect();if(o.hoverX<0||o.hoverX>u.width){this.handleMouseOut(i);return}if(l!==null)this.handleStickyCapturedSeries(e,l,i,s);else if(this.tooltipUtil.isXoverlap(s)||a.globals.isBarHorizontal){const c=a.globals.series.findIndex((f,h)=>!a.globals.collapsedSeriesIndices.includes(h));this.create(e,this,c,s,i.ttItems)}}handleStickyCapturedSeries(e,n,r,i){const a=this.w;if(!this.tConfig.shared&&a.globals.series[n][i]===null){this.handleMouseOut(r);return}if(typeof a.globals.series[n][i]<"u")this.tConfig.shared&&this.tooltipUtil.isXoverlap(i)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(e,this,n,i,r.ttItems):this.create(e,this,n,i,r.ttItems,!1);else if(this.tooltipUtil.isXoverlap(i)){const o=a.globals.series.findIndex((s,l)=>!a.globals.collapsedSeriesIndices.includes(l));this.create(e,this,o,i,r.ttItems)}}deactivateHoverFilter(){let e=this.w,n=new at(this.ctx),r=e.globals.dom.Paper.find(".apexcharts-bar-area");for(let i=0;i{const a=i.getAttribute("data:default-text");i.innerHTML=decodeURIComponent(a)})}markerClick(e,n,r){const i=this.w;typeof i.config.chart.events.markerClick=="function"&&i.config.chart.events.markerClick(e,this.ctx,{seriesIndex:n,dataPointIndex:r,w:i}),this.ctx.events.fireEvent("markerClick",[e,this.ctx,{seriesIndex:n,dataPointIndex:r,w:i}])}create(e,n,r,i,a,o=null){var s,l,u,c,f,h,m,b,_,y,x,C,A,R,I,O;let N=this.w,k=n;e.type==="mouseup"&&this.markerClick(e,r,i),o===null&&(o=this.tConfig.shared);const D=this.tooltipUtil.hasMarkers(r),P=this.tooltipUtil.getElBars(),j=()=>{N.globals.markers.largestSize>0?k.marker.enlargePoints(i):k.tooltipPosition.moveDynamicPointsOnHover(i)};if(N.config.legend.tooltipHoverFormatter){let z=N.config.legend.tooltipHoverFormatter,G=Array.from(this.legendLabels);G.forEach(Y=>{const H=Y.getAttribute("data:default-text");Y.innerHTML=decodeURIComponent(H)});for(let Y=0;Y0)){let z=new at(this.ctx),G=N.globals.dom.Paper.find(`.apexcharts-bar-area[j='${i}']`);this.deactivateHoverFilter(),k.tooltipUtil.getAllMarkers(!0).length&&!this.barSeriesHeight&&j(),k.tooltipPosition.moveStickyTooltipOverBars(i,r);for(let H=0;H5e4&&(r.globals.disableZoomOut=!0);const o=i.getTimeUnitsfromTimestamp(e,n,this.utc),s=r.globals.gridWidth/a,l=s/24,u=l/60,c=u/60;let f=Math.floor(a*24),h=Math.floor(a*tge),m=Math.floor(a*JL),b=Math.floor(a),_=Math.floor(a/30),y=Math.floor(a/365);const x={minMillisecond:o.minMillisecond,minSecond:o.minSecond,minMinute:o.minMinute,minHour:o.minHour,minDate:o.minDate,minMonth:o.minMonth,minYear:o.minYear};let C=x.minMillisecond,A=x.minSecond,R=x.minMinute,I=x.minHour,O=x.minDate,N=x.minDate,k=x.minMonth,D=x.minYear;const P={firstVal:x,currentMillisecond:C,currentSecond:A,currentMinute:R,currentHour:I,currentMonthDate:O,currentDate:N,currentMonth:k,currentYear:D,daysWidthOnXAxis:s,hoursWidthOnXAxis:l,minutesWidthOnXAxis:u,secondsWidthOnXAxis:c,numberOfSeconds:m,numberOfMinutes:h,numberOfHours:f,numberOfDays:b,numberOfMonths:_,numberOfYears:y};switch(this.tickInterval){case"years":{this.generateYearScale(P);break}case"months":case"half_year":{this.generateMonthScale(P);break}case"months_days":case"months_fortnight":case"days":case"week_days":{this.generateDayScale(P);break}case"hours":{this.generateHourScale(P);break}case"minutes_fives":case"minutes":this.generateMinuteScale(P);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(P);break}const j=this.timeScaleArray.map(z=>{let G={position:z.position,unit:z.unit,year:z.year,day:z.day?z.day:1,hour:z.hour?z.hour:0,month:z.month+1};return z.unit==="month"?rr(vn({},G),{day:1,value:z.value+1}):z.unit==="day"||z.unit==="hour"?rr(vn({},G),{value:z.value}):z.unit==="minute"?rr(vn({},G),{value:z.value,minute:z.value}):z.unit==="second"?rr(vn({},G),{value:z.value,minute:z.minute,second:z.second}):z});return j.filter(z=>{let G=1,Y=Math.ceil(r.globals.gridWidth/120),H=z.value;r.config.xaxis.tickAmount!==void 0&&(Y=r.config.xaxis.tickAmount),j.length>Y&&(G=Math.floor(j.length/Y));let W=!1,q=!1;switch(this.tickInterval){case"years":z.unit==="year"&&(W=!0);break;case"half_year":G=7,z.unit==="year"&&(W=!0);break;case"months":G=1,z.unit==="year"&&(W=!0);break;case"months_fortnight":G=15,(z.unit==="year"||z.unit==="month")&&(W=!0),H===30&&(q=!0);break;case"months_days":G=10,z.unit==="month"&&(W=!0),H===30&&(q=!0);break;case"week_days":G=8,z.unit==="month"&&(W=!0);break;case"days":G=1,z.unit==="month"&&(W=!0);break;case"hours":z.unit==="day"&&(W=!0);break;case"minutes_fives":H%5!==0&&(q=!0);break;case"seconds_tens":H%10!==0&&(q=!0);break;case"seconds_fives":H%5!==0&&(q=!0);break}if(this.tickInterval==="hours"||this.tickInterval==="minutes_fives"||this.tickInterval==="seconds_tens"||this.tickInterval==="seconds_fives"){if(!q)return!0}else if((H%G===0||W)&&!q)return!0})}recalcDimensionsBasedOnFormat(e){const n=this.w,r=this.formatDates(e),i=this.removeOverlappingTS(r);n.globals.timescaleLabels=i.slice(),new ST(this.ctx).plotCoords()}determineInterval(e){const n=e/365,r=e*24,i=r*60,a=i*60;switch(!0){case n>5:this.tickInterval="years";break;case e>800:this.tickInterval="half_year";break;case e>180:this.tickInterval="months";break;case e>90:this.tickInterval="months_fortnight";break;case e>60:this.tickInterval="months_days";break;case e>30:this.tickInterval="week_days";break;case e>2:this.tickInterval="days";break;case r>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case a>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds";break}}generateYearScale({firstVal:e,currentMonth:n,currentYear:r,daysWidthOnXAxis:i,numberOfYears:a}){let o=e.minYear,s=0;const l=new Ao(this.ctx);let u="year";if(e.minDate>1||e.minMonth>0){let h=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);s=(l.determineDaysOfYear(e.minYear)-h+1)*i,o=e.minYear+1,this.timeScaleArray.push({position:s,value:o,unit:u,year:o,month:Ee.monthMod(n+1)})}else e.minDate===1&&e.minMonth===0&&this.timeScaleArray.push({position:s,value:o,unit:u,year:r,month:Ee.monthMod(n+1)});let c=o,f=s;for(let h=0;h1){l=(u.determineDaysOfMonths(r+1,e.minYear)-n+1)*a,s=Ee.monthMod(r+1);let _=i+f,y=Ee.monthMod(s),x=s;s===0&&(c="year",x=_,y=1,f+=1,_=_+f),this.timeScaleArray.push({position:l,value:x,unit:c,year:_,month:y})}else this.timeScaleArray.push({position:l,value:s,unit:c,year:i,month:Ee.monthMod(r)});let h=s+1,m=l;for(let b=0,_=1;b{let R=o.determineDaysOfMonths(C+1,A);return x>R&&(C=C+1,u=1,s="month",b=C),C};let f=24-e.minHour,h=0,m=f*i,b=l,_=c(u,n,r);e.minHour===0&&e.minDate===1?(m=0,b=Ee.monthMod(e.minMonth),s="month",u=e.minDate):e.minDate!==1&&e.minHour===0&&e.minMinute===0&&(m=0,l=e.minDate,u=l,b=l,_=c(u,n,r),b!==1&&(s="day")),this.timeScaleArray.push({position:m,value:b,unit:s,year:this._getYear(r,_,h),month:Ee.monthMod(_),day:u});let y=m;for(let x=0;x{let O=s.determineDaysOfMonths(I+1,i);return R>O&&(y=1,I=I+1),{month:I,date:y}},f=(R,I)=>{let O=s.determineDaysOfMonths(I+1,i);return R>O&&(I=I+1),I};let h=60-(e.minMinute+e.minSecond/60),m=h*a,b=e.minHour+1,_=b;h===60&&(m=0,b=e.minHour,_=b);let y=n;_>=24&&(_=0,y+=1,u="day",b=y);let C=c(y,r).month;C=f(y,C),b>31&&(y=1,b=y),this.timeScaleArray.push({position:m,value:b,unit:u,day:y,hour:_,year:i,month:Ee.monthMod(C)}),_++;let A=m;for(let R=0;R=24&&(_=0,y+=1,u="day",C=c(y,C).month,C=f(y,C));let I=this._getYear(i,C,l);A=60*a+A;let O=_===0?y:_;this.timeScaleArray.push({position:A,value:O,unit:u,hour:_,day:y,year:I,month:Ee.monthMod(C)}),_++}}generateMinuteScale({currentMillisecond:e,currentSecond:n,currentMinute:r,currentHour:i,currentDate:a,currentMonth:o,currentYear:s,minutesWidthOnXAxis:l,secondsWidthOnXAxis:u,numberOfMinutes:c}){let f=0,h="minute",b=(60-n-e/1e3)*u,_=r+1,y=a,x=o,C=s,A=i,R=b;for(let I=0;I=60&&(_=0,A+=1,A===24&&(A=0)),this.timeScaleArray.push({position:R,value:_,unit:h,hour:A,minute:_,day:y,year:this._getYear(C,x,f),month:Ee.monthMod(x)}),R+=l,_++}generateSecondScale({currentMillisecond:e,currentSecond:n,currentMinute:r,currentHour:i,currentDate:a,currentMonth:o,currentYear:s,secondsWidthOnXAxis:l,numberOfSeconds:u}){let c=0,f="second",m=(1e3-e)/1e3*l,b=n+1,_=r,y=a,x=o,C=s,A=i,R=m;for(let I=0;I=60&&(_++,b=0,_>=60&&(A++,_=0,A===24&&(A=0))),this.timeScaleArray.push({position:R,value:b,unit:f,hour:A,minute:_,second:b,day:y,year:this._getYear(C,x,c),month:Ee.monthMod(x)}),R+=l,b++}createRawDateString(e,n){let r=e.year;return e.month===0&&(e.month=1),r+="-"+("0"+e.month.toString()).slice(-2),e.unit==="day"?r+=e.unit==="day"?"-"+("0"+n).slice(-2):"-01":r+="-"+("0"+(e.day?e.day:"1")).slice(-2),e.unit==="hour"?r+=e.unit==="hour"?"T"+("0"+n).slice(-2):"T00":r+="T"+("0"+(e.hour?e.hour:"0")).slice(-2),e.unit==="minute"?r+=":"+("0"+n).slice(-2):r+=":"+(e.minute?("0"+e.minute).slice(-2):"00"),e.unit==="second"?r+=":"+("0"+n).slice(-2):r+=":00",this.utc&&(r+=".000Z"),r}formatDates(e){const n=this.w;return e.map(i=>{let a=i.value.toString(),o=new Ao(this.ctx);const s=this.createRawDateString(i,a);let l=o.getDate(o.parseDate(s));if(this.utc||(l=o.getDate(o.parseDateWithTimezone(s))),n.config.xaxis.labels.format===void 0){let u="dd MMM";const c=n.config.xaxis.labels.datetimeFormatter;i.unit==="year"&&(u=c.year),i.unit==="month"&&(u=c.month),i.unit==="day"&&(u=c.day),i.unit==="hour"&&(u=c.hour),i.unit==="minute"&&(u=c.minute),i.unit==="second"&&(u=c.second),a=o.formatDate(l,u)}else a=o.formatDate(l,n.config.xaxis.labels.format);return{dateString:s,position:i.position,value:a,unit:i.unit,year:i.year,month:i.month}})}removeOverlappingTS(e){const n=new at(this.ctx);let r=!1,i;e.length>0&&e[0].value&&e.every(s=>s.value.length===e[0].value.length)&&(r=!0,i=n.getTextRects(e[0].value).width);let a=0,o=e.map((s,l)=>{if(l>0&&this.w.config.xaxis.labels.hideOverlappingLabels){const u=r?i:n.getTextRects(e[a].value).width,c=e[a].position;return s.position>c+u+10?(a=l,s):null}else return s});return o=o.filter(s=>s!==null),o}_getYear(e,n,r){return e+Math.floor(n/12)+r}}class _bt{constructor(e){this.w=e.w,this.barCtx=e,this.totalFormatter=this.w.config.plotOptions.bar.dataLabels.total.formatter,this.totalFormatter||(this.totalFormatter=this.w.config.dataLabels.formatter)}handleBarDataLabels(e){let{x:n,y:r,y1:i,y2:a,i:o,j:s,realIndex:l,columnGroupIndex:u,series:c,barHeight:f,barWidth:h,barXPosition:m,barYPosition:b,visibleSeries:_}=e,y=this.w,x=new at(this.barCtx.ctx),C=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[l]:this.barCtx.strokeWidth,A,R;y.globals.isXNumeric&&!y.globals.isBarHorizontal?(A=n+parseFloat(h*(_+1)),R=r+parseFloat(f*(_+1))-C):(A=n+parseFloat(h*_),R=r+parseFloat(f*_));let I=null,O=null,N=n,k=r,D={},P=y.config.dataLabels,j=this.barCtx.barOptions.dataLabels,M=this.barCtx.barOptions.dataLabels.total;typeof b<"u"&&this.barCtx.isRangeBar&&(R=b,k=b),typeof m<"u"&&this.barCtx.isVerticalGroupedRangeBar&&(A=m,N=m);const z=P.offsetX,G=P.offsetY;let Y={width:0,height:0};if(y.config.dataLabels.enabled){const W=y.globals.series[o][s];Y=x.getTextRects(y.config.dataLabels.formatter?y.config.dataLabels.formatter(W,rr(vn({},y),{seriesIndex:o,dataPointIndex:s,w:y})):y.globals.yLabelFormatters[0](W),parseFloat(P.style.fontSize))}const H={x:n,y:r,i:o,j:s,realIndex:l,columnGroupIndex:u,bcx:A,bcy:R,barHeight:f,barWidth:h,textRects:Y,strokeWidth:C,dataLabelsX:N,dataLabelsY:k,dataLabelsConfig:P,barDataLabelsConfig:j,barTotalDataLabelsConfig:M,offX:z,offY:G};return this.barCtx.isHorizontal?D=this.calculateBarsDataLabelsPosition(H):D=this.calculateColumnsDataLabelsPosition(H),I=this.drawCalculatedDataLabels({x:D.dataLabelsX,y:D.dataLabelsY,val:this.barCtx.isRangeBar?[i,a]:y.config.chart.stackType==="100%"?c[l][s]:y.globals.series[l][s],i:l,j:s,barWidth:h,barHeight:f,textRects:Y,dataLabelsConfig:P}),y.config.chart.stacked&&M.enabled&&(O=this.drawTotalDataLabels({x:D.totalDataLabelsX,y:D.totalDataLabelsY,barWidth:h,barHeight:f,realIndex:l,textAnchor:D.totalDataLabelsAnchor,val:this.getStackedTotalDataLabel({realIndex:l,j:s}),dataLabelsConfig:P,barTotalDataLabelsConfig:M})),{dataLabelsPos:D,dataLabels:I,totalDataLabels:O}}getStackedTotalDataLabel({realIndex:e,j:n}){const r=this.w;let i=this.barCtx.stackedSeriesTotals[n];return this.totalFormatter&&(i=this.totalFormatter(i,rr(vn({},r),{seriesIndex:e,dataPointIndex:n,w:r}))),i}calculateColumnsDataLabelsPosition(e){const n=this.w;let{i:r,j:i,realIndex:a,y:o,bcx:s,barWidth:l,barHeight:u,textRects:c,dataLabelsX:f,dataLabelsY:h,dataLabelsConfig:m,barDataLabelsConfig:b,barTotalDataLabelsConfig:_,strokeWidth:y,offX:x,offY:C}=e,A,R,I="middle",O=s;u=Math.abs(u);let N=n.config.plotOptions.bar.dataLabels.orientation==="vertical";const{zeroEncounters:k}=this.barCtx.barHelpers.getZeroValueEncounters({i:r,j:i});s=s-y/2;let D=n.globals.gridWidth/n.globals.dataPoints;this.barCtx.isVerticalGroupedRangeBar?f+=l/2:(n.globals.isXNumeric?f=s-l/2+x:f=s-D+l/2+x,!n.config.chart.stacked&&k>0&&n.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(f-=l*k)),N&&(f=f+c.height/2-y/2-2);let P=n.globals.series[r][i]<0,j=o;switch(this.barCtx.isReversed&&(j=o+(P?u:-u)),b.position){case"center":N?P?h=j-u/2+C:h=j+u/2-C:P?h=j-u/2+c.height/2+C:h=j+u/2+c.height/2-C;break;case"bottom":N?P?h=j-u+C:h=j+u-C:P?h=j-u+c.height+y+C:h=j+u-c.height/2+y-C;break;case"top":N?P?h=j+C:h=j-C:P?h=j-c.height/2-C:h=j+c.height+C;break}let M=j;if(n.globals.seriesGroups.forEach(z=>{var G;(G=this.barCtx[z.join(",")])==null||G.prevY.forEach(Y=>{P?M=Math.max(Y[i],M):M=Math.min(Y[i],M)})}),this.barCtx.lastActiveBarSerieIndex===a&&_.enabled){const Y=new at(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:a,j:i}),m.fontSize);P?A=M-Y.height/2-C-_.offsetY+18:A=M+Y.height+C+_.offsetY-18;let H=D;R=O+(n.globals.isXNumeric?-l*n.globals.barGroups.length/2:n.globals.barGroups.length*l/2-(n.globals.barGroups.length-1)*l-H)+_.offsetX}return n.config.chart.stacked||(h<0?h=0+y:h+c.height/3>n.globals.gridHeight&&(h=n.globals.gridHeight-y)),{bcx:s,bcy:o,dataLabelsX:f,dataLabelsY:h,totalDataLabelsX:R,totalDataLabelsY:A,totalDataLabelsAnchor:I}}calculateBarsDataLabelsPosition(e){const n=this.w;let{x:r,i,j:a,realIndex:o,bcy:s,barHeight:l,barWidth:u,textRects:c,dataLabelsX:f,strokeWidth:h,dataLabelsConfig:m,barDataLabelsConfig:b,barTotalDataLabelsConfig:_,offX:y,offY:x}=e,C=n.globals.gridHeight/n.globals.dataPoints;const{zeroEncounters:A}=this.barCtx.barHelpers.getZeroValueEncounters({i,j:a});u=Math.abs(u);let R=s-(this.barCtx.isRangeBar?0:C)+l/2+c.height/2+x-3;!n.config.chart.stacked&&A>0&&n.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(R-=l*A);let I,O,N="start",k=n.globals.series[i][a]<0,D=r;switch(this.barCtx.isReversed&&(D=r+(k?-u:u),N=k?"start":"end"),b.position){case"center":k?f=D+u/2-y:f=Math.max(c.width/2,D-u/2)+y;break;case"bottom":k?f=D+u-h-y:f=D-u+h+y;break;case"top":k?f=D-h-y:f=D-h+y;break}let P=D;if(n.globals.seriesGroups.forEach(j=>{var M;(M=this.barCtx[j.join(",")])==null||M.prevX.forEach(z=>{k?P=Math.min(z[a],P):P=Math.max(z[a],P)})}),this.barCtx.lastActiveBarSerieIndex===o&&_.enabled){const M=new at(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:o,j:a}),m.fontSize);k?(I=P-h-y-_.offsetX,N="end"):I=P+y+_.offsetX+(this.barCtx.isReversed?-(u+h):h),O=R-c.height/2+M.height/2+_.offsetY+h,n.globals.barGroups.length>1&&(O=O-n.globals.barGroups.length/2*(l/2))}return n.config.chart.stacked||(m.textAnchor==="start"?f-c.width<0?f=k?c.width+h:h:f+c.width>n.globals.gridWidth&&(f=k?n.globals.gridWidth-h:n.globals.gridWidth-c.width-h):m.textAnchor==="middle"?f-c.width/2<0?f=c.width/2+h:f+c.width/2>n.globals.gridWidth&&(f=n.globals.gridWidth-c.width/2-h):m.textAnchor==="end"&&(f<1?f=c.width+h:f+1>n.globals.gridWidth&&(f=n.globals.gridWidth-c.width-h))),{bcx:r,bcy:s,dataLabelsX:f,dataLabelsY:R,totalDataLabelsX:I,totalDataLabelsY:O,totalDataLabelsAnchor:N}}drawCalculatedDataLabels({x:e,y:n,val:r,i,j:a,textRects:o,barHeight:s,barWidth:l,dataLabelsConfig:u}){const c=this.w;let f="rotate(0)";c.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(f=`rotate(-90, ${e}, ${n})`);const h=new u_(this.barCtx.ctx),m=new at(this.barCtx.ctx),b=u.formatter;let _=null;const y=c.globals.collapsedSeriesIndices.indexOf(i)>-1;if(u.enabled&&!y){_=m.group({class:"apexcharts-data-labels",transform:f});let x="";typeof r<"u"&&(x=b(r,rr(vn({},c),{seriesIndex:i,dataPointIndex:a,w:c}))),!r&&c.config.plotOptions.bar.hideZeroBarsWhenGrouped&&(x="");let C=c.globals.series[i][a]<0,A=c.config.plotOptions.bar.dataLabels.position;if(c.config.plotOptions.bar.dataLabels.orientation==="vertical"&&(A==="top"&&(C?u.textAnchor="end":u.textAnchor="start"),A==="center"&&(u.textAnchor="middle"),A==="bottom"&&(C?u.textAnchor="end":u.textAnchor="start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels){const I=m.getTextRects(x,parseFloat(u.style.fontSize));lMath.abs(l)&&(x=""):o.height/1.6>Math.abs(s)&&(x=""));let R=vn({},u);this.barCtx.isHorizontal&&r<0&&(u.textAnchor==="start"?R.textAnchor="end":u.textAnchor==="end"&&(R.textAnchor="start")),h.plotDataLabelsText({x:e,y:n,text:x,i,j:a,parent:_,dataLabelsConfig:R,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return _}drawTotalDataLabels({x:e,y:n,val:r,realIndex:i,textAnchor:a,barTotalDataLabelsConfig:o}){const s=new at(this.barCtx.ctx);let l;return o.enabled&&typeof e<"u"&&typeof n<"u"&&this.barCtx.lastActiveBarSerieIndex===i&&(l=s.drawText({x:e,y:n,foreColor:o.style.color,text:r,textAnchor:a,fontFamily:o.style.fontFamily,fontSize:o.style.fontSize,fontWeight:o.style.fontWeight})),l}}let vbt=class{constructor(e){this.w=e.w,this.barCtx=e}initVariables(e){const n=this.w;this.barCtx.series=e,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(let r=0;r0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=e[r].length),n.globals.isXNumeric)for(let i=0;in.globals.minX&&n.globals.seriesX[r][i]r.map(i=>"none"))),this.barCtx.seriesLen===0&&(this.barCtx.seriesLen=1),this.barCtx.zeroSerieses=[],n.globals.comboCharts||this.checkZeroSeries({series:e})}initialPositions(e){let n=this.w,r,i,a,o,s,l,u,c,f=n.globals.dataPoints;this.barCtx.isRangeBar&&(f=n.globals.labels.length);let h=this.barCtx.seriesLen;if(n.config.plotOptions.bar.rangeBarGroupRows&&(h=1),this.barCtx.isHorizontal)a=n.globals.gridHeight/f,s=a/h,n.globals.isXNumeric&&(a=n.globals.gridHeight/this.barCtx.totalItems,s=a/this.barCtx.seriesLen),s=s*parseInt(this.barCtx.barOptions.barHeight,10)/100,String(this.barCtx.barOptions.barHeight).indexOf("%")===-1&&(s=parseInt(this.barCtx.barOptions.barHeight,10)),c=this.barCtx.baseLineInvertedY+n.globals.padHorizontal+(this.barCtx.isReversed?n.globals.gridWidth:0)-(this.barCtx.isReversed?this.barCtx.baseLineInvertedY*2:0),this.barCtx.isFunnel&&(c=n.globals.gridWidth/2),i=(a-s*this.barCtx.seriesLen)/2;else{if(o=n.globals.gridWidth/this.barCtx.visibleItems,n.config.xaxis.convertedCatToNumeric&&(o=n.globals.gridWidth/n.globals.dataPoints),l=o/h*parseInt(this.barCtx.barOptions.columnWidth,10)/100,n.globals.isXNumeric){let m=this.barCtx.xRatio;n.globals.minXDiff&&n.globals.minXDiff!==.5&&n.globals.minXDiff/m>0&&(o=n.globals.minXDiff/m),l=o/h*parseInt(this.barCtx.barOptions.columnWidth,10)/100,l<1&&(l=1)}String(this.barCtx.barOptions.columnWidth).indexOf("%")===-1&&(l=parseInt(this.barCtx.barOptions.columnWidth,10)),u=n.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.translationsIndex]-(this.barCtx.isReversed?n.globals.gridHeight:0)+(this.barCtx.isReversed?this.barCtx.baseLineY[this.barCtx.translationsIndex]*2:0),n.globals.isXNumeric?r=this.barCtx.getBarXForNumericXAxis({x:r,j:0,realIndex:e,barWidth:l}).x:r=n.globals.padHorizontal+Ee.noExponents(o-l*this.barCtx.seriesLen)/2}return n.globals.barHeight=s,n.globals.barWidth=l,{x:r,y:i,yDivision:a,xDivision:o,barHeight:s,barWidth:l,zeroH:u,zeroW:c}}initializeStackedPrevVars(e){e.w.globals.seriesGroups.forEach(r=>{e[r]||(e[r]={}),e[r].prevY=[],e[r].prevX=[],e[r].prevYF=[],e[r].prevXF=[],e[r].prevYVal=[],e[r].prevXVal=[]})}initializeStackedXYVars(e){e.w.globals.seriesGroups.forEach(r=>{e[r]||(e[r]={}),e[r].xArrj=[],e[r].xArrjF=[],e[r].xArrjVal=[],e[r].yArrj=[],e[r].yArrjF=[],e[r].yArrjVal=[]})}getPathFillColor(e,n,r,i){var a,o,s,l;const u=this.w;let c=this.barCtx.ctx.fill,f=null,h=this.barCtx.barOptions.distributed?r:n,m=!1;return this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map(y=>{e[n][r]>=y.from&&e[n][r]<=y.to&&(f=y.color,m=!0)}),{color:c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?h:i,dataPointIndex:r,color:f,value:e[n][r],fillConfig:(a=u.config.series[n].data[r])==null?void 0:a.fill,fillType:(s=(o=u.config.series[n].data[r])==null?void 0:o.fill)!=null&&s.type?(l=u.config.series[n].data[r])==null?void 0:l.fill.type:Array.isArray(u.config.fill.type)?u.config.fill.type[i]:u.config.fill.type}),useRangeColor:m}}getStrokeWidth(e,n,r){let i=0;const a=this.w;return typeof this.barCtx.series[e][n]>"u"||this.barCtx.series[e][n]===null||a.config.chart.type==="bar"&&!this.barCtx.series[e][n]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,a.config.stroke.show&&(this.barCtx.isNullValue||(i=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[r]:this.barCtx.strokeWidth)),i}createBorderRadiusArr(e){var n;const r=this.w,i=!this.w.config.chart.stacked||r.config.plotOptions.bar.borderRadius<=0,a=e.length,o=((n=e[0])==null?void 0:n.length)|0,s=Array.from({length:a},()=>Array(o).fill(i?"top":"none"));if(i)return s;const l=this.w.config.chart.type;for(let u=0;u0?(c.push(m),h++):b<0&&(f.push(m),h++)}if(c.length>0&&f.length===0)if(c.length===1)s[c[0]][u]=l==="bar"&&o===1?"top":"both";else{const m=c[0],b=c[c.length-1];for(let _ of c)_===m?s[_][u]=l==="bar"&&o===1?"top":"bottom":_===b?s[_][u]="top":s[_][u]="none"}else if(f.length>0&&c.length===0)if(f.length===1)s[f[0]][u]="both";else{const m=Math.max(...f),b=Math.min(...f);for(let _ of f)_===m?s[_][u]="bottom":_===b?s[_][u]="top":s[_][u]="none"}else if(c.length>0&&f.length>0){const m=c[c.length-1];for(let _ of c)_===m?s[_][u]="top":s[_][u]="none";const b=Math.max(...f);for(let _ of f)_===b?s[_][u]="bottom":s[_][u]="none"}else if(h===1){const m=c[0]||f[0];s[m][u]="both"}}return s}barBackground({j:e,i:n,x1:r,x2:i,y1:a,y2:o,elSeries:s}){const l=this.w,u=new at(this.barCtx.ctx);let f=new _u(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&f===n){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);let h=this.barCtx.barOptions.colors.backgroundBarColors[e],m=u.drawRect(typeof r<"u"?r:0,typeof a<"u"?a:0,typeof i<"u"?i:l.globals.gridWidth,typeof o<"u"?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,h,this.barCtx.barOptions.colors.backgroundBarOpacity);s.add(m),m.node.classList.add("apexcharts-backgroundBar")}}getColumnPaths({barWidth:e,barXPosition:n,y1:r,y2:i,strokeWidth:a,isReversed:o,series:s,seriesGroup:l,realIndex:u,i:c,j:f,w:h}){var m;const b=new at(this.barCtx.ctx);a=Array.isArray(a)?a[u]:a,a||(a=0);let _=e,y=n;(m=h.config.series[u].data[f])!=null&&m.columnWidthOffset&&(y=n-h.config.series[u].data[f].columnWidthOffset/2,_=e+h.config.series[u].data[f].columnWidthOffset);let x=a/2;const C=y+x,A=y+_-x;let R=(s[c][f]>=0?1:-1)*(o?-1:1);r+=.001-x*R,i+=.001+x*R;let I=b.move(C,r),O=b.move(C,r);const N=b.line(A,r);if(h.globals.previousPaths.length>0&&(O=this.barCtx.getPreviousPath(u,f,!1)),I=I+b.line(C,i)+b.line(A,i)+N+(h.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[u][f]==="both"?" Z":" z"),O=O+b.line(C,r)+N+N+N+N+N+b.line(C,r)+(h.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[u][f]==="both"?" Z":" z"),this.arrBorderRadius[u][f]!=="none"&&(I=b.roundPathCorners(I,h.config.plotOptions.bar.borderRadius)),h.config.chart.stacked){let k=this.barCtx;k=this.barCtx[l],k.yArrj.push(i-x*R),k.yArrjF.push(Math.abs(r-i+a*R)),k.yArrjVal.push(this.barCtx.series[c][f])}return{pathTo:I,pathFrom:O}}getBarpaths({barYPosition:e,barHeight:n,x1:r,x2:i,strokeWidth:a,isReversed:o,series:s,seriesGroup:l,realIndex:u,i:c,j:f,w:h}){var m;const b=new at(this.barCtx.ctx);a=Array.isArray(a)?a[u]:a,a||(a=0);let _=e,y=n;(m=h.config.series[u].data[f])!=null&&m.barHeightOffset&&(_=e-h.config.series[u].data[f].barHeightOffset/2,y=n+h.config.series[u].data[f].barHeightOffset);let x=a/2;const C=_+x,A=_+y-x;let R=(s[c][f]>=0?1:-1)*(o?-1:1);r+=.001+x*R,i+=.001-x*R;let I=b.move(r,C),O=b.move(r,C);h.globals.previousPaths.length>0&&(O=this.barCtx.getPreviousPath(u,f,!1));const N=b.line(r,A);if(I=I+b.line(i,C)+b.line(i,A)+N+(h.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[u][f]==="both"?" Z":" z"),O=O+b.line(r,C)+N+N+N+N+N+b.line(r,C)+(h.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[u][f]==="both"?" Z":" z"),this.arrBorderRadius[u][f]!=="none"&&(I=b.roundPathCorners(I,h.config.plotOptions.bar.borderRadius)),h.config.chart.stacked){let k=this.barCtx;k=this.barCtx[l],k.xArrj.push(i+x*R),k.xArrjF.push(Math.abs(r-i-a*R)),k.xArrjVal.push(this.barCtx.series[c][f])}return{pathTo:I,pathFrom:O}}checkZeroSeries({series:e}){let n=this.w;for(let r=0;r{l.push({[e]:e==="x"?this.getXForValue(c,n,!1):this.getYForValue(c,r,o,!1),attrs:f})};if(s.globals.seriesGoals[i]&&s.globals.seriesGoals[i][a]&&Array.isArray(s.globals.seriesGoals[i][a])&&s.globals.seriesGoals[i][a].forEach(c=>{u(c.value,c)}),this.barCtx.barOptions.isDumbbell&&s.globals.seriesRange.length){let c=this.barCtx.barOptions.dumbbellColors?this.barCtx.barOptions.dumbbellColors:s.globals.colors;const f={strokeHeight:e==="x"?0:s.globals.markers.size[i],strokeWidth:e==="x"?s.globals.markers.size[i]:0,strokeDashArray:0,strokeLineCap:"round",strokeColor:Array.isArray(c[i])?c[i][0]:c[i]};u(s.globals.seriesRangeStart[i][a],f),u(s.globals.seriesRangeEnd[i][a],rr(vn({},f),{strokeColor:Array.isArray(c[i])?c[i][1]:c[i]}))}return l}drawGoalLine({barXPosition:e,barYPosition:n,goalX:r,goalY:i,barWidth:a,barHeight:o}){let s=new at(this.barCtx.ctx);const l=s.group({className:"apexcharts-bar-goals-groups"});l.node.classList.add("apexcharts-element-hidden"),this.barCtx.w.globals.delayedElements.push({el:l.node}),l.attr("clip-path",`url(#gridRectMarkerMask${this.barCtx.w.globals.cuid})`);let u=null;return this.barCtx.isHorizontal?Array.isArray(r)&&r.forEach(c=>{if(c.x>=-1&&c.x<=s.w.globals.gridWidth+1){let f=typeof c.attrs.strokeHeight<"u"?c.attrs.strokeHeight:o/2,h=n+f+o/2;u=s.drawLine(c.x,h-f*2,c.x,h,c.attrs.strokeColor?c.attrs.strokeColor:void 0,c.attrs.strokeDashArray,c.attrs.strokeWidth?c.attrs.strokeWidth:2,c.attrs.strokeLineCap),l.add(u)}}):Array.isArray(i)&&i.forEach(c=>{if(c.y>=-1&&c.y<=s.w.globals.gridHeight+1){let f=typeof c.attrs.strokeWidth<"u"?c.attrs.strokeWidth:a/2,h=e+f+a/2;u=s.drawLine(h-f*2,c.y,h,c.y,c.attrs.strokeColor?c.attrs.strokeColor:void 0,c.attrs.strokeDashArray,c.attrs.strokeHeight?c.attrs.strokeHeight:2,c.attrs.strokeLineCap),l.add(u)}}),l}drawBarShadow({prevPaths:e,currPaths:n,color:r,realIndex:i,j:a}){const o=this.w,{x:s,x1:l,barYPosition:u}=e,{x:c,x1:f,barYPosition:h}=n,m=u+n.barHeight,b=new at(this.barCtx.ctx),_=new Ee,y=b.move(l,m)+b.line(s,m)+b.line(c,h)+b.line(f,h)+b.line(l,m)+(o.config.plotOptions.bar.borderRadiusApplication==="around"||this.arrBorderRadius[i][a]==="both"?" Z":" z");return b.drawPath({d:y,fill:_.shadeColor(.5,Ee.rgb2hex(r)),stroke:"none",strokeWidth:0,fillOpacity:1,classes:"apexcharts-bar-shadow apexcharts-decoration-element"})}getZeroValueEncounters({i:e,j:n}){var r;const i=this.w;let a=0,o=0;return(i.config.plotOptions.bar.horizontal?i.globals.series.map((l,u)=>u):((r=i.globals.columnSeries)==null?void 0:r.i.map(l=>l))||[]).forEach(l=>{let u=i.globals.seriesPercent[l][n];u&&a++,lo.indexOf(n.globals.seriesNames[e])>-1),i=this.barCtx.columnGroupIndices,a=i.indexOf(r);return a<0&&(i.push(r),a=i.length-1),{groupIndex:r,columnGroupIndex:a}}};class d_{constructor(e,n){this.ctx=e,this.w=e.w;const r=this.w;this.barOptions=r.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=r.config.stroke.width,this.isNullValue=!1,this.isRangeBar=r.globals.seriesRange.length&&this.isHorizontal,this.isVerticalGroupedRangeBar=!r.globals.isBarHorizontal&&r.globals.seriesRange.length&&r.config.plotOptions.bar.rangeBarGroupRows,this.isFunnel=this.barOptions.isFunnel,this.xyRatios=n,this.xyRatios!==null&&(this.xRatio=n.xRatio,this.yRatio=n.yRatio,this.invertedXRatio=n.invertedXRatio,this.invertedYRatio=n.invertedYRatio,this.baseLineY=n.baseLineY,this.baseLineInvertedY=n.baseLineInvertedY),this.yaxisIndex=0,this.translationsIndex=0,this.seriesLen=0,this.pathArr=[];const i=new _u(this.ctx);this.lastActiveBarSerieIndex=i.getActiveConfigSeriesIndex("desc",["bar","column"]),this.columnGroupIndices=[];const a=i.getBarSeriesIndices(),o=new xa(this.ctx);this.stackedSeriesTotals=o.getStackedSeriesTotals(this.w.config.series.map((s,l)=>a.indexOf(l)===-1?l:-1).filter(s=>s!==-1)),this.barHelpers=new vbt(this)}draw(e,n){var r;let i=this.w,a=new at(this.ctx);const o=new xa(this.ctx);e=o.getLogSeries(e),this.series=e,this.yRatio=o.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e);let s=a.group({class:"apexcharts-bar-series apexcharts-plot-series"});i.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering - ApexCharts");for(let l=0,u=0;l0&&(this.visibleI=this.visibleI+1);let I=0,O=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[C],this.translationsIndex=C);let N=this.translationsIndex;this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;let k=this.barHelpers.initialPositions(C);f=k.y,I=k.barHeight,m=k.yDivision,_=k.zeroW,c=k.x,O=k.barWidth,h=k.xDivision,b=k.zeroH,this.isHorizontal||x.push(c+O/2);let D=a.group({class:"apexcharts-datalabels","data:realIndex":C});i.globals.delayedElements.push({el:D.node}),D.node.classList.add("apexcharts-element-hidden");let P=a.group({class:"apexcharts-bar-goals-markers"}),j=a.group({class:"apexcharts-bar-shadows"});i.globals.delayedElements.push({el:j.node}),j.node.classList.add("apexcharts-element-hidden");for(let M=0;M0){const q=this.barHelpers.drawBarShadow({color:typeof H.color=="string"&&((r=H.color)==null?void 0:r.indexOf("url"))===-1?H.color:Ee.hexToRgba(i.globals.colors[l]),prevPaths:this.pathArr[this.pathArr.length-1],currPaths:G,realIndex:C,j:M});j.add(q),i.config.chart.dropShadow.enabled&&new Io(this.ctx).dropShadow(q,i.config.chart.dropShadow,C)}this.pathArr.push(G);const W=this.barHelpers.drawGoalLine({barXPosition:G.barXPosition,barYPosition:G.barYPosition,goalX:G.goalX,goalY:G.goalY,barHeight:I,barWidth:O});W&&P.add(W),f=G.y,c=G.x,M>0&&x.push(c+O/2),y.push(f),this.renderSeries(rr(vn({realIndex:C,pathFill:H.color},H.useRangeColor?{lineFill:H.color}:{}),{j:M,i:l,columnGroupIndex:A,pathFrom:G.pathFrom,pathTo:G.pathTo,strokeWidth:z,elSeries:R,x:c,y:f,series:e,barHeight:Math.abs(G.barHeight?G.barHeight:I),barWidth:Math.abs(G.barWidth?G.barWidth:O),elDataLabelsWrap:D,elGoalsMarkers:P,elBarShadows:j,visibleSeries:this.visibleI,type:"bar"}))}i.globals.seriesXvalues[C]=x,i.globals.seriesYvalues[C]=y,s.add(R)}return s}renderSeries({realIndex:e,pathFill:n,lineFill:r,j:i,i:a,columnGroupIndex:o,pathFrom:s,pathTo:l,strokeWidth:u,elSeries:c,x:f,y:h,y1:m,y2:b,series:_,barHeight:y,barWidth:x,barXPosition:C,barYPosition:A,elDataLabelsWrap:R,elGoalsMarkers:I,elBarShadows:O,visibleSeries:N,type:k,classes:D}){const P=this.w,j=new at(this.ctx);let M=!1;if(c._bindingsDelegated||(c._bindingsDelegated=!0,j.setupEventDelegation(c,`.apexcharts-${k}-area`)),!r){let H=function(q){const Q=P.config.stroke.colors;let X;return Array.isArray(Q)&&Q.length>0&&(X=Q[q],X||(X=""),typeof X=="function")?X({value:P.globals.series[q][i],dataPointIndex:i,w:P}):X};const W=typeof P.globals.stroke.colors[e]=="function"?H(e):P.globals.stroke.colors[e];r=this.barOptions.distributed?P.globals.stroke.colors[i]:W}let G=new _bt(this).handleBarDataLabels({x:f,y:h,y1:m,y2:b,i:a,j:i,series:_,realIndex:e,columnGroupIndex:o,barHeight:y,barWidth:x,barXPosition:C,barYPosition:A,visibleSeries:N});P.globals.isBarHorizontal||(G.dataLabelsPos.dataLabelsX+Math.max(x,P.globals.barPadForNumericAxis)<0||G.dataLabelsPos.dataLabelsX-Math.max(x,P.globals.barPadForNumericAxis)>P.globals.gridWidth)&&(M=!0),P.config.series[a].data[i]&&P.config.series[a].data[i].strokeColor&&(r=P.config.series[a].data[i].strokeColor),this.isNullValue&&(n="none");let Y=i/P.config.chart.animations.animateGradually.delay*(P.config.chart.animations.speed/P.globals.dataPoints)/2.4;if(!M){let H=j.renderPaths({i:a,j:i,realIndex:e,pathFrom:s,pathTo:l,stroke:r,strokeWidth:u,strokeLineCap:P.config.stroke.lineCap,fill:n,animationDelay:Y,initialSpeed:P.config.chart.animations.speed,dataChangeSpeed:P.config.chart.animations.dynamicAnimation.speed,className:`apexcharts-${k}-area ${D}`,chartType:k,bindEventsOnPaths:!1});H.attr("clip-path",`url(#gridRectBarMask${P.globals.cuid})`);const W=P.config.forecastDataPoints;W.count>0&&i>=P.globals.dataPoints-W.count&&(H.node.setAttribute("stroke-dasharray",W.dashArray),H.node.setAttribute("stroke-width",W.strokeWidth),H.node.setAttribute("fill-opacity",W.fillOpacity)),typeof m<"u"&&typeof b<"u"&&(H.attr("data-range-y1",m),H.attr("data-range-y2",b)),new Io(this.ctx).setSelectionFilter(H,e,i),c.add(H),H.attr({cy:G.dataLabelsPos.bcy,cx:G.dataLabelsPos.bcx,j:i,val:P.globals.series[a][i],barHeight:y,barWidth:x}),G.dataLabels!==null&&R.add(G.dataLabels),G.totalDataLabels&&R.add(G.totalDataLabels),c.add(R),I&&c.add(I),O&&c.add(O)}return c}drawBarPaths({indexes:e,barHeight:n,strokeWidth:r,zeroW:i,x:a,y:o,yDivision:s,elSeries:l}){let u=this.w,c=e.i,f=e.j,h;if(u.globals.isXNumeric)o=(u.globals.seriesX[c][f]-u.globals.minX)/this.invertedXRatio-n,h=o+n*this.visibleI;else if(u.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:b,zeroEncounters:_}=this.barHelpers.getZeroValueEncounters({i:c,j:f});b>0&&(n=this.seriesLen*n/b),h=o+n*this.visibleI,h-=n*_}else h=o+n*this.visibleI;this.isFunnel&&(i=i-(this.barHelpers.getXForValue(this.series[c][f],i)-i)/2),a=this.barHelpers.getXForValue(this.series[c][f],i);const m=this.barHelpers.getBarpaths({barYPosition:h,barHeight:n,x1:i,x2:a,strokeWidth:r,isReversed:this.isReversed,series:this.series,realIndex:e.realIndex,i:c,j:f,w:u});return u.globals.isXNumeric||(o=o+s),this.barHelpers.barBackground({j:f,i:c,y1:h-n*this.visibleI,y2:n*this.seriesLen,elSeries:l}),{pathTo:m.pathTo,pathFrom:m.pathFrom,x1:i,x:a,y:o,goalX:this.barHelpers.getGoalValues("x",i,null,c,f),barYPosition:h,barHeight:n}}drawColumnPaths({indexes:e,x:n,y:r,xDivision:i,barWidth:a,zeroH:o,strokeWidth:s,elSeries:l}){let u=this.w,c=e.realIndex,f=e.translationsIndex,h=e.i,m=e.j,b=e.bc,_;if(u.globals.isXNumeric){const x=this.getBarXForNumericXAxis({x:n,j:m,realIndex:c,barWidth:a});n=x.x,_=x.barXPosition}else if(u.config.plotOptions.bar.hideZeroBarsWhenGrouped){const{nonZeroColumns:x,zeroEncounters:C}=this.barHelpers.getZeroValueEncounters({i:h,j:m});x>0&&(a=this.seriesLen*a/x),_=n+a*this.visibleI,_-=a*C}else _=n+a*this.visibleI;r=this.barHelpers.getYForValue(this.series[h][m],o,f);const y=this.barHelpers.getColumnPaths({barXPosition:_,barWidth:a,y1:o,y2:r,strokeWidth:s,isReversed:this.isReversed,series:this.series,realIndex:c,i:h,j:m,w:u});return u.globals.isXNumeric||(n=n+i),this.barHelpers.barBackground({bc:b,j:m,i:h,x1:_-s/2-a*this.visibleI,x2:a*this.seriesLen+s/2,elSeries:l}),{pathTo:y.pathTo,pathFrom:y.pathFrom,x:n,y:r,goalY:this.barHelpers.getGoalValues("y",null,o,h,m,f),barXPosition:_,barWidth:a}}getBarXForNumericXAxis({x:e,barWidth:n,realIndex:r,j:i}){const a=this.w;let o=r;return a.globals.seriesX[r].length||(o=a.globals.maxValsInArrayIndex),Ee.isNumber(a.globals.seriesX[o][i])&&(e=(a.globals.seriesX[o][i]-a.globals.minX)/this.xRatio-n*this.seriesLen/2),{barXPosition:e+n*this.visibleI,x:e}}getPreviousPath(e,n){let r=this.w,i="M 0 0";for(let a=0;a0&&parseInt(o.realIndex,10)===parseInt(e,10)&&typeof r.globals.previousPaths[a].paths[n]<"u"&&(i=r.globals.previousPaths[a].paths[n].d)}return i}}class Wte extends d_{draw(e,n){let r=this.w;this.graphics=new at(this.ctx),this.bar=new d_(this.ctx,this.xyRatios);const i=new xa(this.ctx);e=i.getLogSeries(e),this.yRatio=i.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e),r.config.chart.stackType==="100%"&&(e=r.globals.comboCharts?n.map(l=>r.globals.seriesPercent[l]):r.globals.seriesPercent.slice()),this.series=e,this.barHelpers.initializeStackedPrevVars(this);let a=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),o=0,s=0;for(let l=0,u=0;l1&&(this.yaxisIndex=r.globals.seriesYAxisReverseMap[b][0],A=b),this.isReversed=r.config.yaxis[this.yaxisIndex]&&r.config.yaxis[this.yaxisIndex].reversed;let R=this.graphics.group({class:"apexcharts-series",seriesName:Ee.escapeString(r.globals.seriesNames[b]),rel:l+1,"data:realIndex":b});this.ctx.series.addCollapsedClassToSeries(R,b);let I=this.graphics.group({class:"apexcharts-datalabels","data:realIndex":b}),O=this.graphics.group({class:"apexcharts-bar-goals-markers"}),N=0,k=0,D=this.initialPositions(o,s,c,f,h,m,A);s=D.y,N=D.barHeight,f=D.yDivision,m=D.zeroW,o=D.x,k=D.barWidth,c=D.xDivision,h=D.zeroH,r.globals.barHeight=N,r.globals.barWidth=k,this.barHelpers.initializeStackedXYVars(this),this.groupCtx.prevY.length===1&&this.groupCtx.prevY[0].every(P=>isNaN(P))&&(this.groupCtx.prevY[0]=this.groupCtx.prevY[0].map(()=>h),this.groupCtx.prevYF[0]=this.groupCtx.prevYF[0].map(()=>0));for(let P=0;P0||this.barHelpers.arrBorderRadius[b][P]==="top"&&r.globals.series[b][P]<0)&&(H=W),R=this.renderSeries(rr(vn({realIndex:b,pathFill:Y.color},Y.useRangeColor?{lineFill:Y.color}:{}),{j:P,i:l,columnGroupIndex:y,pathFrom:z.pathFrom,pathTo:z.pathTo,strokeWidth:j,elSeries:R,x:o,y:s,series:e,barHeight:N,barWidth:k,elDataLabelsWrap:I,elGoalsMarkers:O,type:"bar",visibleSeries:y,classes:H}))}r.globals.seriesXvalues[b]=x,r.globals.seriesYvalues[b]=C,this.groupCtx.prevY.push(this.groupCtx.yArrj),this.groupCtx.prevYF.push(this.groupCtx.yArrjF),this.groupCtx.prevYVal.push(this.groupCtx.yArrjVal),this.groupCtx.prevX.push(this.groupCtx.xArrj),this.groupCtx.prevXF.push(this.groupCtx.xArrjF),this.groupCtx.prevXVal.push(this.groupCtx.xArrjVal),a.add(R)}return a}initialPositions(e,n,r,i,a,o,s){let l=this.w,u,c;if(this.isHorizontal){i=l.globals.gridHeight/l.globals.dataPoints;let h=l.config.plotOptions.bar.barHeight;String(h).indexOf("%")===-1?u=parseInt(h,10):u=i*parseInt(h,10)/100,o=l.globals.padHorizontal+(this.isReversed?l.globals.gridWidth-this.baseLineInvertedY:this.baseLineInvertedY),n=(i-u)/2}else{r=l.globals.gridWidth/l.globals.dataPoints,c=r;let h=l.config.plotOptions.bar.columnWidth;l.globals.isXNumeric&&l.globals.dataPoints>1?(r=l.globals.minXDiff/this.xRatio,c=r*parseInt(this.barOptions.columnWidth,10)/100):String(h).indexOf("%")===-1?c=parseInt(h,10):c*=parseInt(h,10)/100,this.isReversed?a=this.baseLineY[s]:a=l.globals.gridHeight-this.baseLineY[s],e=l.globals.padHorizontal+(r-c)/2}let f=l.globals.barGroups.length||1;return{x:e,y:n,yDivision:i,xDivision:r,barHeight:u/f,barWidth:c/f,zeroH:a,zeroW:o}}drawStackedBarPaths({indexes:e,barHeight:n,strokeWidth:r,zeroW:i,x:a,y:o,columnGroupIndex:s,seriesGroup:l,yDivision:u,elSeries:c}){let f=this.w,h=o+s*n,m,b=e.i,_=e.j,y=e.realIndex,x=e.translationsIndex,C=0;for(let I=0;I0){let I=i;this.groupCtx.prevXVal[A-1][_]<0?I=this.series[b][_]>=0?this.groupCtx.prevX[A-1][_]+C-(this.isReversed?C:0)*2:this.groupCtx.prevX[A-1][_]:this.groupCtx.prevXVal[A-1][_]>=0&&(I=this.series[b][_]>=0?this.groupCtx.prevX[A-1][_]:this.groupCtx.prevX[A-1][_]-C+(this.isReversed?C:0)*2),m=I}else m=i;this.series[b][_]===null?a=m:a=m+this.series[b][_]/this.invertedYRatio-(this.isReversed?this.series[b][_]/this.invertedYRatio:0)*2;const R=this.barHelpers.getBarpaths({barYPosition:h,barHeight:n,x1:m,x2:a,strokeWidth:r,isReversed:this.isReversed,series:this.series,realIndex:e.realIndex,seriesGroup:l,i:b,j:_,w:f});return this.barHelpers.barBackground({j:_,i:b,y1:h,y2:n,elSeries:c}),o=o+u,{pathTo:R.pathTo,pathFrom:R.pathFrom,goalX:this.barHelpers.getGoalValues("x",i,null,b,_,x),barXPosition:m,barYPosition:h,x:a,y:o}}drawStackedColumnPaths({indexes:e,x:n,y:r,xDivision:i,barWidth:a,zeroH:o,columnGroupIndex:s,seriesGroup:l,elSeries:u}){var c,f,h,m;let b=this.w,_=e.i,y=e.j,x=e.bc,C=e.realIndex,A=e.translationsIndex;if(b.globals.isXNumeric){let D=b.globals.seriesX[C][y];D||(D=0),n=(D-b.globals.minX)/this.xRatio-a/2*b.globals.barGroups.length}let R=n+s*a,I,O=0;for(let D=0;D0&&!b.globals.isXNumeric||N>0&&b.globals.isXNumeric&&b.globals.seriesX[C-1][y]===b.globals.seriesX[C][y]){let D,P;const j=Math.min(this.yRatio.length+1,C+1);if(this.groupCtx.prevY[N-1]!==void 0&&this.groupCtx.prevY[N-1].length){for(let M=1;M=0?P-O+(this.isReversed?O:0)*2:P;break}else if(((h=this.groupCtx.prevYVal[N-M])==null?void 0:h[y])>=0){D=this.series[_][y]>=0?P:P+O-(this.isReversed?O:0)*2;break}typeof D>"u"&&(D=b.globals.gridHeight),(m=this.groupCtx.prevYF[0])!=null&&m.every(M=>M===0)&&this.groupCtx.prevYF.slice(1,N).every(M=>M.every(z=>isNaN(z)))?I=o:I=D}else I=o;this.series[_][y]?r=I-this.series[_][y]/this.yRatio[A]+(this.isReversed?this.series[_][y]/this.yRatio[A]:0)*2:r=I;const k=this.barHelpers.getColumnPaths({barXPosition:R,barWidth:a,y1:I,y2:r,yRatio:this.yRatio[A],strokeWidth:this.strokeWidth,isReversed:this.isReversed,series:this.series,seriesGroup:l,realIndex:e.realIndex,i:_,j:y,w:b});return this.barHelpers.barBackground({bc:x,j:y,i:_,x1:R,x2:a,elSeries:u}),{pathTo:k.pathTo,pathFrom:k.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,o,_,y),barXPosition:R,x:b.globals.isXNumeric?n:n+i,y:r}}}class J4 extends d_{draw(e,n,r){const i=this.w,a=new at(this.ctx),o=i.globals.comboCharts?n:i.config.chart.type,s=new fu(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=i.config.plotOptions.bar.horizontal,this.isOHLC=this.candlestickOptions&&this.candlestickOptions.type==="ohlc",this.coreUtils=new xa(this.ctx),e=this.coreUtils.getLogSeries(e),this.series=e,this.yRatio=this.coreUtils.getLogYRatios(this.yRatio),this.barHelpers.initVariables(e);const l=a.group({class:`apexcharts-${o}-series apexcharts-plot-series`});for(let u=0;u0&&(this.visibleI=this.visibleI+1);let I=0,O=0,N=0;this.yRatio.length>1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[C][0],N=C);const k=this.barHelpers.initialPositions(C);f=k.y,I=k.barHeight,m=k.yDivision,_=k.zeroW,c=k.x,O=k.barWidth,h=k.xDivision,b=k.zeroH,x.push(c+O/2);const D=a.group({class:"apexcharts-datalabels","data:realIndex":C}),P=a.group({class:"apexcharts-bar-goals-markers"});for(let j=0;j0&&x.push(c+O/2),y.push(f),z.pathTo.forEach((H,W)=>{const q=!this.isBoxPlot&&this.candlestickOptions.wick.useFillColor?z.color[W]:i.globals.stroke.colors[u],Q=s.fillPath({seriesNumber:C,dataPointIndex:j,color:z.color[W],value:e[u][j]});this.renderSeries({realIndex:C,pathFill:Q,lineFill:q,j,i:u,pathFrom:z.pathFrom,pathTo:H,strokeWidth:M,elSeries:R,x:c,y:f,series:e,columnGroupIndex:A,barHeight:I,barWidth:O,elDataLabelsWrap:D,elGoalsMarkers:P,visibleSeries:this.visibleI,type:i.config.chart.type})})}i.globals.seriesXvalues[C]=x,i.globals.seriesYvalues[C]=y,l.add(R)}return l}drawVerticalBoxPaths({indexes:e,x:n,xDivision:r,barWidth:i,zeroH:a,strokeWidth:o}){const s=this.w,l=new at(this.ctx),u=e.i,c=e.j,{colors:f}=s.config.plotOptions.candlestick,{colors:h}=this.boxOptions,m=e.realIndex,b=M=>Array.isArray(M)?M[m]:M,_=b(f.upward),y=b(f.downward),x=this.yRatio[e.translationsIndex],C=this.getOHLCValue(m,c);let A=a,R=a,I=C.o"u"||this.series[u][c]===null?(O=a,N=a):(O=a-O/x,N=a-N/x,A=a-C.h/x,R=a-C.l/x,k=a-C.m/x);let P,j=l.move(D+i/2,O);if(s.globals.previousPaths.length>0&&(j=this.getPreviousPath(m,c,!0)),this.isOHLC){const M=D+i/2,z=a-C.o/x,G=a-C.c/x;P=[l.move(M,A)+l.line(M,R)+l.move(M,z)+l.line(D,z)+l.move(M,G)+l.line(D+i,G)]}else this.isBoxPlot?P=[l.move(D,O)+l.line(D+i/2,O)+l.line(D+i/2,A)+l.line(D+i/4,A)+l.line(D+i-i/4,A)+l.line(D+i/2,A)+l.line(D+i/2,O)+l.line(D+i,O)+l.line(D+i,k)+l.line(D,k)+l.line(D,O+o/2),l.move(D,k)+l.line(D+i,k)+l.line(D+i,N)+l.line(D+i/2,N)+l.line(D+i/2,R)+l.line(D+i-i/4,R)+l.line(D+i/4,R)+l.line(D+i/2,R)+l.line(D+i/2,N)+l.line(D,N)+l.line(D,k)+"z"]:P=[l.move(D,N)+l.line(D+i/2,N)+l.line(D+i/2,A)+l.line(D+i/2,N)+l.line(D+i,N)+l.line(D+i,O)+l.line(D+i/2,O)+l.line(D+i/2,R)+l.line(D+i/2,O)+l.line(D,O)+l.line(D,N-o/2)];return j=j+l.move(D,O),s.globals.isXNumeric||(n=n+r),{pathTo:P,pathFrom:j,x:n,y:N,goalY:this.barHelpers.getGoalValues("y",null,a,u,c,e.translationsIndex),barXPosition:D,color:I}}drawHorizontalBoxPaths({indexes:e,y:n,yDivision:r,barHeight:i,zeroW:a,strokeWidth:o}){const s=this.w,l=new at(this.ctx),u=e.i,c=e.j,f=e.realIndex,{colors:h}=s.config.plotOptions.candlestick,{colors:m}=this.boxOptions,b=P=>Array.isArray(P)?P[f]:P,_=this.invertedYRatio,y=this.getOHLCValue(f,c);let x=y.o"u"||this.series[u][c]===null?(R=a,I=a):(R=a+R/_,I=a+I/_,C=a+y.h/_,A=a+y.l/_,O=a+y.m/_);let k,D=l.move(R,N+i/2);return s.globals.previousPaths.length>0&&(D=this.getPreviousPath(f,c,!0)),k=[l.move(R,N)+l.line(R,N+i/2)+l.line(C,N+i/2)+l.line(C,N+i/2-i/4)+l.line(C,N+i/2+i/4)+l.line(C,N+i/2)+l.line(R,N+i/2)+l.line(R,N+i)+l.line(O,N+i)+l.line(O,N)+l.line(R+o/2,N),l.move(O,N)+l.line(O,N+i)+l.line(I,N+i)+l.line(I,N+i/2)+l.line(A,N+i/2)+l.line(A,N+i-i/4)+l.line(A,N+i/4)+l.line(A,N+i/2)+l.line(I,N+i/2)+l.line(I,N)+l.line(O,N)+"z"],D=D+l.move(R,N),s.globals.isXNumeric||(n=n+r),{pathTo:k,pathFrom:D,x:I,y:n,goalX:this.barHelpers.getGoalValues("x",a,null,u,c),barYPosition:N,color:x}}getOHLCValue(e,n){const r=this.w,i=this.coreUtils,a=f=>f[e]&&f[e][n]!=null?i.getLogValAtSeriesIndex(f[e][n],e):0,o=a(r.globals.seriesCandleH),s=a(r.globals.seriesCandleO),l=a(r.globals.seriesCandleM),u=a(r.globals.seriesCandleC),c=a(r.globals.seriesCandleL);return{o:this.isBoxPlot?o:s,h:this.isBoxPlot?s:o,m:l,l:this.isBoxPlot?u:c,c:this.isBoxPlot?c:u}}}class nge{constructor(e){this.ctx=e,this.w=e.w}checkColorRange(){const e=this.w;let n=!1,r=e.config.plotOptions[e.config.chart.type];return r.colorScale.ranges.length>0&&r.colorScale.ranges.map(i=>{i.from<=0&&(n=!0)}),n}getShadeColor(e,n,r,i){const a=this.w;let o=1,s=a.config.plotOptions[e].shadeIntensity;const l=this.determineColor(e,n,r);a.globals.hasNegs||i?a.config.plotOptions[e].reverseNegativeShade?l.percent<0?o=l.percent/100*(s*1.25):o=(1-l.percent/100)*(s*1.25):l.percent<=0?o=1-(1+l.percent/100)*s:o=(1-l.percent/100)*s:(o=1-l.percent/100,e==="treemap"&&(o=(1-l.percent/100)*(s*1.25)));let u=l.color,c=new Ee;if(a.config.plotOptions[e].enableShades)if(this.w.config.theme.mode==="dark"){const f=c.shadeColor(o*-1,l.color);u=Ee.hexToRgba(Ee.isColorHex(f)?f:Ee.rgb2hex(f),a.config.fill.opacity)}else{const f=c.shadeColor(o,l.color);u=Ee.hexToRgba(Ee.isColorHex(f)?f:Ee.rgb2hex(f),a.config.fill.opacity)}return{color:u,colorProps:l}}determineColor(e,n,r){const i=this.w;let a=i.globals.series[n][r],o=i.config.plotOptions[e],s=o.colorScale.inverse?r:n;o.distributed&&i.config.chart.type==="treemap"&&(s=r);let l=i.globals.colors[s],u=null,c=Math.min(...i.globals.series[n]),f=Math.max(...i.globals.series[n]);!o.distributed&&e==="heatmap"&&(c=i.globals.minY,f=i.globals.maxY),typeof o.colorScale.min<"u"&&(c=o.colorScale.mini.globals.maxY?o.colorScale.max:i.globals.maxY);let h=Math.abs(f)+Math.abs(c),m=100*a/(h===0?h-1e-6:h);return o.colorScale.ranges.length>0&&o.colorScale.ranges.map(_=>{if(a>=_.from&&a<=_.to){l=_.color,u=_.foreColor?_.foreColor:null,c=_.from,f=_.to;let y=Math.abs(f)+Math.abs(c);m=100*a/(y===0?y-1e-6:y)}}),{color:l,foreColor:u,percent:m}}calculateDataLabels({text:e,x:n,y:r,i,j:a,colorProps:o,fontSize:s}){let u=this.w.config.dataLabels;const c=new at(this.ctx);let f=new u_(this.ctx),h=null;if(u.enabled){h=c.group({class:"apexcharts-data-labels"});const m=u.offsetX,b=u.offsetY;let _=n+m,y=r+parseFloat(u.style.fontSize)/3+b;f.plotDataLabelsText({x:_,y,text:e,i,j:a,color:o.foreColor,parent:h,fontSize:s,dataLabelsConfig:u})}return h}}class ybt{constructor(e,n){this.ctx=e,this.w=e.w,this.xRatio=n.xRatio,this.yRatio=n.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new nge(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}draw(e){let n=this.w;const r=new at(this.ctx);let i=r.group({class:"apexcharts-heatmap"});i.attr("clip-path",`url(#gridRectMask${n.globals.cuid})`);let a=n.globals.gridWidth/n.globals.dataPoints,o=n.globals.gridHeight/n.globals.series.length,s=0,l=!1;this.negRange=this.helpers.checkColorRange();let u=e.slice();n.config.yaxis[0].reversed&&(l=!0,u.reverse());for(let f=l?0:u.length-1;l?f=0;l?f++:f--){let h=r.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:Ee.escapeString(n.globals.seriesNames[f]),rel:f+1,"data:realIndex":f});if(this.ctx.series.addCollapsedClassToSeries(h,f),r.setupEventDelegation(h,".apexcharts-heatmap-rect"),n.config.chart.dropShadow.enabled){const y=n.config.chart.dropShadow;new Io(this.ctx).dropShadow(h,y,f)}let m=0,b=n.config.plotOptions.heatmap.shadeIntensity,_=0;for(let y=0;y=u[f].length)break;let x=this.helpers.getShadeColor(n.config.chart.type,f,_,this.negRange),C=x.color,A=x.colorProps;n.config.fill.type==="image"&&(C=new fu(this.ctx).fillPath({seriesNumber:f,dataPointIndex:_,opacity:n.globals.hasNegs?A.percent<0?1-(1+A.percent/100):b+A.percent/100:A.percent/100,patternID:Ee.randomId(),width:n.config.fill.image.width?n.config.fill.image.width:a,height:n.config.fill.image.height?n.config.fill.image.height:o}));let R=this.rectRadius,I=r.drawRect(m,s,a,o,R);if(I.attr({cx:m,cy:s}),I.node.classList.add("apexcharts-heatmap-rect"),h.add(I),I.attr({fill:C,i:f,index:f,j:_,val:e[f][_],"stroke-width":this.strokeWidth,stroke:n.config.plotOptions.heatmap.useFillColorAsStroke?C:n.globals.stroke.colors[0],color:C}),n.config.chart.animations.enabled&&!n.globals.dataChanged){let D=1;n.globals.resized||(D=n.config.chart.animations.speed),this.animateHeatMap(I,m,s,a,o,D)}if(n.globals.dataChanged){let D=1;if(this.dynamicAnim.enabled&&n.globals.shouldAnimate){D=this.dynamicAnim.speed;let P=n.globals.previousPaths[f]&&n.globals.previousPaths[f][_]&&n.globals.previousPaths[f][_].color;P||(P="rgba(255, 255, 255, 0)"),this.animateHeatColor(I,Ee.isColorHex(P)?P:Ee.rgb2hex(P),Ee.isColorHex(C)?C:Ee.rgb2hex(C),D)}}let O=n.config.dataLabels.formatter,N=O(n.globals.series[f][_],{value:n.globals.series[f][_],seriesIndex:f,dataPointIndex:_,w:n}),k=this.helpers.calculateDataLabels({text:N,x:m+a/2,y:s+o/2,i:f,j:_,colorProps:A,series:u});k!==null&&h.add(k),m=m+a,_++}s=s+o,i.add(h)}let c=n.globals.yAxisScale[0].result.slice();return n.config.yaxis[0].reversed?c.unshift(""):c.push(""),n.globals.yAxisScale[0].result=c,i}animateHeatMap(e,n,r,i,a,o){const s=new G_(this.ctx);s.animateRect(e,{x:n+i/2,y:r+a/2,width:0,height:0},{x:n,y:r,width:i,height:a},o,()=>{s.animationCompleted(e)})}animateHeatColor(e,n,r,i){e.attr({fill:n}).animate(i).attr({fill:r})}}class Sbt{constructor(e){this.w=e.w,this.lineCtx=e}sameValueSeriesFix(e,n){const r=this.w;if((r.config.fill.type==="gradient"||r.config.fill.type[e]==="gradient")&&new xa(this.lineCtx.ctx).seriesHaveSameValues(e)){let a=n[e].slice();a[a.length-1]=a[a.length-1]+1e-6,n[e]=a}return n}calculatePoints({series:e,realIndex:n,x:r,y:i,i:a,j:o,prevY:s}){let l=this.w,u=[],c=[],f=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;return l.globals.isXNumeric&&(f=(l.globals.seriesX[n][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),o===0&&(u.push(f),c.push(Ee.isNumber(e[a][0])?s+l.config.markers.offsetY:null)),u.push(r+l.config.markers.offsetX),c.push(Ee.isNumber(e[a][o+1])?i+l.config.markers.offsetY:null),{x:u,y:c}}checkPreviousPaths({pathFromLine:e,pathFromArea:n,realIndex:r}){let i=this.w;for(let a=0;a0&&parseInt(o.realIndex,10)===parseInt(r,10)&&(o.type==="line"?(this.lineCtx.appendPathFrom=!1,e=i.globals.previousPaths[a].paths[0].d):o.type==="area"&&(this.lineCtx.appendPathFrom=!1,n=i.globals.previousPaths[a].paths[0].d,i.config.stroke.show&&i.globals.previousPaths[a].paths[1]&&(e=i.globals.previousPaths[a].paths[1].d)))}return{pathFromLine:e,pathFromArea:n}}determineFirstPrevY({i:e,realIndex:n,series:r,prevY:i,lineYPosition:a,translationsIndex:o}){var s,l,u;let c=this.w,f=c.config.chart.stacked&&!c.globals.comboCharts||c.config.chart.stacked&&c.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((s=this.w.config.series[n])==null?void 0:s.type)==="bar"||((l=this.w.config.series[n])==null?void 0:l.type)==="column");if(typeof((u=r[e])==null?void 0:u[0])<"u")f?e>0?a=this.lineCtx.prevSeriesY[e-1][0]:a=this.lineCtx.zeroY:a=this.lineCtx.zeroY,i=a-r[e][0]/this.lineCtx.yRatio[o]+(this.lineCtx.isReversed?r[e][0]/this.lineCtx.yRatio[o]:0)*2;else if(f&&e>0&&typeof r[e][0]>"u"){for(let h=e-1;h>=0;h--)if(r[h][0]!==null&&typeof r[h][0]<"u"){a=this.lineCtx.prevSeriesY[h][0],i=a;break}}return{prevY:i,lineYPosition:a}}}const xbt=t=>{const e=Cbt(t),n=t.length-1,r=1e-6,i=[];let a,o,s,l;for(let u=0;u9&&(l=s*3/Math.sqrt(l),e[u]=l*a,e[u+1]=l*o));for(let u=0;u<=n;u++)l=(t[Math.min(n,u+1)][0]-t[Math.max(0,u-1)][0])/(6*(1+e[u]*e[u])),i.push([l||0,e[u]*l||0]);return i},Ebt=t=>{let e="";for(let n=0;n4?(e+=`C${r[0]}, ${r[1]}`,e+=`, ${r[2]}, ${r[3]}`,e+=`, ${r[4]}, ${r[5]}`):i>2&&(e+=`S${r[0]}, ${r[1]}`,e+=`, ${r[2]}, ${r[3]}`)}return e},qte={points(t){const e=xbt(t),n=t[1],r=t[0],i=[],a=e[1],o=e[0];i.push(r,[r[0]+o[0],r[1]+o[1],n[0]-a[0],n[1]-a[1],n[0],n[1]]);for(let s=2,l=e.length;s1&&r[1].length<6){const i=r[0].length;r[1]=[r[0][i-2]*2-r[0][i-4],r[0][i-1]*2-r[0][i-3]].concat(r[1])}r[0]=r[0].slice(-2)}return r}};function e8(t,e){return(e[1]-t[1])/(e[0]-t[0])}function Cbt(t){const e=[];let n=t[0],r=t[1],i=e[0]=e8(n,r),a=1;for(let o=t.length-1;a1?m:0;this._initSerieVariables(e,h,m);let _=[],y=[],x=[],C=o.globals.padHorizontal+this.categoryAxisCorrection,A=1,R=[],I=[];this.ctx.series.addCollapsedClassToSeries(this.elSeries,m),o.globals.isXNumeric&&o.globals.seriesX.length>0&&(C=(o.globals.seriesX[m][0]-o.globals.minX)/this.xRatio),x.push(C);let O=C,N,k,D=O,P=this.zeroY,j=this.zeroY,M=0;P=this.lineHelpers.determineFirstPrevY({i:h,realIndex:m,series:e,prevY:P,lineYPosition:M,translationsIndex:b}).prevY,o.config.stroke.curve==="monotoneCubic"&&e[h][0]===null?_.push(null):_.push(P),N=P;let G;l==="rangeArea"&&(G=this.lineHelpers.determineFirstPrevY({i:h,realIndex:m,series:i,prevY:j,lineYPosition:M,translationsIndex:b}),j=G.prevY,k=j,y.push(_[0]!==null?j:null));let Y=this._calculatePathsFrom({type:l,series:e,i:h,realIndex:m,translationsIndex:b,prevX:D,prevY:P,prevY2:j}),H=[_[0]],W=[y[0]];const q={type:l,series:e,realIndex:m,translationsIndex:b,i:h,x:C,y:A,pX:O,pY:N,pathsFrom:Y,linePaths:R,areaPaths:I,seriesIndex:r,lineYPosition:M,xArrj:x,yArrj:_,y2Arrj:y,seriesRangeEnd:i};let Q=this._iterateOverDataPoints(rr(vn({},q),{iterations:l==="rangeArea"?e[h].length-1:void 0,isRangeStart:!0}));if(l==="rangeArea"){let X=this._calculatePathsFrom({series:i,i:h,realIndex:m,prevX:D,prevY:j}),$=this._iterateOverDataPoints(rr(vn({},q),{series:i,xArrj:[C],yArrj:H,y2Arrj:W,pY:k,areaPaths:Q.areaPaths,pathsFrom:X,iterations:i[h].length-1,isRangeStart:!1})),K=Q.linePaths.length/2;for(let te=0;teNumber(h.node.getAttribute("zIndex"))-Number(m.node.getAttribute("zIndex"))),o.config.chart.stacked)for(let h=f.length-1;h>=0;h--)u.add(f[h]);else for(let h=0;h1&&(this.yaxisIndex=i.globals.seriesYAxisReverseMap[r],o=r),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed,this.zeroY=i.globals.gridHeight-this.baseLineY[o]-(this.isReversed?i.globals.gridHeight:0)+(this.isReversed?this.baseLineY[o]*2:0),this.areaBottomY=this.zeroY,(this.zeroY>i.globals.gridHeight||i.config.plotOptions.area.fillTo==="end")&&(this.areaBottomY=i.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=a.group({class:"apexcharts-series",zIndex:typeof i.config.series[r].zIndex<"u"?i.config.series[r].zIndex:r,seriesName:Ee.escapeString(i.globals.seriesNames[r])}),this.elPointsMain=a.group({class:"apexcharts-series-markers-wrap","data:realIndex":r}),i.globals.hasNullValues){const l=this.markers.plotChartMarkers({pointsPos:{x:[0],y:[i.globals.gridHeight+i.globals.markers.largestSize]},seriesIndex:n,j:0,pSize:.1,alwaysDrawMarker:!0,isVirtualPoint:!0});l!==null&&this.elPointsMain.add(l)}this.elDataLabelsWrap=a.group({class:"apexcharts-datalabels","data:realIndex":r});let s=e[n].length===i.globals.dataPoints;this.elSeries.attr({"data:longestSeries":s,rel:n+1,"data:realIndex":r}),this.appendPathFrom=!0}_calculatePathsFrom({type:e,series:n,i:r,realIndex:i,translationsIndex:a,prevX:o,prevY:s,prevY2:l}){const u=this.w,c=new at(this.ctx);let f,h,m,b;if(n[r][0]===null){for(let _=0;_0){const _=this.lineHelpers.checkPreviousPaths({pathFromLine:m,pathFromArea:b,realIndex:i});m=_.pathFromLine,b=_.pathFromArea}return{prevX:o,prevY:s,linePath:f,areaPath:h,pathFromLine:m,pathFromArea:b}}_handlePaths({type:e,realIndex:n,i:r,paths:i}){const a=this.w,o=new at(this.ctx),s=new fu(this.ctx);this.prevSeriesY.push(i.yArrj),a.globals.seriesXvalues[n]=i.xArrj,a.globals.seriesYvalues[n]=i.yArrj;const l=a.config.forecastDataPoints;if(l.count>0&&e!=="rangeArea"){const c=a.globals.seriesXvalues[n][a.globals.seriesXvalues[n].length-l.count-1],f=o.drawRect(c,0,a.globals.gridWidth,a.globals.gridHeight,0);a.globals.dom.elForecastMask.appendChild(f.node);const h=o.drawRect(0,0,c,a.globals.gridHeight,0);a.globals.dom.elNonForecastMask.appendChild(h.node)}this.pointsChart||a.globals.delayedElements.push({el:this.elPointsMain.node,index:n});const u={i:r,realIndex:n,animationDelay:r,initialSpeed:a.config.chart.animations.speed,dataChangeSpeed:a.config.chart.animations.dynamicAnimation.speed,className:`apexcharts-${e}`};if(e==="area"){let c=s.fillPath({seriesNumber:n});for(let f=0;f0&&e!=="rangeArea"){let _=o.renderPaths(m);_.node.setAttribute("stroke-dasharray",l.dashArray),l.strokeWidth&&_.node.setAttribute("stroke-width",l.strokeWidth),this.elSeries.add(_),_.attr("clip-path",`url(#forecastMask${a.globals.cuid})`),b.attr("clip-path",`url(#nonForecastMask${a.globals.cuid})`)}}}}_iterateOverDataPoints({type:e,series:n,iterations:r,realIndex:i,translationsIndex:a,i:o,x:s,y:l,pX:u,pY:c,pathsFrom:f,linePaths:h,areaPaths:m,seriesIndex:b,lineYPosition:_,xArrj:y,yArrj:x,y2Arrj:C,isRangeStart:A,seriesRangeEnd:R}){var I,O;const N=this.w;let k=new at(this.ctx),D=this.yRatio,{prevY:P,linePath:j,areaPath:M,pathFromLine:z,pathFromArea:G}=f;const Y=Ee.isNumber(N.globals.minYArr[i])?N.globals.minYArr[i]:N.globals.minY;r||(r=N.globals.dataPoints>1?N.globals.dataPoints-1:N.globals.dataPoints);const H=(K,te)=>te-K/D[a]+(this.isReversed?K/D[a]:0)*2;let W=l,q=N.config.chart.stacked&&!N.globals.comboCharts||N.config.chart.stacked&&N.globals.comboCharts&&(!this.w.config.chart.stackOnlyBar||((I=this.w.config.series[i])==null?void 0:I.type)==="bar"||((O=this.w.config.series[i])==null?void 0:O.type)==="column"),Q=N.config.stroke.curve;Array.isArray(Q)&&(Array.isArray(b)?Q=Q[b[o]]:Q=Q[o]);let X=0,$;for(let K=0;K"u"||n[o][K+1]===null;if(N.globals.isXNumeric){let le=N.globals.seriesX[i][K+1];typeof N.globals.seriesX[i][K+1]>"u"&&(le=N.globals.seriesX[i][r-1]),s=(le-N.globals.minX)/this.xRatio}else s=s+this.xDivision;if(q)if(o>0&&N.globals.collapsedSeries.length{for(let we=be;we>0;we--)if(N.globals.collapsedSeriesIndices.indexOf(b?.[we]||we)>-1)we--;else return we;return 0};_=this.prevSeriesY[le(o-1)][K+1]}else _=this.zeroY;else _=this.zeroY;te?l=H(Y,_):(l=H(n[o][K+1],_),e==="rangeArea"&&(W=H(R[o][K+1],_))),y.push(n[o][K+1]===null?null:s),te&&(N.config.stroke.curve==="smooth"||N.config.stroke.curve==="monotoneCubic")?(x.push(null),C.push(null)):(x.push(l),C.push(W));let ie=this.lineHelpers.calculatePoints({series:n,x:s,y:l,realIndex:i,i:o,j:K,prevY:P}),se=this._createPaths({type:e,series:n,i:o,j:K,x:s,y:l,y2:W,xArrj:y,yArrj:x,y2Arrj:C,pX:u,pY:c,pathState:X,segmentStartX:$,linePath:j,areaPath:M,linePaths:h,areaPaths:m,curve:Q,isRangeStart:A});m=se.areaPaths,h=se.linePaths,u=se.pX,c=se.pY,X=se.pathState,$=se.segmentStartX,M=se.areaPath,j=se.linePath,this.appendPathFrom&&!N.globals.hasNullValues&&!(Q==="monotoneCubic"&&e==="rangeArea")&&(z+=k.line(s,this.areaBottomY),G+=k.line(s,this.areaBottomY)),this.handleNullDataPoints(n,ie,o,K,i),this._handleMarkersAndLabels({type:e,pointsPos:ie,i:o,j:K,realIndex:i,isRangeStart:A})}return{yArrj:x,xArrj:y,pathFromArea:G,areaPaths:m,pathFromLine:z,linePaths:h,linePath:j,areaPath:M}}_handleMarkersAndLabels({type:e,pointsPos:n,isRangeStart:r,i,j:a,realIndex:o}){const s=this.w;let l=new u_(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,a,{realIndex:o,pointsPos:n,zRatio:this.zRatio,elParent:this.elPointsMain});else{s.globals.series[i].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");let c=this.markers.plotChartMarkers({pointsPos:n,seriesIndex:o,j:a+1});c!==null&&this.elPointsMain.add(c)}let u=l.drawDataLabel({type:e,isRangeStart:r,pos:n,i:o,j:a+1});u!==null&&this.elDataLabelsWrap.add(u)}_createPaths({type:e,series:n,i:r,j:i,x:a,y:o,xArrj:s,yArrj:l,y2:u,y2Arrj:c,pX:f,pY:h,pathState:m,segmentStartX:b,linePath:_,areaPath:y,linePaths:x,areaPaths:C,curve:A,isRangeStart:R}){let I=new at(this.ctx);const O=this.areaBottomY;let N=e==="rangeArea",k=e==="rangeArea"&&R;switch(A){case"monotoneCubic":{let D=R?l:c,P=(z,G)=>z.map((Y,H)=>[Y,G[H]]).filter(Y=>Y[1]!==null),j=z=>{let G=[],Y=0;return z.forEach(H=>{H!==null?Y++:Y>0&&(G.push(Y),Y=0)}),Y>0&&G.push(Y),G},M=(z,G)=>{let Y=j(z),H=[];for(let W=0,q=0;W1?qte.points(Y):Y;let W=[];N&&(k?C=Y:W=C.reverse());let q=0,Q=0;if(M(G,H).forEach(X=>{q++;let $=Ebt(X),K=Q;Q+=X.length;let te=Q-1;k?_=I.move(Y[K][0],Y[K][1])+$:N?_=I.move(W[K][0],W[K][1])+I.line(Y[K][0],Y[K][1])+$+I.line(W[te][0],W[te][1]):(_=I.move(Y[K][0],Y[K][1])+$,y=_+I.line(Y[te][0],O)+I.line(Y[K][0],O)+"z",C.push(y)),x.push(_)}),N&&q>1&&!k){let X=x.slice(q).reverse();x.splice(q),X.forEach($=>x.push($))}m=0;break}}break}case"smooth":{let D=(a-f)*.35;if(n[r][i]===null)m=0;else switch(m){case 0:if(b=f,k?_=I.move(f,c[i])+I.line(f,h):_=I.move(f,h),y=I.move(f,h),n[r][i+1]===null||typeof n[r][i+1]>"u"){x.push(_),C.push(y);break}if(m=1,i=n[r].length-2&&(k&&(_+=I.curve(a,o,a,o,a,u)+I.move(a,u)),y+=I.curve(a,o,a,o,a,O)+I.line(b,O)+"z",x.push(_),C.push(y),m=-1)}break}f=a,h=o;break}default:{let D=(P,j,M)=>{let z=[];switch(P){case"stepline":z=I.line(j,null,"H")+I.line(null,M,"V");break;case"linestep":z=I.line(null,M,"V")+I.line(j,null,"H");break;case"straight":z=I.line(j,M);break}return z};if(n[r][i]===null)m=0;else switch(m){case 0:if(b=f,k?_=I.move(f,c[i])+I.line(f,h):_=I.move(f,h),y=I.move(f,h),n[r][i+1]===null||typeof n[r][i+1]>"u"){x.push(_),C.push(y);break}if(m=1,i=n[r].length-2&&(k&&(_+=I.line(a,u)),y+=I.line(a,O)+I.line(b,O)+"z",x.push(_),C.push(y),m=-1)}break}f=a,h=o;break}}return{linePaths:x,areaPaths:C,pX:f,pY:h,pathState:m,segmentStartX:b,linePath:_,areaPath:y}}handleNullDataPoints(e,n,r,i,a){const o=this.w;if(e[r][i]===null&&o.config.markers.showNullDataPoints||e[r].length===1){let s=this.strokeWidth-o.config.markers.strokeWidth/2;s>0||(s=0);let l=this.markers.plotChartMarkers({pointsPos:n,seriesIndex:a,j:i+1,pSize:s,alwaysDrawMarker:!0});l!==null&&this.elPointsMain.add(l)}}}class rge{constructor(e){this.ctx=e,this.w=e.w}drawYAxisTexts(e,n,r,i){const a=this.w,o=a.config.yaxis[0],s=a.globals.yLabelFormatters[0];return new at(this.ctx).drawText({x:e+o.labels.offsetX,y:n+o.labels.offsetY,text:s(i,r),textAnchor:"middle",fontSize:o.labels.style.fontSize,fontFamily:o.labels.style.fontFamily,foreColor:Array.isArray(o.labels.style.colors)?o.labels.style.colors[r]:o.labels.style.colors})}}class ige{constructor(e){this.ctx=e,this.w=e.w;const n=this.w;this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels,this.lineColorArr=n.globals.stroke.colors!==void 0?n.globals.stroke.colors:n.globals.colors,this.defaultSize=Math.min(n.globals.gridWidth,n.globals.gridHeight),this.centerY=this.defaultSize/2,this.centerX=n.globals.gridWidth/2,n.config.chart.type==="radialBar"?this.fullAngle=360:this.fullAngle=Math.abs(n.config.plotOptions.pie.endAngle-n.config.plotOptions.pie.startAngle),this.initialAngle=n.config.plotOptions.pie.startAngle%this.fullAngle,n.globals.radialSize=this.defaultSize/2.05-n.config.stroke.width-(n.config.chart.sparkline.enabled?0:n.config.chart.dropShadow.blur),this.donutSize=n.globals.radialSize*parseInt(n.config.plotOptions.pie.donut.size,10)/100;let r=n.config.plotOptions.pie.customScale,i=n.globals.gridWidth/2,a=n.globals.gridHeight/2;this.translateX=i-i*r,this.translateY=a-a*r,this.dataLabelsGroup=new at(this.ctx).group({class:"apexcharts-datalabels-group",transform:`translate(${this.translateX}, ${this.translateY}) scale(${r})`}),this.maxY=0,this.sliceLabels=[],this.sliceSizes=[],this.prevSectorAngleArr=[]}draw(e){let n=this,r=this.w;const i=new at(this.ctx);let a=i.group({class:"apexcharts-pie"});if(r.globals.noData)return a;let o=0;for(let c=0;c{this.maxY=Math.max(this.maxY,c)}),r.config.yaxis[0].max&&(this.maxY=r.config.yaxis[0].max),r.config.grid.position==="back"&&this.chartType==="polarArea"&&this.drawPolarElements(a);for(let c=0;c{u.add(c)}),l.attr({transform:`translate(${this.translateX}, ${this.translateY}) scale(${r.config.plotOptions.pie.customScale})`}),l.add(u),a.add(l),this.donutDataLabels.show){let c=this.renderInnerDataLabels(this.dataLabelsGroup,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});a.add(c)}return r.config.grid.position==="front"&&this.chartType==="polarArea"&&this.drawPolarElements(a),a}drawArcs(e,n){let r=this.w;const i=new Io(this.ctx);let a=new at(this.ctx),o=new fu(this.ctx),s=a.group({class:"apexcharts-slices"}),l=this.initialAngle,u=this.initialAngle,c=this.initialAngle,f=this.initialAngle;this.strokeWidth=r.config.stroke.show?r.config.stroke.width:0;for(let h=0;h-1&&this.pieClicked(h),r.config.dataLabels.enabled){let R=C.x,I=C.y,O=100*b/this.fullAngle+"%";if(b!==0&&r.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?n.endAngle=n.endAngle-(a+l):a+l{h=b+(i-b)*_,o.animateStartingPos&&(h=a+(i-a)*_,m=n-a+(r-(n-a))*_),f=s.getPiePath({me:s,startAngle:m,angle:h,size:c}),e.node.setAttribute("data:pathOrig",f),e.attr({d:f})}):(f=s.getPiePath({me:s,startAngle:m,angle:i,size:c}),o.isTrack||(l.globals.animationEnded=!0),e.node.setAttribute("data:pathOrig",f),e.attr({d:f,"stroke-width":s.strokeWidth}))}pieClicked(e){let n=this.w,r=this,i,a=r.sliceSizes[e]+(n.config.plotOptions.pie.expandOnClick?4:0),o=n.globals.dom.Paper.findOne(`.apexcharts-${r.chartType.toLowerCase()}-slice-${e}`);if(o.attr("data:pieClicked")==="true"){o.attr({"data:pieClicked":"false"}),this.revertDataLabelsInner(o.node,this.donutDataLabels);let u=o.attr("data:pathOrig");o.attr({d:u});return}else{let u=n.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area");Array.prototype.forEach.call(u,c=>{c.setAttribute("data:pieClicked","false");let f=c.getAttribute("data:pathOrig");f&&c.setAttribute("d",f)}),n.globals.capturedDataPointIndex=e,o.attr("data:pieClicked","true")}let s=parseInt(o.attr("data:startAngle"),10),l=parseInt(o.attr("data:angle"),10);i=r.getPiePath({me:r,startAngle:s,angle:l,size:a}),l!==360&&o.plot(i)}getChangedPath(e,n){let r="";return this.dynamicAnim&&this.w.globals.dataChanged&&(r=this.getPiePath({me:this,startAngle:e,angle:n-e,size:this.size})),r}getPiePath({me:e,startAngle:n,angle:r,size:i}){let a;const o=new at(this.ctx);let s=n,l=Math.PI*(s-90)/180,u=r+n;Math.ceil(u)>=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(u=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(u)>this.fullAngle&&(u-=this.fullAngle);let c=Math.PI*(u-90)/180,f=e.centerX+i*Math.cos(l),h=e.centerY+i*Math.sin(l),m=e.centerX+i*Math.cos(c),b=e.centerY+i*Math.sin(c),_=Ee.polarToCartesian(e.centerX,e.centerY,e.donutSize,u),y=Ee.polarToCartesian(e.centerX,e.centerY,e.donutSize,s),x=r>180?1:0;const C=["M",f,h,"A",i,i,0,x,1,m,b];return e.chartType==="donut"?a=[...C,"L",_.x,_.y,"A",e.donutSize,e.donutSize,0,x,0,y.x,y.y,"L",f,h,"z"].join(" "):e.chartType==="pie"||e.chartType==="polarArea"?a=[...C,"L",e.centerX,e.centerY,"L",f,h].join(" "):a=[...C].join(" "),o.roundPathCorners(a,this.strokeWidth*2)}drawPolarElements(e){const n=this.w,r=new Xhe(this.ctx),i=new at(this.ctx),a=new rge(this.ctx),o=i.group(),s=i.group(),l=r.niceScale(0,Math.ceil(this.maxY),0),u=l.result.reverse();let c=l.result.length;this.maxY=l.niceMax;let f=n.globals.radialSize,h=f/(c-1);for(let m=0;m1&&e.total.show&&(o=e.total.color);let s=a.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),l=a.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value"),u=e.value.formatter;r=u(r,a),!i&&typeof e.total.formatter=="function"&&(r=e.total.formatter(a));const c=n===e.total.label;n=this.donutDataLabels.total.label?e.name.formatter(n,c,a):"",s!==null&&(s.textContent=n),l!==null&&(l.textContent=r),s!==null&&(s.style.fill=o)}printDataLabelsInner(e,n){let r=this.w,i=e.getAttribute("data:value"),a=r.globals.seriesNames[parseInt(e.parentNode.getAttribute("rel"),10)-1];r.globals.series.length>1&&this.printInnerLabels(n,a,i,e);let o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");o!==null&&(o.style.opacity=1)}drawSpokes(e){const n=this.w,r=new at(this.ctx),i=n.config.plotOptions.polarArea.spokes;if(i.strokeWidth===0)return;let a=[],o=360/n.globals.series.length;for(let s=0;s{const u=r.drawLine(s.x,s.y,this.centerX,this.centerY,Array.isArray(i.connectorColors)?i.connectorColors[l]:i.connectorColors);e.add(u)})}revertDataLabelsInner(){const e=this.w;if(this.donutDataLabels.show){let n=e.globals.dom.Paper.findOne(".apexcharts-datalabels-group"),r=this.renderInnerDataLabels(n,this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show});e.globals.dom.Paper.findOne(".apexcharts-radialbar, .apexcharts-pie").add(r)}}}class wbt{constructor(e){this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;const n=this.w;this.graphics=new at(this.ctx),this.lineColorArr=n.globals.stroke.colors!==void 0?n.globals.stroke.colors:n.globals.colors,this.defaultSize=n.globals.svgHeight{let y=b.length===n.globals.dataPoints,x=this.graphics.group().attr({class:"apexcharts-series","data:longestSeries":y,seriesName:Ee.escapeString(n.globals.seriesNames[_]),rel:_+1,"data:realIndex":_});this.dataRadiusOfPercent[_]=[],this.dataRadius[_]=[],this.angleArr[_]=[],b.forEach((I,O)=>{const N=Math.abs(this.maxValue-this.minValue);I=I-this.minValue,this.isLog&&(I=this.coreUtils.getLogVal(this.logBase,I,0)),this.dataRadiusOfPercent[_][O]=I/N,this.dataRadius[_][O]=this.dataRadiusOfPercent[_][O]*this.size,this.angleArr[_][O]=O*this.disAngle}),f=this.getDataPointsPos(this.dataRadius[_],this.angleArr[_]);const C=this.createPaths(f,{x:0,y:0});h=this.graphics.group({class:"apexcharts-series-markers-wrap apexcharts-element-hidden"}),m=this.graphics.group({class:"apexcharts-datalabels","data:realIndex":_}),n.globals.delayedElements.push({el:h.node,index:_});const A={i:_,realIndex:_,animationDelay:_,initialSpeed:n.config.chart.animations.speed,dataChangeSpeed:n.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-radar",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:n.globals.stroke.colors[_],strokeLineCap:n.config.stroke.lineCap};let R=null;n.globals.previousPaths.length>0&&(R=this.getPreviousPath(_));for(let I=0;I{let k=new V_(this.ctx).getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:_,dataPointIndex:O}),D=this.graphics.drawMarker(f[O].x,f[O].y,k);D.attr("rel",O),D.attr("j",O),D.attr("index",_),D.node.setAttribute("default-marker-size",k.pSize);let P=this.graphics.group({class:"apexcharts-series-markers"});P&&P.add(D),h.add(P),x.add(h);const j=n.config.dataLabels;if(j.enabled){let M=j.formatter(n.globals.series[_][O],{seriesIndex:_,dataPointIndex:O,w:n});a.plotDataLabelsText({x:f[O].x,y:f[O].y,text:M,textAnchor:"middle",i:_,j:_,parent:m,offsetCorrection:!1,dataLabelsConfig:vn({},j)})}x.add(m)}),i.push(x)}),this.drawPolygons({parent:c}),n.config.xaxis.labels.show){const b=this.drawXAxisTexts();c.add(b)}return i.forEach(b=>{c.add(b)}),c.add(this.yaxisLabels),c}drawPolygons(e){const n=this.w,{parent:r}=e,i=new rge(this.ctx),a=n.globals.yAxisScale[0].result.reverse(),o=a.length;let s=[],l=this.size/(o-1);for(let f=0;f{const m=Ee.getPolygonPos(f,this.dataPointsLen);let b="";m.forEach((_,y)=>{if(h===0){const x=this.graphics.drawLine(_.x,_.y,0,0,Array.isArray(this.polygons.connectorColors)?this.polygons.connectorColors[y]:this.polygons.connectorColors);c.push(x)}y===0&&this.yaxisLabelsTextsPos.push({x:_.x,y:_.y}),b+=_.x+","+_.y+" "}),u.push(b)}),u.forEach((f,h)=>{const m=this.polygons.strokeColors,b=this.polygons.strokeWidth,_=this.graphics.drawPolygon(f,Array.isArray(m)?m[h]:m,Array.isArray(b)?b[h]:b,n.globals.radarPolygons.fill.colors[h]);r.add(_)}),c.forEach(f=>{r.add(f)}),n.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach((f,h)=>{const m=i.drawYAxisTexts(f.x,f.y,h,a[h]);this.yaxisLabels.add(m)})}drawXAxisTexts(){const e=this.w,n=e.config.xaxis.labels;let r=this.graphics.group({class:"apexcharts-xaxis"}),i=Ee.getPolygonPos(this.size,this.dataPointsLen);return e.globals.labels.forEach((a,o)=>{let s=e.config.xaxis.labels.formatter,l=new u_(this.ctx);if(i[o]){let u=this.getTextPos(i[o],this.size),c=s(a,{seriesIndex:-1,dataPointIndex:o,w:e});l.plotDataLabelsText({x:u.newX,y:u.newY,text:c,textAnchor:u.textAnchor,i:o,j:o,parent:r,className:"apexcharts-xaxis-label",color:Array.isArray(n.style.colors)&&n.style.colors[o]?n.style.colors[o]:"#a8a8a8",dataLabelsConfig:vn({textAnchor:u.textAnchor,dropShadow:{enabled:!1}},n),offsetCorrection:!1}).on("click",h=>{if(typeof e.config.chart.events.xAxisLabelClick=="function"){const m=Object.assign({},e,{labelIndex:o});e.config.chart.events.xAxisLabelClick(h,this.ctx,m)}})}}),r}createPaths(e,n){let r=[],i=[],a=[],o=[];if(e.length){i=[this.graphics.move(n.x,n.y)],o=[this.graphics.move(n.x,n.y)];let s=this.graphics.move(e[0].x,e[0].y),l=this.graphics.move(e[0].x,e[0].y);e.forEach((u,c)=>{s+=this.graphics.line(u.x,u.y),l+=this.graphics.line(u.x,u.y),c===e.length-1&&(s+="Z",l+="Z")}),r.push(s),a.push(l)}return{linePathsFrom:i,linePathsTo:r,areaPathsFrom:o,areaPathsTo:a}}getTextPos(e,n){let r=10,i="middle",a=e.x,o=e.y;return Math.abs(e.x)>=r?e.x>0?(i="start",a+=10):e.x<0&&(i="end",a-=10):i="middle",Math.abs(e.y)>=n-r&&(e.y<0?o-=10:e.y>0&&(o+=10)),{textAnchor:i,newX:a,newY:o}}getPreviousPath(e){let n=this.w,r=null;for(let i=0;i0&&parseInt(a.realIndex,10)===parseInt(e,10)&&typeof n.globals.previousPaths[i].paths[0]<"u"&&(r=n.globals.previousPaths[i].paths[0].d)}return r}getDataPointsPos(e,n,r=this.dataPointsLen){e=e||[],n=n||[];let i=[];for(let a=0;a=360&&(m=360-Math.abs(this.startAngle)-.1);let b=r.drawPath({d:"",stroke:f,strokeWidth:s*parseInt(c.strokeWidth,10)/100,fill:"none",strokeOpacity:c.opacity,classes:"apexcharts-radialbar-area"});if(c.dropShadow.enabled){const _=c.dropShadow;a.dropShadow(b,_)}u.add(b),b.attr("id","apexcharts-radialbarTrack-"+l),this.animatePaths(b,{centerX:e.centerX,centerY:e.centerY,endAngle:m,startAngle:h,size:e.size,i:l,totalItems:2,animBeginArr:0,dur:0,isTrack:!0})}return i}drawArcs(e){let n=this.w,r=new at(this.ctx),i=new fu(this.ctx),a=new Io(this.ctx),o=r.group(),s=this.getStrokeWidth(e);e.size=e.size-s/2;let l=n.config.plotOptions.radialBar.hollow.background,u=e.size-s*e.series.length-this.margin*e.series.length-s*parseInt(n.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,c=u-n.config.plotOptions.radialBar.hollow.margin;n.config.plotOptions.radialBar.hollow.image!==void 0&&(l=this.drawHollowImage(e,o,u,l));let f=this.drawHollow({size:c,centerX:e.centerX,centerY:e.centerY,fill:l||"transparent"});if(n.config.plotOptions.radialBar.hollow.dropShadow.enabled){const _=n.config.plotOptions.radialBar.hollow.dropShadow;a.dropShadow(f,_)}let h=1;!this.radialDataLabels.total.show&&n.globals.series.length>1&&(h=0);let m=null;if(this.radialDataLabels.show){let _=n.globals.dom.Paper.findOne(".apexcharts-datalabels-group");m=this.renderInnerDataLabels(_,this.radialDataLabels,{hollowSize:u,centerX:e.centerX,centerY:e.centerY,opacity:h})}n.config.plotOptions.radialBar.hollow.position==="back"&&(o.add(f),m&&o.add(m));let b=!1;n.config.plotOptions.radialBar.inverseOrder&&(b=!0);for(let _=b?e.series.length-1:0;b?_>=0:_100?100:e.series[_])/100;let I=Math.round(this.totalAngle*R)+this.startAngle,O;n.globals.dataChanged&&(A=this.startAngle,O=Math.round(this.totalAngle*Ee.negToZero(n.globals.previousPaths[_])/100)+A),Math.abs(I)+Math.abs(C)>360&&(I=I-.01),Math.abs(O)+Math.abs(A)>360&&(O=O-.01);let D=I-C;const P=Array.isArray(n.config.stroke.dashArray)?n.config.stroke.dashArray[_]:n.config.stroke.dashArray;let j=r.drawPath({d:"",stroke:x,strokeWidth:s,fill:"none",fillOpacity:n.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+_,strokeDashArray:P});if(at.setAttrs(j.node,{"data:angle":D,"data:value":e.series[_]}),n.config.chart.dropShadow.enabled){const z=n.config.chart.dropShadow;a.dropShadow(j,z,_)}if(a.setSelectionFilter(j,0,_),this.addListeners(j,this.radialDataLabels),y.add(j),j.attr({index:0,j:_}),this.barLabels.enabled){let z=Ee.polarToCartesian(e.centerX,e.centerY,e.size,C),G=this.barLabels.formatter(n.globals.seriesNames[_],{seriesIndex:_,w:n}),Y=["apexcharts-radialbar-label"];this.barLabels.onClick||Y.push("apexcharts-no-click");let H=this.barLabels.useSeriesColors?n.globals.colors[_]:n.config.chart.foreColor;H||(H=n.config.chart.foreColor);const W=z.x+this.barLabels.offsetX,q=z.y+this.barLabels.offsetY;let Q=r.drawText({x:W,y:q,text:G,textAnchor:"end",dominantBaseline:"middle",fontFamily:this.barLabels.fontFamily,fontWeight:this.barLabels.fontWeight,fontSize:this.barLabels.fontSize,foreColor:H,cssClass:Y.join(" ")});Q.on("click",this.onBarLabelClick),Q.attr({rel:_+1}),C!==0&&Q.attr({"transform-origin":`${W} ${q}`,transform:`rotate(${C} 0 0)`}),y.add(Q)}let M=0;this.initialAnim&&!n.globals.resized&&!n.globals.dataChanged&&(M=n.config.chart.animations.speed),n.globals.dataChanged&&(M=n.config.chart.animations.dynamicAnimation.speed),this.animDur=M/(e.series.length*1.2)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(j,{centerX:e.centerX,centerY:e.centerY,endAngle:I,startAngle:C,prevEndAngle:O,prevStartAngle:A,size:e.size,i:_,totalItems:2,animBeginArr:this.animBeginArr,dur:M,shouldSetPrevPaths:!0})}return{g:o,elHollow:f,dataLabels:m}}drawHollow(e){let r=new at(this.ctx).drawCircle(e.size*2);return r.attr({class:"apexcharts-radialbar-hollow",cx:e.centerX,cy:e.centerY,r:e.size,fill:e.fill}),r}drawHollowImage(e,n,r,i){const a=this.w;let o=new fu(this.ctx),s=Ee.randomId(),l=a.config.plotOptions.radialBar.hollow.image;if(a.config.plotOptions.radialBar.hollow.imageClipped)o.clippedImgArea({width:r,height:r,image:l,patternID:`pattern${a.globals.cuid}${s}`}),i=`url(#pattern${a.globals.cuid}${s})`;else{const u=a.config.plotOptions.radialBar.hollow.imageWidth,c=a.config.plotOptions.radialBar.hollow.imageHeight;if(u===void 0&&c===void 0){let f=a.globals.dom.Paper.image(l,function(h){this.move(e.centerX-h.width/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,e.centerY-h.height/2+a.config.plotOptions.radialBar.hollow.imageOffsetY)});n.add(f)}else{let f=a.globals.dom.Paper.image(l,function(){this.move(e.centerX-u/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,e.centerY-c/2+a.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(u,c)});n.add(f)}}return i}getStrokeWidth(e){const n=this.w;return e.size*(100-parseInt(n.config.plotOptions.radialBar.hollow.size,10))/100/(e.series.length+1)-this.margin}onBarLabelClick(e){let n=parseInt(e.target.getAttribute("rel"),10)-1;const r=this.barLabels.onClick,i=this.w;r&&r(i.globals.seriesNames[n],{w:i,seriesIndex:n})}}class Abt extends d_{draw(e,n){let r=this.w,i=new at(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=e,this.seriesRangeStart=r.globals.seriesRangeStart,this.seriesRangeEnd=r.globals.seriesRangeEnd,this.barHelpers.initVariables(e);let a=i.group({class:"apexcharts-rangebar-series apexcharts-plot-series"});for(let o=0;o0&&(this.visibleI=this.visibleI+1);let y=0,x=0,C=0;this.yRatio.length>1&&(this.yaxisIndex=r.globals.seriesYAxisReverseMap[m][0],C=m);let A=this.barHelpers.initialPositions(m);l=A.y,h=A.zeroW,s=A.x,x=A.barWidth,y=A.barHeight,u=A.xDivision,c=A.yDivision,f=A.zeroH;let R=i.group({class:"apexcharts-datalabels","data:realIndex":m}),I=i.group({class:"apexcharts-rangebar-goals-markers"});for(let O=0;O"u")break;if(this.isHorizontal){M=l+y*this.visibleI;let W=(c-y*G)/2;if(r.config.series[o].data[O].x){let q=this.detectOverlappingBars({i:o,j:O,barYPosition:M,srty:W,barHeight:y,yDivision:c,initPositions:A});y=q.barHeight,M=q.barYPosition}P=this.drawRangeBarPaths(vn({indexes:{i:o,j:O,realIndex:m},barHeight:y,barYPosition:M,zeroW:h,yDivision:c,y1:k,y2:D},z)),x=P.barWidth}else{r.globals.isXNumeric&&(s=(r.globals.seriesX[o][O]-r.globals.minX)/this.xRatio-x/2),j=s+x*this.visibleI;let W=(u-x*G)/2;if(r.config.series[o].data[O].x){let q=this.detectOverlappingBars({i:o,j:O,barXPosition:j,srtx:W,barWidth:x,xDivision:u,initPositions:A});x=q.barWidth,j=q.barXPosition}P=this.drawRangeColumnPaths(vn({indexes:{i:o,j:O,realIndex:m,translationsIndex:C},barWidth:x,barXPosition:j,zeroH:f,xDivision:u},z)),y=P.barHeight}const Y=this.barHelpers.drawGoalLine({barXPosition:P.barXPosition,barYPosition:M,goalX:P.goalX,goalY:P.goalY,barHeight:y,barWidth:x});Y&&I.add(Y),l=P.y,s=P.x;let H=this.barHelpers.getPathFillColor(e,o,O,m);this.renderSeries({realIndex:m,pathFill:H.color,lineFill:H.useRangeColor?H.color:r.globals.stroke.colors[m],j:O,i:o,x:s,y:l,y1:k,y2:D,pathFrom:P.pathFrom,pathTo:P.pathTo,strokeWidth:N,elSeries:_,series:e,barHeight:y,barWidth:x,barXPosition:j,barYPosition:M,columnGroupIndex:b,elDataLabelsWrap:R,elGoalsMarkers:I,visibleSeries:this.visibleI,type:"rangebar"})}a.add(_)}return a}detectOverlappingBars({i:e,j:n,barYPosition:r,barXPosition:i,srty:a,srtx:o,barHeight:s,barWidth:l,yDivision:u,xDivision:c,initPositions:f}){const h=this.w;let m=[],b=h.config.series[e].data[n].rangeName;const _=h.config.series[e].data[n].x,y=Array.isArray(_)?_.join(" "):_,x=h.globals.labels.map(A=>Array.isArray(A)?A.join(" "):A).indexOf(y),C=h.globals.seriesRange[e].findIndex(A=>A.x===y&&A.overlaps.length>0);return this.isHorizontal?(h.config.plotOptions.bar.rangeBarGroupRows?r=a+u*x:r=a+s*this.visibleI+u*x,C>-1&&!h.config.plotOptions.bar.rangeBarOverlap&&(m=h.globals.seriesRange[e][C].overlaps,m.indexOf(b)>-1&&(s=f.barHeight/m.length,r=s*this.visibleI+u*(100-parseInt(this.barOptions.barHeight,10))/100/2+s*(this.visibleI+m.indexOf(b))+u*x))):(x>-1&&!h.globals.timescaleLabels.length&&(h.config.plotOptions.bar.rangeBarGroupRows?i=o+c*x:i=o+l*this.visibleI+c*x),C>-1&&!h.config.plotOptions.bar.rangeBarOverlap&&(m=h.globals.seriesRange[e][C].overlaps,m.indexOf(b)>-1&&(l=f.barWidth/m.length,i=l*this.visibleI+c*(100-parseInt(this.barOptions.barWidth,10))/100/2+l*(this.visibleI+m.indexOf(b))+c*x))),{barYPosition:r,barXPosition:i,barHeight:s,barWidth:l}}drawRangeColumnPaths({indexes:e,x:n,xDivision:r,barWidth:i,barXPosition:a,zeroH:o}){let s=this.w;const{i:l,j:u,realIndex:c,translationsIndex:f}=e,h=this.yRatio[f],m=this.getRangeValue(c,u);let b=Math.min(m.start,m.end),_=Math.max(m.start,m.end);typeof this.series[l][u]>"u"||this.series[l][u]===null?b=o:(b=o-b/h,_=o-_/h);const y=Math.abs(_-b),x=this.barHelpers.getColumnPaths({barXPosition:a,barWidth:i,y1:b,y2:_,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:c,i:c,j:u,w:s});if(!s.globals.isXNumeric)n=n+r;else{const C=this.getBarXForNumericXAxis({x:n,j:u,realIndex:c,barWidth:i});n=C.x,a=C.barXPosition}return{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:y,x:n,y:m.start<0&&m.end<0?b:_,goalY:this.barHelpers.getGoalValues("y",null,o,l,u,f),barXPosition:a}}preventBarOverflow(e){const n=this.w;return e<0&&(e=0),e>n.globals.gridWidth&&(e=n.globals.gridWidth),e}drawRangeBarPaths({indexes:e,y:n,y1:r,y2:i,yDivision:a,barHeight:o,barYPosition:s,zeroW:l}){let u=this.w;const{realIndex:c,j:f}=e;let h=this.preventBarOverflow(l+r/this.invertedYRatio),m=this.preventBarOverflow(l+i/this.invertedYRatio);const b=this.getRangeValue(c,f),_=Math.abs(m-h),y=this.barHelpers.getBarpaths({barYPosition:s,barHeight:o,x1:h,x2:m,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:c,realIndex:c,j:f,w:u});return u.globals.isXNumeric||(n=n+a),{pathTo:y.pathTo,pathFrom:y.pathFrom,barWidth:_,x:b.start<0&&b.end<0?h:m,goalX:this.barHelpers.getGoalValues("x",l,null,c,f),y:n}}getRangeValue(e,n){const r=this.w;return{start:r.globals.seriesRangeStart[e][n],end:r.globals.seriesRangeEnd[e][n]}}}function Kte(t,e){let n=0;for(let a=0;a=s}function Qte(t,e,n,r,i,a,o,s){if(o>=s){const l=r/s;let u=a;for(let c=0;cf&&(f=b),h++;else{if(Qte(a,s,l,u,e,n,r,i),r>=i){const _=u/i;e+=_,r-=_}else{const _=u/r;n+=_,i-=_}l=0,u=0,c=1/0,f=-1/0}}return l>0&&Qte(a,s,l,u,e,n,r,i),a}function Obt(t,e,n){const r=t.length,i=new Array(r);for(let s=0;s{let u=l.map(c=>Math.abs(c));o.push(u)}),this.negRange=this.helpers.checkColorRange(),n.config.series.forEach((l,u)=>{l.data.forEach(c=>{Array.isArray(this.labels[u])||(this.labels[u]=[]),this.labels[u].push(c.x)})}),Ibt.generate(o,n.globals.gridWidth,n.globals.gridHeight).forEach((l,u)=>{let c=r.group({class:"apexcharts-series apexcharts-treemap-series",seriesName:Ee.escapeString(n.globals.seriesNames[u]),rel:u+1,"data:realIndex":u});if(r.setupEventDelegation(c,".apexcharts-treemap-rect"),n.config.chart.dropShadow.enabled){const b=n.config.chart.dropShadow;new Io(this.ctx).dropShadow(a,b,u)}let f=r.group({class:"apexcharts-data-labels"}),h={xMin:1/0,yMin:1/0,xMax:-1/0,yMax:-1/0};l.forEach((b,_)=>{const y=b[0],x=b[1],C=b[2],A=b[3];h.xMin=Math.min(h.xMin,y),h.yMin=Math.min(h.yMin,x),h.xMax=Math.max(h.xMax,C),h.yMax=Math.max(h.yMax,A);let R=this.helpers.getShadeColor(n.config.chart.type,u,_,this.negRange),I=R.color,O=i.fillPath({color:I,seriesNumber:u,dataPointIndex:_}),N=r.drawRect(y,x,C-y,A-x,n.config.plotOptions.treemap.borderRadius,"#fff",1,this.strokeWidth,n.config.plotOptions.treemap.useFillColorAsStroke?I:n.globals.stroke.colors[u]);N.attr({cx:y,cy:x,index:u,i:u,j:_,width:C-y,height:A-x,fill:O}),N.node.classList.add("apexcharts-treemap-rect");let k={x:y+(C-y)/2,y:x+(A-x)/2,width:0,height:0},D={x:y,y:x,width:C-y,height:A-x};if(n.config.chart.animations.enabled&&!n.globals.dataChanged){let z=1;n.globals.resized||(z=n.config.chart.animations.speed),this.animateTreemap(N,k,D,z)}if(n.globals.dataChanged){let z=1;this.dynamicAnim.enabled&&n.globals.shouldAnimate&&(z=this.dynamicAnim.speed,n.globals.previousPaths[u]&&n.globals.previousPaths[u][_]&&n.globals.previousPaths[u][_].rect&&(k=n.globals.previousPaths[u][_].rect),this.animateTreemap(N,k,D,z))}let P=this.getFontSize(b),j=n.config.dataLabels.formatter(this.labels[u][_],{value:n.globals.series[u][_],seriesIndex:u,dataPointIndex:_,w:n});n.config.plotOptions.treemap.dataLabels.format==="truncate"&&(P=parseInt(n.config.dataLabels.style.fontSize,10),j=this.truncateLabels(j,P,y,x,C,A));let M=null;n.globals.series[u][_]&&(M=this.helpers.calculateDataLabels({text:j,x:(y+C)/2,y:(x+A)/2+this.strokeWidth/2+P/3,i:u,j:_,colorProps:R,fontSize:P,series:e})),n.config.dataLabels.enabled&&M&&this.rotateToFitLabel(M,P,j,y,x,C,A),c.add(N),M!==null&&c.add(M)});const m=n.config.plotOptions.treemap.seriesTitle;if(n.config.series.length>1&&m&&m.show){const b=n.config.series[u].name||"";if(b&&h.xMin<1/0&&h.yMin<1/0){const{offsetX:_,offsetY:y,borderColor:x,borderWidth:C,borderRadius:A,style:R}=m,I=R.color||n.config.chart.foreColor,O={left:R.padding.left,right:R.padding.right,top:R.padding.top,bottom:R.padding.bottom},N=r.getTextRects(b,R.fontSize,R.fontFamily),k=N.width+O.left+O.right,D=N.height+O.top+O.bottom,P=h.xMin+(_||0),j=h.yMin+(y||0),M=r.drawRect(P,j,k,D,A,R.background,1,C,x),z=r.drawText({x:P+O.left,y:j+O.top+N.height*.75,text:b,fontSize:R.fontSize,fontFamily:R.fontFamily,fontWeight:R.fontWeight,foreColor:I,cssClass:R.cssClass||""});c.add(M),c.add(z)}}c.add(f),a.add(c)}),a}getFontSize(e){const n=this.w;function r(s){let l,u=0;if(Array.isArray(s[0]))for(l=0;lo-i&&u.width<=s-a){let c=l.rotateAroundCenter(e.node);e.node.setAttribute("transform",`rotate(-90 ${c.x} ${c.y}) translate(${u.height/3})`)}}truncateLabels(e,n,r,i,a,o){const s=new at(this.ctx),u=s.getTextRects(e,n).width+this.w.config.stroke.width+5>a-r&&o-i>a-r?o-i:a-r,c=s.getTextBasedOnMaxWidth({text:e,maxWidth:u,fontSize:n});return e.length!==c.length&&u/n<5?"":c}animateTreemap(e,n,r,i){const a=new G_(this.ctx);a.animateRect(e,n,r,i,()=>{a.animationCompleted(e)})}}class Mbt{constructor(e,n){this.ctx=n,this.w=n.w,this.el=e}setupElements(){const{globals:e,config:n}=this.w,r=n.chart.type,i=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"],a=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"];e.axisCharts=i.includes(r),e.xyCharts=a.includes(r),e.isBarHorizontal=["bar","rangeBar","boxPlot"].includes(r)&&n.plotOptions.bar.horizontal,e.chartClass=`.apexcharts${e.chartID}`,e.dom.baseEl=this.el,e.dom.elWrap=Ma.createElementNS("http://www.w3.org/1999/xhtml","div"),at.setAttrs(e.dom.elWrap,{id:e.chartClass.substring(1),class:`apexcharts-canvas ${e.chartClass.substring(1)}`}),this.el.appendChild(e.dom.elWrap);const o=yi.isBrowser()?window.SVG:globalThis.SVG;if(e.dom.Paper=o().addTo(e.dom.elWrap),e.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:`translate(${n.chart.offsetX}, ${n.chart.offsetY})`}),e.dom.Paper.node.style.background=n.theme.mode==="dark"&&!n.chart.background?"#343A3F":n.theme.mode==="light"&&!n.chart.background?"#fff":n.chart.background,this.setSVGDimensions(),e.dom.elLegendForeign=document.createElementNS(e.SVGNS,"foreignObject"),at.setAttrs(e.dom.elLegendForeign,{x:0,y:0,width:e.svgWidth,height:e.svgHeight}),e.dom.elLegendWrap=document.createElement("div"),e.dom.elLegendWrap.classList.add("apexcharts-legend"),e.dom.elWrap.appendChild(e.dom.elLegendWrap),e.dom.Paper.node.appendChild(e.dom.elLegendForeign),n.chart.accessibility.enabled){const s=this.getAccessibleChartLabel();e.dom.Paper.attr({role:"img","aria-label":s});const l=document.createElementNS(e.SVGNS,"title");if(l.textContent=n.title.text||"Chart",e.dom.Paper.node.insertBefore(l,e.dom.elLegendForeign.nextSibling),n.chart.accessibility.description){const u=document.createElementNS(e.SVGNS,"desc");u.textContent=n.chart.accessibility.description,e.dom.Paper.node.insertBefore(u,l.nextSibling)}}e.dom.elGraphical=e.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),e.dom.elDefs=e.dom.Paper.defs(),e.dom.Paper.add(e.dom.elGraphical),e.dom.elGraphical.add(e.dom.elDefs)}plotChartType(e,n){const{w:r,ctx:i}=this,{config:a,globals:o}=r,s={line:{series:[],i:[]},area:{series:[],i:[]},scatter:{series:[],i:[]},bubble:{series:[],i:[]},bar:{series:[],i:[]},candlestick:{series:[],i:[]},boxPlot:{series:[],i:[]},rangeBar:{series:[],i:[]},rangeArea:{series:[],seriesRangeEnd:[],i:[]}},l=a.chart.type||"line";let u=null,c=0;o.series.forEach((y,x)=>{var C,A;const R=((C=e[x])==null?void 0:C.type)==="column"?"bar":((A=e[x])==null?void 0:A.type)||(l==="column"?"bar":l);s[R]?(R==="rangeArea"?(s[R].series.push(o.seriesRangeStart[x]),s[R].seriesRangeEnd.push(o.seriesRangeEnd[x])):s[R].series.push(y),s[R].i.push(x),R==="bar"&&(r.globals.columnSeries=s.bar)):["heatmap","treemap","pie","donut","polarArea","radialBar","radar"].includes(R)?u=R:console.warn(`You have specified an unrecognized series type (${R}).`),l!==R&&R!=="scatter"&&c++}),c>0&&(u&&console.warn(`Chart or series type ${u} cannot appear with other chart or series types.`),s.bar.series.length>0&&a.plotOptions.bar.horizontal&&(c-=s.bar.series.length,s.bar={series:[],i:[]},r.globals.columnSeries={series:[],i:[]},console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"))),o.comboCharts||(o.comboCharts=c>0);const f=new e6(i,n),h=new J4(i,n);i.pie=new ige(i);const m=new Tbt(i);i.rangeBar=new Abt(i,n);const b=new wbt(i);let _=[];if(o.comboCharts){const y=new xa(i);if(s.area.series.length>0&&_.push(...y.drawSeriesByGroup(s.area,o.areaGroups,"area",f)),s.bar.series.length>0)if(a.chart.stacked){const x=new Wte(i,n);_.push(x.draw(s.bar.series,s.bar.i))}else i.bar=new d_(i,n),_.push(i.bar.draw(s.bar.series,s.bar.i));if(s.rangeArea.series.length>0&&_.push(f.draw(s.rangeArea.series,"rangeArea",s.rangeArea.i,s.rangeArea.seriesRangeEnd)),s.line.series.length>0&&_.push(...y.drawSeriesByGroup(s.line,o.lineGroups,"line",f)),s.candlestick.series.length>0&&_.push(h.draw(s.candlestick.series,"candlestick",s.candlestick.i)),s.boxPlot.series.length>0&&_.push(h.draw(s.boxPlot.series,"boxPlot",s.boxPlot.i)),s.rangeBar.series.length>0&&_.push(i.rangeBar.draw(s.rangeBar.series,s.rangeBar.i)),s.scatter.series.length>0){const x=new e6(i,n,!0);_.push(x.draw(s.scatter.series,"scatter",s.scatter.i))}if(s.bubble.series.length>0){const x=new e6(i,n,!0);_.push(x.draw(s.bubble.series,"bubble",s.bubble.i))}}else switch(a.chart.type){case"line":_=f.draw(o.series,"line");break;case"area":_=f.draw(o.series,"area");break;case"bar":a.chart.stacked?_=new Wte(i,n).draw(o.series):(i.bar=new d_(i,n),_=i.bar.draw(o.series));break;case"candlestick":{_=new J4(i,n).draw(o.series,"candlestick");break}case"boxPlot":{_=new J4(i,n).draw(o.series,a.chart.type);break}case"rangeBar":_=i.rangeBar.draw(o.series);break;case"rangeArea":_=f.draw(o.seriesRangeStart,"rangeArea",void 0,o.seriesRangeEnd);break;case"heatmap":{_=new ybt(i,n).draw(o.series);break}case"treemap":{_=new Nbt(i).draw(o.series);break}case"pie":case"donut":case"polarArea":_=i.pie.draw(o.series);break;case"radialBar":_=m.draw(o.series);break;case"radar":_=b.draw(o.series);break;default:_=f.draw(o.series)}return _}setSVGDimensions(){const{globals:e,config:n}=this.w;n.chart.width=n.chart.width||"100%",n.chart.height=n.chart.height||"auto",e.svgWidth=n.chart.width,e.svgHeight=n.chart.height;let r=Ee.getDimensions(this.el);const i=n.chart.width.toString().split(/[0-9]+/g).pop();i==="%"?Ee.isNumber(r[0])&&(r[0].width===0&&(r=Ee.getDimensions(this.el.parentNode)),e.svgWidth=r[0]*parseInt(n.chart.width,10)/100):(i==="px"||i==="")&&(e.svgWidth=parseInt(n.chart.width,10));const a=String(n.chart.height).toString().split(/[0-9]+/g).pop();if(e.svgHeight!=="auto"&&e.svgHeight!=="")if(a==="%"){const o=Ee.getDimensions(this.el.parentNode);e.svgHeight=o[1]*parseInt(n.chart.height,10)/100}else e.svgHeight=parseInt(n.chart.height,10);else e.svgHeight=e.axisCharts?e.svgWidth/1.61:e.svgWidth/1.2;if(e.svgWidth=Math.max(e.svgWidth,0),e.svgHeight=Math.max(e.svgHeight,0),at.setAttrs(e.dom.Paper.node,{width:e.svgWidth,height:e.svgHeight}),a!=="%"){const o=n.chart.sparkline.enabled?0:e.axisCharts?n.chart.parentHeightOffset:0;e.dom.Paper.node.parentNode.parentNode.style.minHeight=`${e.svgHeight+o}px`}e.dom.elWrap.style.width=`${e.svgWidth}px`,e.dom.elWrap.style.height=`${e.svgHeight}px`}shiftGraphPosition(){const{globals:e}=this.w,{translateY:n,translateX:r}=e;at.setAttrs(e.dom.elGraphical.node,{transform:`translate(${r}, ${n})`})}resizeNonAxisCharts(){const{w:e}=this,{globals:n}=e;let r=0,i=e.config.chart.sparkline.enabled?1:15;i+=e.config.grid.padding.bottom,["top","bottom"].includes(e.config.legend.position)&&e.config.legend.show&&!e.config.legend.floating&&(r=new Qhe(this.ctx).legendHelpers.getLegendDimensions().clwh+7);const a=e.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie");let o=e.globals.radialSize*2.05;if(a&&!e.config.chart.sparkline.enabled&&e.config.plotOptions.radialBar.startAngle!==0){const l=Ee.getBoundingClientRect(a);o=l.bottom;const u=l.bottom-l.top;o=Math.max(e.globals.radialSize*2.05,u)}const s=Math.ceil(o+n.translateY+r+i);n.dom.elLegendForeign&&n.dom.elLegendForeign.setAttribute("height",s),!(e.config.chart.height&&String(e.config.chart.height).includes("%"))&&(n.dom.elWrap.style.height=`${s}px`,at.setAttrs(n.dom.Paper.node,{height:s}),n.dom.Paper.node.parentNode.parentNode.style.minHeight=`${s}px`)}coreCalculations(){new QL(this.ctx).init()}resetGlobals(){const e=()=>this.w.config.series.map(()=>[]),n=new Yhe,{globals:r}=this.w,i={dataWasParsed:r.dataWasParsed,originalSeries:r.originalSeries};n.initGlobalVars(r),r.seriesXvalues=e(),r.seriesYvalues=e(),i.dataWasParsed&&(r.dataWasParsed=i.dataWasParsed,r.originalSeries=i.originalSeries)}isMultipleY(){return Array.isArray(this.w.config.yaxis)&&this.w.config.yaxis.length>1?(this.w.globals.isMultipleYAxis=!0,!0):!1}xySettings(){const{w:e}=this;let n=null;if(e.globals.axisCharts){if(e.config.xaxis.crosshairs.position==="back"&&new ZL(this.ctx).drawXCrosshairs(),e.config.yaxis[0].crosshairs.position==="back"&&new ZL(this.ctx).drawYCrosshairs(),e.config.xaxis.type==="datetime"&&e.config.xaxis.labels.formatter===void 0){this.ctx.timeScale=new bbt(this.ctx);let i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}n=new xa(this.ctx).getCalculatedRatios()}return n}updateSourceChart(e){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:e.w.globals.minX,max:e.w.globals.maxX}}}},!1,!1)}setupBrushHandler(){const{ctx:e,w:n}=this;if(n.config.chart.brush.enabled&&typeof n.config.chart.events.selection!="function"){const r=Array.isArray(n.config.chart.brush.targets)?n.config.chart.brush.targets:[n.config.chart.brush.target];r.forEach(i=>{const a=e.constructor.getChartByID(i);a.w.globals.brushSource=this.ctx,typeof a.w.config.chart.events.zoomed!="function"&&(a.w.config.chart.events.zoomed=()=>this.updateSourceChart(a)),typeof a.w.config.chart.events.scrolled!="function"&&(a.w.config.chart.events.scrolled=()=>this.updateSourceChart(a))}),n.config.chart.events.selection=(i,a)=>{r.forEach(o=>{e.constructor.getChartByID(o).ctx.updateHelpers._updateOptions({xaxis:{min:a.xaxis.min,max:a.xaxis.max}},!1,!1,!1,!1)})}}}getAccessibleChartLabel(){const e=this.w,n=e.config;let r="";if(n.chart.accessibility&&n.chart.accessibility.description)r=n.chart.accessibility.description;else if(n.title.text){const i=n.chart.type;r=`${n.title.text}. ${i} chart`,n.subtitle.text&&(r+=`. ${n.subtitle.text}`)}else{const i=n.chart.type,a=e.globals.series.length||(n.series?n.series.length:0);r=`${i} chart with ${a} data series`}return r}}class age{static invalidateAll(e){!e||!e.globals||(e.globals.cachedSelectors&&(e.globals.cachedSelectors={}),e.globals.domCache&&e.globals.domCache.clear(),e.globals.dimensionCache={})}static invalidateDimensions(e){!e||!e.globals||(e.globals.dimensionCache={})}static invalidateSelectors(e){!e||!e.globals||e.globals.cachedSelectors&&(e.globals.cachedSelectors={})}static getCachedSelector(e,n,r){return!e||!e.globals?r():(e.globals.cachedSelectors||(e.globals.cachedSelectors={}),e.globals.cachedSelectors[n]||(e.globals.cachedSelectors[n]=r()),e.globals.cachedSelectors[n])}static getCachedDimension(e,n,r,i=1e3){if(!e||!e.globals)return r();e.globals.dimensionCache||(e.globals.dimensionCache={});const a=e.globals.dimensionCache[n],o=Date.now();if(a&&a.lastUpdate&&o-a.lastUpdate{let s=[this.ctx];i&&(s=this.ctx.getSyncedCharts()),this.ctx.w.globals.isExecCalled&&(s=[this.ctx],this.ctx.w.globals.isExecCalled=!1),s.forEach((l,u)=>{let c=l.w;if(c.globals.shouldAnimate=r,n||(c.globals.resized=!0,c.globals.dataChanged=!0,r&&l.series.getPreviousPaths()),e&&typeof e=="object"&&(l.config=new eS(e),e=xa.extendArrayProps(l.config,e,c),l.w.globals.chartID!==this.ctx.w.globals.chartID&&delete e.series,c.config=Ee.extend(c.config,e),a&&(c.globals.lastXAxis=e.xaxis?Ee.clone(e.xaxis):[],c.globals.lastYAxis=e.yaxis?Ee.clone(e.yaxis):[],c.globals.initialConfig=Ee.extend({},c.config),c.globals.initialSeries=Ee.clone(c.config.series),e.series))){for(let f=0;f{u===s.length-1&&o(l)})})})}_updateSeries(e,n,r=!1){return new Promise(i=>{const a=this.w;return a.globals.shouldAnimate=n,a.globals.dataChanged=!0,age.invalidateSelectors(a),n&&this.ctx.series.getPreviousPaths(),this.ctx.data.resetParsingFlags(),this.ctx.data.parseData(e),r&&(a.globals.initialConfig.series=Ee.clone(a.config.series),a.globals.initialSeries=Ee.clone(a.config.series)),this.ctx.update().then(()=>{i(this.ctx)})})}_extendSeries(e,n){const r=this.w,i=r.config.series[n];return rr(vn({},r.config.series[n]),{name:e.name?e.name:i?.name,color:e.color?e.color:i?.color,type:e.type?e.type:i?.type,group:e.group?e.group:i?.group,hidden:typeof e.hidden<"u"?e.hidden:i?.hidden,data:e.data?e.data:i?.data,zIndex:typeof e.zIndex<"u"?e.zIndex:n})}toggleDataPointSelection(e,n){const r=this.w;let i=null;const a=`.apexcharts-series[data\\:realIndex='${e}']`;if(r.globals.axisCharts?i=r.globals.dom.Paper.findOne(`${a} path[j='${n}'], ${a} circle[j='${n}'], ${a} rect[j='${n}']`):typeof n>"u"&&(i=r.globals.dom.Paper.findOne(`${a} path[j='${e}']`),(r.config.chart.type==="pie"||r.config.chart.type==="polarArea"||r.config.chart.type==="donut")&&this.ctx.pie.pieClicked(e)),i)new at(this.ctx).pathMouseDown(i,null);else return console.warn("toggleDataPointSelection: Element not found"),null;return i.node?i.node:null}forceXAxisUpdate(e){const n=this.w;return["min","max"].forEach(i=>{typeof e.xaxis[i]<"u"&&(n.config.xaxis[i]=e.xaxis[i],n.globals.lastXAxis[i]=e.xaxis[i])}),e.xaxis.categories&&e.xaxis.categories.length&&(n.config.xaxis.categories=e.xaxis.categories),n.config.xaxis.convertedCatToNumeric&&(e=new Jy(e).convertCatToNumericXaxis(e,this.ctx)),e}forceYAxisUpdate(e){return e.chart&&e.chart.stacked&&e.chart.stackType==="100%"&&(Array.isArray(e.yaxis)?e.yaxis.forEach((n,r)=>{e.yaxis[r].min=0,e.yaxis[r].max=100}):(e.yaxis.min=0,e.yaxis.max=100)),e}revertDefaultAxisMinMax(e){const n=this.w;let r=n.globals.lastXAxis,i=n.globals.lastYAxis;e&&e.xaxis&&(r=e.xaxis),e&&e.yaxis&&(i=e.yaxis),n.config.xaxis.min=r.min,n.config.xaxis.max=r.max;const a=o=>{typeof i[o]<"u"&&(n.config.yaxis[o].min=i[o].min,n.config.yaxis[o].max=i[o].max)};n.config.yaxis.map((o,s)=>{n.globals.zoomed||typeof i[s]<"u"?a(s):typeof this.ctx.opts.yaxis[s]<"u"&&(o.min=this.ctx.opts.yaxis[s].min,o.max=this.ctx.opts.yaxis[s].max)})}}yi.isBrowser()?(typeof window.SVG>"u"&&(window.SVG=jF),typeof window.Apex>"u"&&(window.Apex={})):typeof globalThis<"u"&&typeof globalThis.Apex>"u"&&(globalThis.Apex={});class Jte{constructor(e){this.ctx=e,this.w=e.w}initModules(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","isSeriesHidden","highlightSeries","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend","keydown","keyup"],this.ctx.animations=new G_(this.ctx),this.ctx.axes=new A1t(this.ctx),this.ctx.core=new Mbt(this.ctx.el,this.ctx),this.ctx.config=new eS({}),this.ctx.data=new LF(this.ctx),this.ctx.grid=new Khe(this.ctx),this.ctx.graphics=new at(this.ctx),this.ctx.coreUtils=new xa(this.ctx),this.ctx.crosshairs=new ZL(this.ctx),this.ctx.events=new w1t(this.ctx),this.ctx.exports=new ry(this.ctx),this.ctx.fill=new fu(this.ctx),this.ctx.localization=new T1t(this.ctx),this.ctx.options=new Lg,this.ctx.responsive=new R1t(this.ctx),this.ctx.series=new _u(this.ctx),this.ctx.theme=new O1t(this.ctx),this.ctx.formatters=new cx(this.ctx),this.ctx.titleSubtitle=new I1t(this.ctx),this.ctx.legend=new Qhe(this.ctx),this.ctx.toolbar=new Zhe(this.ctx),this.ctx.tooltip=new Yte(this.ctx),this.ctx.dimensions=new ST(this.ctx),this.ctx.updateHelpers=new Dbt(this.ctx),this.ctx.zoomPanSelection=new dbt(this.ctx),this.ctx.w.globals.tooltip=new Yte(this.ctx)}}class ene{constructor(e){this.ctx=e,this.w=e.w}clear({isUpdating:e}){this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.w.globals.resizeObserver&&typeof this.w.globals.resizeObserver.disconnect=="function"&&(this.w.globals.resizeObserver.disconnect(),this.w.globals.resizeObserver=null),age.invalidateAll(this.w),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}killSVG(e){e.each(function(){this.removeClass("*"),this.off()},!0),e.clear()}clearDomElements({isUpdating:e}){const n=this.w.globals.dom.Paper.node;n.parentNode&&n.parentNode.parentNode&&!e&&(n.parentNode.parentNode.style.minHeight="unset");const r=this.w.globals.dom.baseEl;r&&this.ctx.eventList.forEach(a=>{r.removeEventListener(a,this.ctx.events.documentEvent)});const i=this.w.globals.dom;if(this.ctx.el!==null)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(i.Paper),i.Paper.remove(),i.elWrap=null,i.elGraphical=null,i.elLegendWrap=null,i.elLegendForeign=null,i.baseEl=null,i.elGridRect=null,i.elGridRectMask=null,i.elGridRectBarMask=null,i.elGridRectMarkerMask=null,i.elForecastMask=null,i.elNonForecastMask=null,i.elDefs=null}}let t8=new WeakMap;function Pbt(t,e){if(yi.isSSR())return;let n=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){const i=t.getBoundingClientRect();(t.style.display==="none"||i.width===0)&&(n=!0)}let r=new ResizeObserver(i=>{n&&e.call(t,i),n=!0});t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach(i=>r.observe(i)):r.observe(t),t8.set(e,r)}function kbt(t,e){if(yi.isSSR())return;let n=t8.get(e);n&&(n.disconnect(),t8.delete(e))}const Lbt=`@keyframes opaque { + 0% { + opacity: 0 + } + + to { + opacity: 1 + } +} + +@keyframes resizeanim { + + 0%, + to { + opacity: 0 + } +} + +.apexcharts-canvas { + position: relative; + direction: ltr !important; + user-select: none +} + +.apexcharts-canvas ::-webkit-scrollbar { + -webkit-appearance: none; + width: 6px +} + +.apexcharts-canvas ::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: rgba(0, 0, 0, .5); + box-shadow: 0 0 1px rgba(255, 255, 255, .5); + -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5) +} + +.apexcharts-inner { + position: relative +} + +.apexcharts-text tspan { + font-family: inherit +} + +rect.legend-mouseover-inactive, +.legend-mouseover-inactive rect, +.legend-mouseover-inactive path, +.legend-mouseover-inactive circle, +.legend-mouseover-inactive line, +.legend-mouseover-inactive text.apexcharts-yaxis-title-text, +.legend-mouseover-inactive text.apexcharts-yaxis-label { + transition: .15s ease all; + opacity: .2 +} + +.apexcharts-legend-text { + padding-left: 15px; + margin-left: -15px; +} + +.apexcharts-legend-series[role="button"]:focus { + outline: 2px solid #008FFB; + outline-offset: 2px; +} + +.apexcharts-legend-series[role="button"]:focus:not(:focus-visible) { + outline: none; +} + +.apexcharts-legend-series[role="button"]:focus-visible { + outline: 2px solid #008FFB; + outline-offset: 2px; +} + +.apexcharts-series-collapsed { + opacity: 0 +} + +.apexcharts-tooltip { + border-radius: 5px; + box-shadow: 2px 2px 6px -4px #999; + cursor: default; + font-size: 14px; + left: 62px; + opacity: 0; + pointer-events: none; + position: absolute; + top: 20px; + display: flex; + flex-direction: column; + overflow: hidden; + white-space: nowrap; + z-index: 12; + transition: .15s ease all +} + +.apexcharts-tooltip.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-tooltip.apexcharts-theme-light { + border: 1px solid #e3e3e3; + background: rgba(255, 255, 255, .96) +} + +.apexcharts-tooltip.apexcharts-theme-dark { + color: #fff; + background: rgba(30, 30, 30, .8) +} + +.apexcharts-tooltip * { + font-family: inherit +} + +.apexcharts-tooltip-title { + padding: 6px; + font-size: 15px; + margin-bottom: 4px +} + +.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { + background: #eceff1; + border-bottom: 1px solid #ddd +} + +.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title { + background: rgba(0, 0, 0, .7); + border-bottom: 1px solid #333 +} + +.apexcharts-tooltip-text-goals-value, +.apexcharts-tooltip-text-y-value, +.apexcharts-tooltip-text-z-value { + display: inline-block; + margin-left: 5px; + font-weight: 600 +} + +.apexcharts-tooltip-text-goals-label:empty, +.apexcharts-tooltip-text-goals-value:empty, +.apexcharts-tooltip-text-y-label:empty, +.apexcharts-tooltip-text-y-value:empty, +.apexcharts-tooltip-text-z-value:empty, +.apexcharts-tooltip-title:empty { + display: none +} + +.apexcharts-tooltip-text-goals-label, +.apexcharts-tooltip-text-goals-value { + padding: 6px 0 5px +} + +.apexcharts-tooltip-goals-group, +.apexcharts-tooltip-text-goals-label, +.apexcharts-tooltip-text-goals-value { + display: flex +} + +.apexcharts-tooltip-text-goals-label:not(:empty), +.apexcharts-tooltip-text-goals-value:not(:empty) { + margin-top: -6px +} + +.apexcharts-tooltip-marker { + display: inline-block; + position: relative; + width: 16px; + height: 16px; + font-size: 16px; + line-height: 16px; + margin-right: 4px; + text-align: center; + vertical-align: middle; + color: inherit; +} + +.apexcharts-tooltip-marker::before { + content: ""; + display: inline-block; + width: 100%; + text-align: center; + color: currentcolor; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + font-size: 26px; + font-family: Arial, Helvetica, sans-serif; + line-height: 14px; + font-weight: 900; +} + +.apexcharts-tooltip-marker[shape="circle"]::before { + content: "\\25CF"; +} + +.apexcharts-tooltip-marker[shape="square"]::before, +.apexcharts-tooltip-marker[shape="rect"]::before { + content: "\\25A0"; + transform: translate(-1px, -2px); +} + +.apexcharts-tooltip-marker[shape="line"]::before { + content: "\\2500"; +} + +.apexcharts-tooltip-marker[shape="diamond"]::before { + content: "\\25C6"; + font-size: 28px; +} + +.apexcharts-tooltip-marker[shape="triangle"]::before { + content: "\\25B2"; + font-size: 22px; +} + +.apexcharts-tooltip-marker[shape="cross"]::before { + content: "\\2715"; + font-size: 18px; +} + +.apexcharts-tooltip-marker[shape="plus"]::before { + content: "\\2715"; + transform: rotate(45deg) translate(-1px, -1px); + font-size: 18px; +} + +.apexcharts-tooltip-marker[shape="star"]::before { + content: "\\2605"; + font-size: 18px; +} + +.apexcharts-tooltip-marker[shape="sparkle"]::before { + content: "\\2726"; + font-size: 20px; +} + +.apexcharts-tooltip-series-group { + padding: 0 10px; + display: none; + text-align: left; + justify-content: left; + align-items: center +} + +.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker { + opacity: 1 +} + +.apexcharts-tooltip-series-group.apexcharts-active, +.apexcharts-tooltip-series-group:last-child { + padding-bottom: 4px +} + +.apexcharts-tooltip-y-group { + padding: 6px 0 5px +} + +.apexcharts-custom-tooltip, +.apexcharts-tooltip-box { + padding: 4px 8px +} + +.apexcharts-tooltip-boxPlot { + display: flex; + flex-direction: column-reverse +} + +.apexcharts-tooltip-box>div { + margin: 4px 0 +} + +.apexcharts-tooltip-box span.value { + font-weight: 700 +} + +.apexcharts-tooltip-rangebar { + padding: 5px 8px +} + +.apexcharts-tooltip-rangebar .category { + font-weight: 600; + color: #777 +} + +.apexcharts-tooltip-rangebar .series-name { + font-weight: 700; + display: block; + margin-bottom: 5px +} + +.apexcharts-xaxistooltip, +.apexcharts-yaxistooltip { + opacity: 0; + pointer-events: none; + color: #373d3f; + font-size: 13px; + text-align: center; + border-radius: 2px; + position: absolute; + z-index: 10; + background: #eceff1; + border: 1px solid #90a4ae +} + +.apexcharts-xaxistooltip { + padding: 9px 10px; + transition: .15s ease all +} + +.apexcharts-xaxistooltip.apexcharts-theme-dark { + background: rgba(0, 0, 0, .7); + border: 1px solid rgba(0, 0, 0, .5); + color: #fff +} + +.apexcharts-xaxistooltip:after, +.apexcharts-xaxistooltip:before { + left: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none +} + +.apexcharts-xaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-left: -6px +} + +.apexcharts-xaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-left: -7px +} + +.apexcharts-xaxistooltip-bottom:after, +.apexcharts-xaxistooltip-bottom:before { + bottom: 100% +} + +.apexcharts-xaxistooltip-top:after, +.apexcharts-xaxistooltip-top:before { + top: 100% +} + +.apexcharts-xaxistooltip-bottom:after { + border-bottom-color: #eceff1 +} + +.apexcharts-xaxistooltip-bottom:before { + border-bottom-color: #90a4ae +} + +.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after, +.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before { + border-bottom-color: rgba(0, 0, 0, .5) +} + +.apexcharts-xaxistooltip-top:after { + border-top-color: #eceff1 +} + +.apexcharts-xaxistooltip-top:before { + border-top-color: #90a4ae +} + +.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after, +.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before { + border-top-color: rgba(0, 0, 0, .5) +} + +.apexcharts-xaxistooltip.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-yaxistooltip { + padding: 4px 10px +} + +.apexcharts-yaxistooltip.apexcharts-theme-dark { + background: rgba(0, 0, 0, .7); + border: 1px solid rgba(0, 0, 0, .5); + color: #fff +} + +.apexcharts-yaxistooltip:after, +.apexcharts-yaxistooltip:before { + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none +} + +.apexcharts-yaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-top: -6px +} + +.apexcharts-yaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-top: -7px +} + +.apexcharts-yaxistooltip-left:after, +.apexcharts-yaxistooltip-left:before { + left: 100% +} + +.apexcharts-yaxistooltip-right:after, +.apexcharts-yaxistooltip-right:before { + right: 100% +} + +.apexcharts-yaxistooltip-left:after { + border-left-color: #eceff1 +} + +.apexcharts-yaxistooltip-left:before { + border-left-color: #90a4ae +} + +.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after, +.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before { + border-left-color: rgba(0, 0, 0, .5) +} + +.apexcharts-yaxistooltip-right:after { + border-right-color: #eceff1 +} + +.apexcharts-yaxistooltip-right:before { + border-right-color: #90a4ae +} + +.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after, +.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before { + border-right-color: rgba(0, 0, 0, .5) +} + +.apexcharts-yaxistooltip.apexcharts-active { + opacity: 1 +} + +.apexcharts-yaxistooltip-hidden { + display: none +} + +.apexcharts-xcrosshairs, +.apexcharts-ycrosshairs { + pointer-events: none; + opacity: 0; + transition: .15s ease all +} + +.apexcharts-xcrosshairs.apexcharts-active, +.apexcharts-ycrosshairs.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-ycrosshairs-hidden { + opacity: 0 +} + +.apexcharts-selection-rect { + cursor: move +} + +.svg_select_shape { + stroke-width: 1; + stroke-dasharray: 10 10; + stroke: black; + stroke-opacity: 0.1; + pointer-events: none; + fill: none; +} + +.svg_select_handle { + stroke-width: 3; + stroke: black; + fill: none; +} + +.svg_select_handle_r { + cursor: e-resize; +} + +.svg_select_handle_l { + cursor: w-resize; +} + +.apexcharts-svg.apexcharts-zoomable.hovering-zoom { + cursor: crosshair +} + +.apexcharts-svg.apexcharts-zoomable.hovering-pan { + cursor: move +} + +.apexcharts-menu-icon, +.apexcharts-pan-icon, +.apexcharts-reset-icon, +.apexcharts-selection-icon, +.apexcharts-toolbar-custom-icon, +.apexcharts-zoom-icon, +.apexcharts-zoomin-icon, +.apexcharts-zoomout-icon { + cursor: pointer; + width: 20px; + height: 20px; + line-height: 24px; + color: #6e8192; + text-align: center +} + +.apexcharts-menu-icon svg, +.apexcharts-reset-icon svg, +.apexcharts-zoom-icon svg, +.apexcharts-zoomin-icon svg, +.apexcharts-zoomout-icon svg { + fill: #6e8192 +} + +.apexcharts-selection-icon svg { + fill: #444; + transform: scale(.76) +} + +.apexcharts-theme-dark .apexcharts-menu-icon svg, +.apexcharts-theme-dark .apexcharts-pan-icon svg, +.apexcharts-theme-dark .apexcharts-reset-icon svg, +.apexcharts-theme-dark .apexcharts-selection-icon svg, +.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg, +.apexcharts-theme-dark .apexcharts-zoom-icon svg, +.apexcharts-theme-dark .apexcharts-zoomin-icon svg, +.apexcharts-theme-dark .apexcharts-zoomout-icon svg { + fill: #f3f4f5 +} + +.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg, +.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg, +.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg { + fill: #008ffb +} + +.apexcharts-theme-light .apexcharts-menu-icon:hover svg, +.apexcharts-theme-light .apexcharts-reset-icon:hover svg, +.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg, +.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg, +.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg, +.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg { + fill: #333 +} + +.apexcharts-menu-icon, +.apexcharts-selection-icon { + position: relative +} + +.apexcharts-reset-icon { + margin-left: 5px +} + +.apexcharts-menu-icon, +.apexcharts-reset-icon, +.apexcharts-zoom-icon { + transform: scale(.85) +} + +.apexcharts-zoomin-icon, +.apexcharts-zoomout-icon { + transform: scale(.7) +} + +.apexcharts-zoomout-icon { + margin-right: 3px +} + +.apexcharts-pan-icon { + transform: scale(.62); + position: relative; + left: 1px; + top: 0 +} + +.apexcharts-pan-icon svg { + fill: #fff; + stroke: #6e8192; + stroke-width: 2 +} + +.apexcharts-pan-icon.apexcharts-selected svg { + stroke: #008ffb +} + +.apexcharts-pan-icon:not(.apexcharts-selected):hover svg { + stroke: #333 +} + +.apexcharts-toolbar { + position: absolute; + z-index: 11; + max-width: 176px; + text-align: right; + border-radius: 3px; + padding: 0 6px 2px; + display: flex; + justify-content: space-between; + align-items: center +} + +.apexcharts-menu { + background: #fff; + position: absolute; + top: 100%; + border: 1px solid #ddd; + border-radius: 3px; + padding: 3px; + right: 10px; + opacity: 0; + min-width: 110px; + transition: .15s ease all; + pointer-events: none +} + +.apexcharts-menu.apexcharts-menu-open { + opacity: 1; + pointer-events: all; + transition: .15s ease all +} + +.apexcharts-menu-item { + padding: 6px 7px; + font-size: 12px; + cursor: pointer +} + +.apexcharts-theme-light .apexcharts-menu-item:hover { + background: #eee +} + +.apexcharts-theme-dark .apexcharts-menu { + background: rgba(0, 0, 0, .7); + color: #fff +} + +@media screen and (min-width:768px) { + .apexcharts-canvas:hover .apexcharts-toolbar { + opacity: 1 + } +} + +.apexcharts-canvas .apexcharts-element-hidden, +.apexcharts-datalabel.apexcharts-element-hidden, +.apexcharts-hide .apexcharts-series-points { + opacity: 0; +} + +.apexcharts-hidden-element-shown { + opacity: 1; + transition: 0.25s ease all; +} + +.apexcharts-datalabel, +.apexcharts-datalabel-label, +.apexcharts-datalabel-value, +.apexcharts-datalabels, +.apexcharts-pie-label { + cursor: default; + pointer-events: none +} + +.apexcharts-pie-label-delay { + opacity: 0; + animation-name: opaque; + animation-duration: .3s; + animation-fill-mode: forwards; + animation-timing-function: ease +} + +.apexcharts-radialbar-label { + cursor: pointer; +} + +.apexcharts-annotation-rect, +.apexcharts-area-series .apexcharts-area, +.apexcharts-gridline, +.apexcharts-line, +.apexcharts-point-annotation-label, +.apexcharts-radar-series path:not(.apexcharts-marker), +.apexcharts-radar-series polygon, +.apexcharts-toolbar svg, +.apexcharts-tooltip .apexcharts-marker, +.apexcharts-xaxis-annotation-label, +.apexcharts-yaxis-annotation-label, +.apexcharts-zoom-rect, +.no-pointer-events { + pointer-events: none +} + +.apexcharts-tooltip-active .apexcharts-marker { + transition: .15s ease all +} + +.apexcharts-radar-series .apexcharts-yaxis { + pointer-events: none; +} + +.resize-triggers { + animation: 1ms resizeanim; + visibility: hidden; + opacity: 0; + height: 100%; + width: 100%; + overflow: hidden +} + +.contract-trigger:before, +.resize-triggers, +.resize-triggers>div { + content: " "; + display: block; + position: absolute; + top: 0; + left: 0 +} + +.resize-triggers>div { + height: 100%; + width: 100%; + background: #eee; + overflow: auto +} + +.contract-trigger:before { + overflow: hidden; + width: 200%; + height: 200% +} + +.apexcharts-bar-goals-markers { + pointer-events: none +} + +.apexcharts-bar-shadows { + pointer-events: none +} + +.apexcharts-rangebar-goals-markers { + pointer-events: none +} + +.apexcharts-disable-transitions * { + transition: none !important; +}`;class qR{constructor(e,n){this.opts=n,this.ctx=this,this.w=new C1t(n).init(),this.el=e,this.w.globals.cuid=Ee.randomId(),this.w.globals.chartID=this.w.config.chart.id?Ee.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Jte(this).initModules(),this.lastUpdateOptions=null,this.create=Ee.bind(this.create,this),yi.isBrowser()&&(this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this))}render(){return new Promise((e,n)=>{var r;if(Ee.elementExists(this.el)){typeof Apex._chartInstances>"u"&&(Apex._chartInstances=[]),this.w.config.chart.id&&Apex._chartInstances.push({id:this.w.globals.chartID,group:this.w.config.chart.group,chart:this}),this.setLocale(this.w.config.chart.defaultLocale);const i=this.w.config.chart.events.beforeMount;if(typeof i=="function"&&i(this,this.w),this.events.fireEvent("beforeMount",[this,this.w]),yi.isBrowser()){window.addEventListener("resize",this.windowResizeHandler),Pbt(this.el.parentNode,this.parentResizeHandler);let o=this.el.getRootNode&&this.el.getRootNode(),s=Ee.is("ShadowRoot",o),l=this.el.ownerDocument,u=s?o.getElementById("apexcharts-css"):l.getElementById("apexcharts-css");if(!u){u=Ma.createElementNS("http://www.w3.org/1999/xhtml","style"),u.id="apexcharts-css",u.textContent=Lbt;const c=((r=this.opts.chart)==null?void 0:r.nonce)||this.w.config.chart.nonce;c&&u.setAttribute("nonce",c),s?o.prepend(u):this.w.config.chart.injectStyleSheet!==!1&&l.head.appendChild(u)}}let a=this.create(this.w.config.series,{});if(!a)return e(this);this.mount(a).then(()=>{typeof this.w.config.chart.events.mounted=="function"&&this.w.config.chart.events.mounted(this,this.w),this.events.fireEvent("mounted",[this,this.w]),e(a)}).catch(o=>{n(o)})}else n(new Error("Element not found"))})}create(e,n){let r=this.w;new Jte(this).initModules();let a=this.w.globals;if(a.noData=!1,a.animationEnded=!1,!Ee.elementExists(this.el)||(this.responsive.checkResponsiveConfig(n),r.config.xaxis.convertedCatToNumeric&&new Jy(r.config).convertCatToNumericXaxis(r.config,this.ctx),this.core.setupElements(),r.config.chart.type==="treemap"&&(r.config.grid.show=!1,r.config.yaxis[0].show=!1),a.svgWidth===0))return a.animationEnded=!0,null;let o=e;e.forEach((_,y)=>{_.hidden&&(o=this.legend.legendHelpers.getSeriesAfterCollapsing({realIndex:y}))});const s=xa.checkComboSeries(o,r.config.chart.type);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;const l=o.every(_=>_.data&&_.data.length===0);(o.length===0||l&&a.collapsedSeries.length<1)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(o),this.theme.init(),new V_(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),(!a.noData||a.collapsedSeries.length===a.series.length||r.config.legend.showForSingleSeries)&&this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),r.config.xaxis.type!=="category"&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=r.globals.minX,this.ctx.toolbar.maxX=r.globals.maxX),this.formatters.heatmapLabelFormatters(),new xa(this).getLargestMarkerSize(),this.dimensions.plotCoords();const f=this.core.xySettings();this.grid.createGridMask();const h=this.core.plotChartType(o,f),m=new u_(this);m.bringForward(),r.config.dataLabels.background.enabled&&m.dataLabelsBackground(),this.core.shiftGraphPosition(),r.globals.dataPoints>50&&r.globals.dom.elWrap.classList.add("apexcharts-disable-transitions");const b={plot:{left:r.globals.translateX,top:r.globals.translateY,width:r.globals.gridWidth,height:r.globals.gridHeight}};return{elGraph:h,xyRatios:f,dimensions:b}}mount(e=null){let n=this,r=n.w;return new Promise((i,a)=>{var o,s;if(n.el===null)return a(new Error("Not enough data to display or target element not found"));(e===null||r.globals.allSeriesCollapsed)&&n.series.handleNoData(),n.grid=new Khe(n);let l=n.grid.drawGrid();if(n.annotations=new E1t(n),n.annotations.drawImageAnnos(),n.annotations.drawTextAnnos(),r.config.grid.position==="back"&&(l&&r.globals.dom.elGraphical.add(l.el),(o=l?.elGridBorders)!=null&&o.node&&r.globals.dom.elGraphical.add(l.elGridBorders)),Array.isArray(e.elGraph))for(let f=0;f{r.globals.ignoreYAxisIndexes.indexOf(h)===-1&&c.yAxisTitleRotate(h,f.opposite)})),n.annotations.drawAxesAnnotations(),!r.globals.noData){if(r.config.tooltip.enabled&&!r.globals.noData&&n.w.globals.tooltip.drawTooltip(e.xyRatios),r.globals.axisCharts&&(r.globals.isXNumeric||r.config.xaxis.convertedCatToNumeric||r.globals.isRangeBar))(r.config.chart.zoom.enabled||r.config.chart.selection&&r.config.chart.selection.enabled||r.config.chart.pan&&r.config.chart.pan.enabled)&&n.zoomPanSelection.init({xyRatios:e.xyRatios});else{const f=r.config.chart.toolbar.tools;["zoom","zoomin","zoomout","selection","pan","reset"].forEach(m=>{f[m]=!1})}r.config.chart.toolbar.show&&!r.globals.allSeriesCollapsed&&n.toolbar.createToolbar()}r.globals.memory.methodsToExec.length>0&&r.globals.memory.methodsToExec.forEach(f=>{f.method(f.params,!1,f.context)}),!r.globals.axisCharts&&!r.globals.noData&&n.core.resizeNonAxisCharts(),i(n)})}destroy(){yi.isBrowser()&&(window.removeEventListener("resize",this.windowResizeHandler),kbt(this.el.parentNode,this.parentResizeHandler));const e=this.w.config.chart.id;e&&Apex._chartInstances.forEach((n,r)=>{n.id===Ee.escapeString(e)&&Apex._chartInstances.splice(r,1)}),new ene(this.ctx).clear({isUpdating:!1})}updateOptions(e,n=!1,r=!0,i=!0,a=!0){const o=this.w;if(o.globals.selection=void 0,this.lastUpdateOptions){if(Ee.shallowEqual(this.lastUpdateOptions,e))return this;if(e.series&&this.lastUpdateOptions.series&&JSON.stringify(this.lastUpdateOptions.series)===JSON.stringify(e.series)){const s=vn({},e),l=vn({},this.lastUpdateOptions);if(delete s.series,delete l.series,Ee.shallowEqual(s,l))return this}}return e.series&&(this.data.resetParsingFlags(),this.series.resetSeries(!1,!0,!1),e.series.length&&e.series[0].data&&(e.series=e.series.map((s,l)=>this.updateHelpers._extendSeries(s,l))),this.updateHelpers.revertDefaultAxisMinMax()),e.xaxis&&(e=this.updateHelpers.forceXAxisUpdate(e)),e.yaxis&&(e=this.updateHelpers.forceYAxisUpdate(e)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),e.theme&&(e=this.theme.updateThemeOptions(e)),this.updateHelpers._updateOptions(e,n,r,i,a)}updateSeries(e=[],n=!0,r=!0){return this.data.resetParsingFlags(),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(e,n,r)}appendSeries(e,n=!0,r=!0){this.data.resetParsingFlags();const i=this.w.config.series.slice();return i.push(e),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(i,n,r)}appendData(e,n=!0){let r=this;r.data.resetParsingFlags(),r.w.globals.dataChanged=!0,r.series.getPreviousPaths();let i=r.w.config.series.slice();for(let a=0;a{if(this.lastUpdateOptions&&JSON.stringify(this.lastUpdateOptions)===JSON.stringify(e))return n(this);this.lastUpdateOptions=Ee.clone(e),new ene(this.ctx).clear({isUpdating:!0});const i=this.create(this.w.config.series,e);if(!i)return n(this);this.mount(i).then(()=>{typeof this.w.config.chart.events.updated=="function"&&this.w.config.chart.events.updated(this,this.w),this.events.fireEvent("updated",[this,this.w]),this.w.globals.isDirty=!0,n(this)}).catch(a=>{r(a)})})}getSyncedCharts(){const e=this.getGroupedCharts();let n=[this];return e.length&&(n=[],e.forEach(r=>{n.push(r)})),n}getGroupedCharts(){return Apex._chartInstances.filter(e=>{if(e.group)return!0}).map(e=>this.w.config.chart.group===e.group?e.chart:this)}static getChartByID(e){const n=Ee.escapeString(e);if(!Apex._chartInstances)return;const r=Apex._chartInstances.filter(i=>i.id===n)[0];return r&&r.chart}static initOnLoad(){const e=document.querySelectorAll("[data-apexcharts]");for(let n=0;n{this.w.globals.resized=!0,this.w.globals.dataChanged=!1,this.ctx.update()},150)}_windowResizeHandler(){let{redrawOnWindowResize:e}=this.w.config.chart;typeof e=="function"&&(e=e()),e&&this._windowResize()}}function Bbt(t,e,n){return(e=(function(r){var i=(function(a,o){if(typeof a!="object"||!a)return a;var s=a[Symbol.toPrimitive];if(s!==void 0){var l=s.call(a,o);if(typeof l!="object")return l;throw new TypeError("@@toPrimitive must return a primitive value.")}return(o==="string"?String:Number)(a)})(r,"string");return typeof i=="symbol"?i:i+""})(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function n8(){return n8=Object.assign?Object.assign.bind():function(t){for(var e=1;e2&&arguments[2]!==void 0?arguments[2]:new WeakSet;if(t===e)return!0;if(nS(t)!=="object"||t===null||nS(e)!=="object"||e===null)return!1;if(n.has(t)||n.has(e))return!0;n.add(t),n.add(e);var r=Object.keys(t),i=Object.keys(e);if(r.length!==i.length)return!1;for(var a=0,o=r;a({options:{labels:["January","February","March","April","May","June"]},series:[{name:"Series 1",data:[80,50,30,40,100,20]}],dataLabels:{enabled:!1},stroke:{curve:"smooth"},chart:{toolbar:{show:!1}},legend:{show:!1},labels:["January","February","March","April","May","June"],fill:{colors:[t.palette.primary.light,t.palette.success.light]},colors:[t.palette.primary.main,t.palette.success.main]}),Wbt={series:[{name:"Series 1",data:[80,50,30,40,100,20]}]},qbt=()=>{const t=Fl(),[e]=E.useState(Wbt);return d.jsx(No,{options:Ybt(t),series:e.series,type:"radar",height:"350"})},Kbt=t=>({plotOptions:{bar:{horizontal:!0}},dataLabels:{enabled:!1},xaxis:{categories:["South Korea","Canada","United Kingdom","Netherlands","Italy","France","Japan","United States","China","Germany"]},stroke:{curve:"smooth"},chart:{toolbar:{show:!1}},legend:{show:!1},labels:["January","February","March","April","May","June"],fill:{colors:[t.palette.primary.main]}}),Xbt={series:[{data:[400,430,448,470,540,580,690,1100,1200,1380]}]},Qbt=()=>{const t=Fl(),[e]=E.useState(Xbt);return d.jsx(No,{options:Kbt(t),series:e.series,type:"bar",height:"350"})},Zbt=[{name:"Page A",uv:4e3,pv:2400,amt:2400},{name:"Page B",uv:3e3,pv:1398,amt:2210},{name:"Page C",uv:2e3,pv:9800,amt:2290},{name:"Page D",uv:2780,pv:3908,amt:2e3},{name:"Page E",uv:1890,pv:4800,amt:2181},{name:"Page F",uv:2390,pv:3800,amt:2500},{name:"Page G",uv:3490,pv:4300,amt:2100}],Jbt=[{name:"Group A",value:400},{name:"Group B",value:300},{name:"Group C",value:300},{name:"Group D",value:200}];function e_t(){var t=Fl(),[e,n]=E.useState(0);return d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:4,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Apex Line Chart",noBodyPadding:!0,children:d.jsx(zbt,{})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Apex Heatmap",noBodyPadding:!0,children:d.jsx(Gbt,{})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Apex Radar Chart",noBodyPadding:!0,children:d.jsx(qbt,{})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Apex Bar Chart",noBodyPadding:!0,children:d.jsx(Qbt,{})})}),d.jsx(re,{size:{xs:12,md:8},children:d.jsx(et,{title:"Simple Line Chart",noBodyPadding:!0,children:d.jsx(Zu,{width:"100%",height:350,children:d.jsxs(yXe,{width:500,height:300,data:Zbt,margin:{top:5,right:30,left:20,bottom:5},children:[d.jsx(qde,{strokeDasharray:"3 3"}),d.jsx(KB,{dataKey:"name"}),d.jsx(XB,{}),d.jsx(Fy,{}),d.jsx(sce,{}),d.jsx(Hy,{type:"monotone",dataKey:"pv",stroke:t.palette.primary.main,activeDot:{r:8}}),d.jsx(Hy,{type:"monotone",dataKey:"uv",stroke:t.palette.secondary.main})]})})})}),d.jsx(re,{size:{xs:12,md:4},children:d.jsx(et,{title:"Pie Chart with Tooltips",noBodyPadding:!0,children:d.jsx(Zu,{width:"100%",height:300,children:d.jsx(sT,{width:200,height:300,children:d.jsx(jy,{activeIndex:e,activeShape:t_t,data:Jbt,cx:200,cy:150,innerRadius:60,outerRadius:80,fill:t.palette.primary.main,dataKey:"value",onMouseEnter:(r,i)=>n(i)})})})})})]})})}function t_t(t){var e=Math.PI/180,{cx:n,cy:r,midAngle:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:l,fill:u,payload:c,percent:f,value:h}=t,m=Math.sin(-e*i),b=Math.cos(-e*i),_=n+(o+10)*b,y=r+(o+10)*m,x=n+(o+30)*b,C=r+(o+30)*m,A=x+(b>=0?1:-1)*22,R=C,I=b>=0?"start":"end";return d.jsxs("g",{children:[d.jsx("text",{x:n,y:r,dy:8,textAnchor:"middle",fill:u,children:c.name}),d.jsx(Pw,{cx:n,cy:r,innerRadius:a,outerRadius:o,startAngle:s,endAngle:l,fill:u}),d.jsx(Pw,{cx:n,cy:r,startAngle:s,endAngle:l,innerRadius:o+6,outerRadius:o+10,fill:u}),d.jsx("path",{d:`M${_},${y}L${x},${C}L${A},${R}`,stroke:u,fill:"none"}),d.jsx("circle",{cx:A,cy:R,r:2,fill:u,stroke:"none"}),d.jsx("text",{x:A+(b>=0?1:-1)*12,y:R,textAnchor:I,fill:"#333",children:`PV ${h}`}),d.jsx("text",{x:A+(b>=0?1:-1)*12,y:R,dy:18,textAnchor:I,fill:"#999",children:`(Rate ${(f*100).toFixed(2)}%)`})]})}var UF=0,au=[],i8=864e5;let lge=7776e5,cge;function n_t(t,e,n){for(var r=0;r{i_t(UF,{min:10,max:90}),qR.exec("realtime","updateSeries",[{data:au}])},1e3)}n_t(new Date("11 Feb 2019 GMT").getTime(),10,{min:10,max:90});function i_t(t,e){var n=t+i8;UF=n;for(var r=0;r({grid:{row:{colors:[t.palette.primary.light,"transparent"],opacity:.1}},colors:[t.palette.primary.main],xaxis:{categories:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep"]},dataLabels:{enabled:!1},stroke:{curve:"smooth"},chart:{toolbar:{show:!1}},legend:{show:!1},options:{dataLabels:{enabled:!1},stroke:{curve:"smooth"},chart:{shadow:{enabled:!0,color:"#000",top:18,left:7,blur:10,opacity:1},toolbar:{show:!1}},colors:[t.palette.primary.main,t.palette.success.main],grid:{borderColor:"#e7e7e7",row:{colors:["#f3f3f3","transparent"],opacity:.5}},markers:{size:6},xaxis:{categories:["Jan","Feb","Mar","Apr","May","Jun","Jul"],title:{text:"Month"}},yaxis:{title:{text:"Temperature"},min:5,max:40},legend:{position:"top",horizontalAlign:"right",floating:!0,offsetY:-25,offsetX:-5}},options2:{stroke:{curve:"smooth"},legend:{show:!1},chart:{stacked:!1,zoom:{type:"x",enabled:!0,autoScaleYaxis:!0},toolbar:{show:!1}},plotOptions:{line:{curve:"smooth"}},dataLabels:{enabled:!1},markers:{size:0,style:"full"},colors:[t.palette.success.light],fill:{type:"gradient",gradient:{shadeIntensity:1,inverseColors:!1,opacityFrom:.5,opacityTo:0,stops:[0,90,100]}},xaxis:{type:"datetime"},tooltip:{shared:!1,y:{formatter:function(e){return e}}}},options3:{colors:[t.palette.primary.light],chart:{id:"realtime",animations:{enabled:!0,easing:"linear",dynamicAnimation:{speed:1e3}},toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{curve:"smooth"},markers:{size:0},xaxis:{type:"datetime",range:lge},yaxis:{max:100},legend:{show:!1}}}),o_t={series:[{name:"Desktops",data:[10,41,35,51,49,62,69,91,148]}],series2:[{name:"High - 2019",data:[28,29,33,36,32,32,33]},{name:"Low - 2019",data:[12,11,14,18,17,13,13]}],series3:[{name:"Flatlogic LLC",data:uge}],series4:[{data:au.slice()}]};function s_t(){E.useEffect(()=>(r_t(),function(){cge=!1,au=au.slice(au.length-10,au.length)}));const t=Fl(),[e]=E.useState(o_t);return d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:4,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Line Basic",noBodyPadding:!0,children:d.jsx(No,{options:T2(t),series:e.series,type:"line",height:"350"})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Line with Data Labels",noBodyPadding:!0,children:d.jsx(No,{options:T2(t).options,series:e.series2,type:"line",height:"350"})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Zoomable Timeseries",noBodyPadding:!0,children:d.jsx(No,{options:T2(t).options2,series:e.series3,type:"area",height:"350"})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Dynamic Updating Chart",noBodyPadding:!0,children:d.jsx(No,{options:T2(t).options3,series:e.series4,type:"line",height:"350"})})})]})})}const A2=t=>({plotOptions:{bar:{horizontal:!0}},dataLabels:{enabled:!1},xaxis:{categories:["South Korea","Canada","United Kingdom","Netherlands","Italy","France","Japan","United States","China","Germany"]},stroke:{curve:"smooth"},legend:{show:!1},chart:{stacked:!1,toolbar:{show:!1}},tooltip:{shared:!1},colors:[t.palette.primary.main],options:{plotOptions:{bar:{horizontal:!0,dataLabels:{position:"top"}}},dataLabels:{enabled:!0,offsetX:-6,style:{fontSize:"12px",colors:["#fff"]}},stroke:{show:!0,width:1,colors:["#fff"]},xaxis:{categories:[2013,2014,2015,2016,2017,2018,2019]},colors:[t.palette.primary.main,t.palette.success.light]},options2:{chart:{stacked:!0,toolbar:{show:!1}},plotOptions:{bar:{horizontal:!0}},stroke:{width:1,colors:["#fff"]},xaxis:{categories:[2013,2014,2015,2016,2017,2018,2019],labels:{formatter:function(e){return e+"K"}}},yaxis:{title:{text:void 0}},tooltip:{y:{formatter:function(e){return e+"K"}}},fill:{opacity:1},colors:[t.palette.primary.main,t.palette.secondary.main,t.palette.warning.main,t.palette.success.light,t.palette.info.main],legend:{position:"top",horizontalAlign:"left",offsetX:40}},options3:{chart:{animations:{enabled:!1},toolbar:{show:!1}},plotOptions:{bar:{horizontal:!0,barHeight:"100%"}},dataLabels:{enabled:!1},stroke:{colors:["#fff"],width:.2},labels:Array.apply(null,{length:39}).map(function(e,n){return n+1}),yaxis:{axisBorder:{show:!1},axisTicks:{show:!1},labels:{show:!1}},grid:{position:"back"},fill:{type:"image",opacity:.87,image:{src:[YR],width:466,height:406}}}}),l_t={series:[{data:[400,430,448,470,540,580,690,1100,1200,1380]}],series2:[{data:[44,55,41,64,22,43,21]},{data:[53,32,33,52,13,44,32]}],series3:[{name:"Marine Sprite",data:[44,55,41,37,22,43,21]},{name:"Striking Calf",data:[53,32,33,52,13,43,32]},{name:"Tank Picture",data:[12,17,11,9,15,11,20]},{name:"Bucket Slope",data:[9,7,5,8,6,9,4]},{name:"Reborn Kid",data:[25,12,19,32,25,24,10]}],series4:[{name:"coins",data:[2,4,3,4,3,5,5,6.5,6,5,4,5,8,7,7,8,8,10,9,9,12,12,11,12,13,14,16,14,15,17,19,21]}]};function c_t(){const t=Fl(),[e]=E.useState(l_t);return d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:4,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Bar Basic",noBodyPadding:!0,children:d.jsx(No,{options:A2(t),series:e.series,type:"bar",height:"350"})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Grouped Basic",noBodyPadding:!0,children:d.jsx(No,{options:A2(t).options,series:e.series2,type:"bar",height:"350"})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Stacked Basic",noBodyPadding:!0,children:d.jsx(No,{options:A2(t).options2,series:e.series3,type:"bar",height:"350"})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Bar with Images",noBodyPadding:!0,children:d.jsx(No,{options:A2(t).options3,series:e.series4,type:"bar",height:"350"})})})]})})}const R2=t=>({labels:["Team A","Team B","Team C","Team D","Team E"],responsive:[{breakpoint:480,options:{chart:{width:200},legend:{position:"bottom"}}}],colors:[t.palette.primary.main,t.palette.secondary.main,t.palette.warning.main,t.palette.success.light,t.palette.info.main],options:{responsive:[{breakpoint:480,options:{chart:{width:200},legend:{position:"bottom"}}}],colors:[t.palette.primary.main,t.palette.secondary.main,t.palette.warning.main,t.palette.success.light,t.palette.info.main]},options2:{dataLabels:{enabled:!1},responsive:[{breakpoint:480,options:{chart:{width:200},legend:{show:!1}}}],legend:{position:"right",offsetY:0,height:230},colors:[t.palette.primary.main,t.palette.secondary.main,t.palette.warning.main,t.palette.success.light,t.palette.info.main]},options3:{labels:["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],theme:{monochrome:{enabled:!0}},colors:[t.palette.primary.main,t.palette.secondary.main,t.palette.warning.main,t.palette.success.light,t.palette.info.main],responsive:[{breakpoint:480,options:{chart:{width:200},legend:{position:"bottom"}}}]}}),u_t={series:[44,55,13,43,22],series2:[44,55,41,17,15],series3:[44,55,13,33],series4:[25,15,44,55,41,17]};function d_t(){const t=Fl(),[e,n]=E.useState(u_t),r=()=>{var s=e.series3.slice();s.push(Math.floor(Math.random()*100)+1),n({...e,series3:s})},i=()=>{if(e.series3.length!==1){var s=e.series3.slice();s.pop(),n({...e,series3:s})}},a=()=>{n({...e,series3:e.series3.map(()=>Math.floor(Math.random()*100)+1)})},o=()=>{n({...e,series3:[44,55,13,33]})};return d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:4,children:[d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Simple Pie",noBodyPadding:!0,children:d.jsx(No,{options:R2(t),series:e.series,type:"pie",height:"380",stroke:""})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Simple Donut",noBodyPadding:!0,children:d.jsx(No,{options:R2(t).options,series:e.series2,type:"donut",height:"380",stroke:""})})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsxs(et,{title:"Update Donut",noBodyPadding:!0,children:[d.jsx(No,{options:R2(t).options2,series:e.series3,type:"donut",height:"380",stroke:""}),d.jsxs(ce,{display:"flex",flexWrap:"wrap",m:3,children:[d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{variant:"contained",onClick:()=>a(),color:"primary",children:"randomize"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{variant:"contained",onClick:()=>r(),color:"secondary",children:"add"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{variant:"contained",onClick:()=>i(),color:"warning",children:"remove"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{variant:"contained",onClick:()=>o(),color:"success",children:"reset"})})]})]})}),d.jsx(re,{size:{xs:12,md:6},children:d.jsx(et,{title:"Monochrome Pie",noBodyPadding:!0,children:d.jsx(No,{options:R2(t).options,series:e.series2,type:"pie",height:"380",stroke:""})})})]})})}var r6={exports:{}};function a8(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n"&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch{return!1}return!1}}function pge(t){return t.host&&t!==document&&t.host.nodeType&&t.host!==t?t.host:t.parentNode}function Vs(t,e,n,r){if(t){n=n||document;do{if(e!=null&&(e[0]===">"?t.parentNode===n&&xT(t,e):xT(t,e))||r&&t===n)return t;if(t===n)break}while(t=pge(t))}return null}var ane=/\s+/g;function qi(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace(ane," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace(ane," ")}}function un(t,e,n){var r=t&&t.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),e===void 0?n:n[e];!(e in r)&&e.indexOf("webkit")===-1&&(e="-webkit-"+e),r[e]=n+(typeof n=="string"?"":"px")}}function lm(t,e){var n="";if(typeof t=="string")n=t;else do{var r=un(t,"transform");r&&r!=="none"&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function hge(t,e,n){if(t){var r=t.getElementsByTagName(e),i=0,a=r.length;if(n)for(;i=a,!o)return r;if(r===hd())break;r=Xp(r,!1)}return!1}function f_(t,e,n,r){for(var i=0,a=0,o=t.children;a2&&arguments[2]!==void 0?arguments[2]:{},i=r.evt,a=m_t(r,O_t);fx.pluginEvent.bind(Rn)(e,n,Cd({dragEl:Lt,parentEl:ra,ghostEl:jn,rootEl:Li,nextEl:Og,lastDownEl:OC,cloneEl:Yi,cloneHidden:$p,dragStarted:B0,putSortable:So,activeSortable:Rn.active,originalEvent:i,oldIndex:wb,oldDraggableIndex:oy,newIndex:_l,newDraggableIndex:Fp,hideGhostForTarget:Sge,unhideGhostForTarget:xge,cloneNowHidden:function(){$p=!0},cloneNowShown:function(){$p=!1},dispatchSortableEvent:function(s){ds({sortable:n,name:s,originalEvent:i})}},a))};function ds(t){L0(Cd({putSortable:So,cloneEl:Yi,targetEl:Lt,rootEl:Li,oldIndex:wb,oldDraggableIndex:oy,newIndex:_l,newDraggableIndex:Fp},t))}var Lt,ra,jn,Li,Og,OC,Yi,$p,wb,_l,oy,Fp,O2,So,db=!1,ET=!1,CT=[],_g,$c,s6,l6,cne,une,B0,nb,sy,ly=!1,I2=!1,IC,Uo,c6=[],s8=!1,wT=[],KR=typeof document<"u",N2=zF,dne=dx||qf?"cssFloat":"float",I_t=KR&&!dge&&!zF&&"draggable"in document.createElement("div"),_ge=(function(){if(KR){if(qf)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto",t.style.pointerEvents==="auto"}})(),vge=function(e,n){var r=un(e),i=parseInt(r.width)-parseInt(r.paddingLeft)-parseInt(r.paddingRight)-parseInt(r.borderLeftWidth)-parseInt(r.borderRightWidth),a=f_(e,0,n),o=f_(e,1,n),s=a&&un(a),l=o&&un(o),u=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+Oi(a).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Oi(o).width;if(r.display==="flex")return r.flexDirection==="column"||r.flexDirection==="column-reverse"?"vertical":"horizontal";if(r.display==="grid")return r.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(a&&s.float&&s.float!=="none"){var f=s.float==="left"?"left":"right";return o&&(l.clear==="both"||l.clear===f)?"vertical":"horizontal"}return a&&(s.display==="block"||s.display==="flex"||s.display==="table"||s.display==="grid"||u>=i&&r[dne]==="none"||o&&r[dne]==="none"&&u+c>i)?"vertical":"horizontal"},N_t=function(e,n,r){var i=r?e.left:e.top,a=r?e.right:e.bottom,o=r?e.width:e.height,s=r?n.left:n.top,l=r?n.right:n.bottom,u=r?n.width:n.height;return i===s||a===l||i+o/2===s+u/2},M_t=function(e,n){var r;return CT.some(function(i){var a=i[Oo].options.emptyInsertThreshold;if(!(!a||HF(i))){var o=Oi(i),s=e>=o.left-a&&e<=o.right+a,l=n>=o.top-a&&n<=o.bottom+a;if(s&&l)return r=i}}),r},yge=function(e){function n(a,o){return function(s,l,u,c){var f=s.options.group.name&&l.options.group.name&&s.options.group.name===l.options.group.name;if(a==null&&(o||f))return!0;if(a==null||a===!1)return!1;if(o&&a==="clone")return a;if(typeof a=="function")return n(a(s,l,u,c),o)(s,l,u,c);var h=(o?s:l).options.group.name;return a===!0||typeof a=="string"&&a===h||a.join&&a.indexOf(h)>-1}}var r={},i=e.group;(!i||o8(i)!="object")&&(i={name:i}),r.name=i.name,r.checkPull=n(i.pull,!0),r.checkPut=n(i.put),r.revertClone=i.revertClone,e.group=r},Sge=function(){!_ge&&jn&&un(jn,"display","none")},xge=function(){!_ge&&jn&&un(jn,"display","")};KR&&!dge&&document.addEventListener("click",function(t){if(ET)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),ET=!1,!1},!0);var vg=function(e){if(Lt){e=e.touches?e.touches[0]:e;var n=M_t(e.clientX,e.clientY);if(n){var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=e[i]);r.target=r.rootEl=n,r.preventDefault=void 0,r.stopPropagation=void 0,n[Oo]._onDragOver(r)}}},D_t=function(e){Lt&&Lt.parentNode[Oo]._isOutsideThisEl(e.target)};function Rn(t,e){if(!(t&&t.nodeType&&t.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=wc({},e),t[Oo]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return vge(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(o,s){o.setData("Text",s.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Rn.supportPointer!==!1&&"PointerEvent"in window&&(!iy||zF),emptyInsertThreshold:5};fx.initializePlugins(this,t,n);for(var r in n)!(r in e)&&(e[r]=n[r]);yge(e);for(var i in this)i.charAt(0)==="_"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this));this.nativeDraggable=e.forceFallback?!1:I_t,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?er(t,"pointerdown",this._onTapStart):(er(t,"mousedown",this._onTapStart),er(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(er(t,"dragover",this),er(t,"dragenter",this)),CT.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),wc(this,T_t())}Rn.prototype={constructor:Rn,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(nb=null)},_getDirection:function(e,n){return typeof this.options.direction=="function"?this.options.direction.call(this,e,n,Lt):this.options.direction},_onTapStart:function(e){if(e.cancelable){var n=this,r=this.el,i=this.options,a=i.preventOnFilter,o=e.type,s=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,l=(s||e).target,u=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=i.filter;if(z_t(r),!Lt&&!(/mousedown|pointerdown/.test(o)&&e.button!==0||i.disabled)&&!u.isContentEditable&&!(!this.nativeDraggable&&iy&&l&&l.tagName.toUpperCase()==="SELECT")&&(l=Vs(l,i.draggable,r,!1),!(l&&l.animated)&&OC!==l)){if(wb=da(l),oy=da(l,i.draggable),typeof c=="function"){if(c.call(this,e,l,this)){ds({sortable:n,rootEl:u,name:"filter",targetEl:l,toEl:r,fromEl:r}),Us("filter",n,{evt:e}),a&&e.preventDefault();return}}else if(c&&(c=c.split(",").some(function(f){if(f=Vs(u,f.trim(),r,!1),f)return ds({sortable:n,rootEl:f,name:"filter",targetEl:l,fromEl:r,toEl:r}),Us("filter",n,{evt:e}),!0}),c)){a&&e.preventDefault();return}i.handle&&!Vs(u,i.handle,r,!1)||this._prepareDragStart(e,s,l)}}},_prepareDragStart:function(e,n,r){var i=this,a=i.el,o=i.options,s=a.ownerDocument,l;if(r&&!Lt&&r.parentNode===a){var u=Oi(r);if(Li=a,Lt=r,ra=Lt.parentNode,Og=Lt.nextSibling,OC=r,O2=o.group,Rn.dragged=Lt,_g={target:Lt,clientX:(n||e).clientX,clientY:(n||e).clientY},cne=_g.clientX-u.left,une=_g.clientY-u.top,this._lastX=(n||e).clientX,this._lastY=(n||e).clientY,Lt.style["will-change"]="all",l=function(){if(Us("delayEnded",i,{evt:e}),Rn.eventCanceled){i._onDrop();return}i._disableDelayedDragEvents(),!ine&&i.nativeDraggable&&(Lt.draggable=!0),i._triggerDragStart(e,n),ds({sortable:i,name:"choose",originalEvent:e}),qi(Lt,o.chosenClass,!0)},o.ignore.split(",").forEach(function(c){hge(Lt,c.trim(),u6)}),er(s,"dragover",vg),er(s,"mousemove",vg),er(s,"touchmove",vg),o.supportPointer?(er(s,"pointerup",i._onDrop),!this.nativeDraggable&&er(s,"pointercancel",i._onDrop)):(er(s,"mouseup",i._onDrop),er(s,"touchend",i._onDrop),er(s,"touchcancel",i._onDrop)),ine&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Lt.draggable=!0),Us("delayStart",this,{evt:e}),o.delay&&(!o.delayOnTouchOnly||n)&&(!this.nativeDraggable||!(dx||qf))){if(Rn.eventCanceled){this._onDrop();return}o.supportPointer?(er(s,"pointerup",i._disableDelayedDrag),er(s,"pointercancel",i._disableDelayedDrag)):(er(s,"mouseup",i._disableDelayedDrag),er(s,"touchend",i._disableDelayedDrag),er(s,"touchcancel",i._disableDelayedDrag)),er(s,"mousemove",i._delayedDragTouchMoveHandler),er(s,"touchmove",i._delayedDragTouchMoveHandler),o.supportPointer&&er(s,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(l,o.delay)}else l()}},_delayedDragTouchMoveHandler:function(e){var n=e.touches?e.touches[0]:e;Math.max(Math.abs(n.clientX-this._lastX),Math.abs(n.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Lt&&u6(Lt),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Qn(e,"mouseup",this._disableDelayedDrag),Qn(e,"touchend",this._disableDelayedDrag),Qn(e,"touchcancel",this._disableDelayedDrag),Qn(e,"pointerup",this._disableDelayedDrag),Qn(e,"pointercancel",this._disableDelayedDrag),Qn(e,"mousemove",this._delayedDragTouchMoveHandler),Qn(e,"touchmove",this._delayedDragTouchMoveHandler),Qn(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,n){n=n||e.pointerType=="touch"&&e,!this.nativeDraggable||n?this.options.supportPointer?er(document,"pointermove",this._onTouchMove):n?er(document,"touchmove",this._onTouchMove):er(document,"mousemove",this._onTouchMove):(er(Lt,"dragend",this),er(Li,"dragstart",this._onDragStart));try{document.selection?NC(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,n){if(db=!1,Li&&Lt){Us("dragStarted",this,{evt:n}),this.nativeDraggable&&er(document,"dragover",D_t);var r=this.options;!e&&qi(Lt,r.dragClass,!1),qi(Lt,r.ghostClass,!0),Rn.active=this,e&&this._appendGhost(),ds({sortable:this,name:"start",originalEvent:n})}else this._nulling()},_emulateDragOver:function(){if($c){this._lastX=$c.clientX,this._lastY=$c.clientY,Sge();for(var e=document.elementFromPoint($c.clientX,$c.clientY),n=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint($c.clientX,$c.clientY),e!==n);)n=e;if(Lt.parentNode[Oo]._isOutsideThisEl(e),n)do{if(n[Oo]){var r=void 0;if(r=n[Oo]._onDragOver({clientX:$c.clientX,clientY:$c.clientY,target:e,rootEl:n}),r&&!this.options.dragoverBubble)break}e=n}while(n=pge(n));xge()}},_onTouchMove:function(e){if(_g){var n=this.options,r=n.fallbackTolerance,i=n.fallbackOffset,a=e.touches?e.touches[0]:e,o=jn&&lm(jn,!0),s=jn&&o&&o.a,l=jn&&o&&o.d,u=N2&&Uo&&sne(Uo),c=(a.clientX-_g.clientX+i.x)/(s||1)+(u?u[0]-c6[0]:0)/(s||1),f=(a.clientY-_g.clientY+i.y)/(l||1)+(u?u[1]-c6[1]:0)/(l||1);if(!Rn.active&&!db){if(r&&Math.max(Math.abs(a.clientX-this._lastX),Math.abs(a.clientY-this._lastY))=0&&(ds({rootEl:ra,name:"add",toEl:ra,fromEl:Li,originalEvent:e}),ds({sortable:this,name:"remove",toEl:ra,originalEvent:e}),ds({rootEl:ra,name:"sort",toEl:ra,fromEl:Li,originalEvent:e}),ds({sortable:this,name:"sort",toEl:ra,originalEvent:e})),So&&So.save()):_l!==wb&&_l>=0&&(ds({sortable:this,name:"update",toEl:ra,originalEvent:e}),ds({sortable:this,name:"sort",toEl:ra,originalEvent:e})),Rn.active&&((_l==null||_l===-1)&&(_l=wb,Fp=oy),ds({sortable:this,name:"end",toEl:ra,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Us("nulling",this),Li=Lt=ra=jn=Og=Yi=OC=$p=_g=$c=B0=_l=Fp=wb=oy=nb=sy=So=O2=Rn.dragged=Rn.ghost=Rn.clone=Rn.active=null;var e=this.el;wT.forEach(function(n){e.contains(n)&&(n.checked=!0)}),wT.length=s6=l6=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":Lt&&(this._onDragOver(e),P_t(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],n,r=this.el.children,i=0,a=r.length,o=this.options;ii.right+a||t.clientY>r.bottom&&t.clientX>r.left:t.clientY>i.bottom+a||t.clientX>r.right&&t.clientY>r.top}function F_t(t,e,n,r,i,a,o,s){var l=r?t.clientY:t.clientX,u=r?n.height:n.width,c=r?n.top:n.left,f=r?n.bottom:n.right,h=!1;if(!o){if(s&&ICc+u*a/2:lf-IC)return-sy}else if(l>c+u*(1-i)/2&&lf-u*a/2)?l>c+u/2?1:-1:0}function j_t(t){return da(Lt)1&&(Fn.forEach(function(s){a.addAnimationState({target:s,rect:zs?Oi(s):o}),a6(s),s.fromRect=o,r.removeAnimationState(s)}),zs=!1,Y_t(!this.options.removeCloneOnHide,i))},dragOverCompleted:function(n){var r=n.sortable,i=n.isOwner,a=n.insertion,o=n.activeSortable,s=n.parentEl,l=n.putSortable,u=this.options;if(a){if(i&&o._hideClone(),E0=!1,u.animation&&Fn.length>1&&(zs||!i&&!o.options.sort&&!l)){var c=Oi(_i,!1,!0,!0);Fn.forEach(function(h){h!==_i&&(lne(h,c),s.appendChild(h))}),zs=!0}if(!i)if(zs||P2(),Fn.length>1){var f=D2;o._showClone(r),o.options.animation&&!D2&&f&&bl.forEach(function(h){o.addAnimationState({target:h,rect:C0}),h.fromRect=C0,h.thisAnimationDuration=null})}else o._showClone(r)}},dragOverAnimationCapture:function(n){var r=n.dragRect,i=n.isOwner,a=n.activeSortable;if(Fn.forEach(function(s){s.thisAnimationDuration=null}),a.options.animation&&!i&&a.multiDrag.isMultiDrag){C0=wc({},r);var o=lm(_i,!0);C0.top-=o.f,C0.left-=o.e}},dragOverAnimationComplete:function(){zs&&(zs=!1,P2())},drop:function(n){var r=n.originalEvent,i=n.rootEl,a=n.parentEl,o=n.sortable,s=n.dispatchSortableEvent,l=n.oldIndex,u=n.putSortable,c=u||this.sortable;if(r){var f=this.options,h=a.children;if(!rb)if(f.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),qi(_i,f.selectedClass,!~Fn.indexOf(_i)),~Fn.indexOf(_i))Fn.splice(Fn.indexOf(_i),1),x0=null,L0({sortable:o,rootEl:i,name:"deselect",targetEl:_i,originalEvent:r});else{if(Fn.push(_i),L0({sortable:o,rootEl:i,name:"select",targetEl:_i,originalEvent:r}),r.shiftKey&&x0&&o.el.contains(x0)){var m=da(x0),b=da(_i);~m&&~b&&m!==b&&(function(){var C,A;b>m?(A=m,C=b):(A=b,C=m+1);for(var R=f.filter;A1){var _=Oi(_i),y=da(_i,":not(."+this.options.selectedClass+")");if(!E0&&f.animation&&(_i.thisAnimationDuration=null),c.captureAnimationState(),!E0&&(f.animation&&(_i.fromRect=_,Fn.forEach(function(C){if(C.thisAnimationDuration=null,C!==_i){var A=zs?Oi(C):_;C.fromRect=A,c.addAnimationState({target:C,rect:A})}})),P2(),Fn.forEach(function(C){h[y]?a.insertBefore(C,h[y]):a.appendChild(C),y++}),l===da(_i))){var x=!1;Fn.forEach(function(C){if(C.sortableIndex!==da(C)){x=!0;return}}),x&&(s("update"),s("sort"))}Fn.forEach(function(C){a6(C)}),c.animateAll()}Gc=c}(i===a||u&&u.lastPutMode!=="clone")&&bl.forEach(function(C){C.parentNode&&C.parentNode.removeChild(C)})}},nullingGlobal:function(){this.isMultiDrag=rb=!1,bl.length=0},destroyGlobal:function(){this._deselectMultiDrag(),Qn(document,"pointerup",this._deselectMultiDrag),Qn(document,"mouseup",this._deselectMultiDrag),Qn(document,"touchend",this._deselectMultiDrag),Qn(document,"keydown",this._checkKeyDown),Qn(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(n){if(!(typeof rb<"u"&&rb)&&Gc===this.sortable&&!(n&&Vs(n.target,this.options.draggable,this.sortable.el,!1))&&!(n&&n.button!==0))for(;Fn.length;){var r=Fn[0];qi(r,this.options.selectedClass,!1),Fn.shift(),L0({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:r,originalEvent:n})}},_checkKeyDown:function(n){n.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(n){n.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},wc(t,{pluginName:"multiDrag",utils:{select:function(n){var r=n.parentNode[Oo];!r||!r.options.multiDrag||~Fn.indexOf(n)||(Gc&&Gc!==r&&(Gc.multiDrag._deselectMultiDrag(),Gc=r),qi(n,r.options.selectedClass,!0),Fn.push(n))},deselect:function(n){var r=n.parentNode[Oo],i=Fn.indexOf(n);!r||!r.options.multiDrag||!~i||(qi(n,r.options.selectedClass,!1),Fn.splice(i,1))}},eventProperties:function(){var n=this,r=[],i=[];return Fn.forEach(function(a){r.push({multiDragElement:a,index:a.sortableIndex});var o;zs&&a!==_i?o=-1:zs?o=da(a,":not(."+n.options.selectedClass+")"):o=da(a),i.push({multiDragElement:a,index:o})}),{items:__t(Fn),clones:[].concat(bl),oldIndicies:r,newIndicies:i}},optionListeners:{multiDragKey:function(n){return n=n.toLowerCase(),n==="ctrl"?n="Control":n.length>1&&(n=n.charAt(0).toUpperCase()+n.substr(1)),n}}})}function Y_t(t,e){Fn.forEach(function(n,r){var i=e.children[n.sortableIndex+(t?Number(r):0)];i?e.insertBefore(n,i):e.appendChild(n)})}function pne(t,e){bl.forEach(function(n,r){var i=e.children[n.sortableIndex+(t?Number(r):0)];i?e.insertBefore(n,i):e.appendChild(n)})}function P2(){Fn.forEach(function(t){t!==_i&&t.parentNode&&t.parentNode.removeChild(t)})}Rn.mount(new H_t);Rn.mount(VF,GF);const W_t=Object.freeze(Object.defineProperty({__proto__:null,MultiDrag:V_t,Sortable:Rn,Swap:$_t,default:Rn},Symbol.toStringTag,{value:"Module"})),q_t=mie(W_t);var h6={exports:{}};var hne;function K_t(){return hne||(hne=1,(function(t){(function(){var e={}.hasOwnProperty;function n(){for(var r=[],i=0;i$882b6d93070905b3$re_export$Sortable),o(t.exports,"Direction",()=>$882b6d93070905b3$re_export$Direction),o(t.exports,"DOMRect",()=>$882b6d93070905b3$re_export$DOMRect),o(t.exports,"GroupOptions",()=>$882b6d93070905b3$re_export$GroupOptions),o(t.exports,"MoveEvent",()=>$882b6d93070905b3$re_export$MoveEvent),o(t.exports,"Options",()=>$882b6d93070905b3$re_export$Options),o(t.exports,"PullResult",()=>$882b6d93070905b3$re_export$PullResult),o(t.exports,"PutResult",()=>$882b6d93070905b3$re_export$PutResult),o(t.exports,"SortableEvent",()=>$882b6d93070905b3$re_export$SortableEvent),o(t.exports,"SortableOptions",()=>$882b6d93070905b3$re_export$SortableOptions),o(t.exports,"Utils",()=>$882b6d93070905b3$re_export$Utils),o(t.exports,"ReactSortable",()=>R);function l(O){O.parentElement!==null&&O.parentElement.removeChild(O)}function u(O,N,k){const D=O.children[k]||null;O.insertBefore(N,D)}function c(O){O.forEach(N=>l(N.element))}function f(O){O.forEach(N=>{u(N.parentElement,N.element,N.oldIndex)})}function h(O,N){const k=y(O),D={parentElement:O.from};let P=[];switch(k){case"normal":P=[{element:O.item,newIndex:O.newIndex,oldIndex:O.oldIndex,parentElement:O.from}];break;case"swap":const z={element:O.item,oldIndex:O.oldIndex,newIndex:O.newIndex,...D},G={element:O.swapItem,oldIndex:O.newIndex,newIndex:O.oldIndex,...D};P=[z,G];break;case"multidrag":P=O.oldIndicies.map((Y,H)=>({element:Y.multiDragElement,oldIndex:Y.index,newIndex:O.newIndicies[H].index,...D}));break}return x(P,N)}function m(O,N){const k=b(O,N);return _(O,k)}function b(O,N){const k=[...N];return O.concat().reverse().forEach(D=>k.splice(D.oldIndex,1)),k}function _(O,N,k,D){const P=[...N];return O.forEach(j=>{const M=D&&k&&D(j.item,k);P.splice(j.newIndex,0,M||j.item)}),P}function y(O){return O.oldIndicies&&O.oldIndicies.length>0?"multidrag":O.swapItem?"swap":"normal"}function x(O,N){return O.map(D=>({...D,item:N[D.oldIndex]})).sort((D,P)=>D.oldIndex-P.oldIndex)}function C(O){const{list:N,setList:k,children:D,tag:P,style:j,className:M,clone:z,onAdd:G,onChange:Y,onChoose:H,onClone:W,onEnd:q,onFilter:Q,onRemove:X,onSort:$,onStart:K,onUnchoose:te,onUpdate:ie,onMove:se,onSpill:le,onSelect:be,onDeselect:we,...ue}=O;return ue}const A={dragging:null};class R extends r.Component{static defaultProps={clone:N=>N};constructor(N){super(N),this.ref=(0,r.createRef)();const k=[...N.list].map(D=>Object.assign(D,{chosen:!1,selected:!1}));N.setList(k,this.sortable,A),a(i)(!N.plugins,` +Plugins prop is no longer supported. +Instead, mount it with "Sortable.mount(new MultiDrag())" +Please read the updated README.md at https://github.com/SortableJS/react-sortablejs. + `)}componentDidMount(){if(this.ref.current===null)return;const N=this.makeOptions();a(e).create(this.ref.current,N)}componentDidUpdate(N){N.disabled!==this.props.disabled&&this.sortable&&this.sortable.option("disabled",this.props.disabled)}render(){const{tag:N,style:k,className:D,id:P}=this.props,j={style:k,className:D,id:P},M=!N||N===null?"div":N;return(0,r.createElement)(M,{ref:this.ref,...j},this.getChildren())}getChildren(){const{children:N,dataIdAttr:k,selectedClass:D="sortable-selected",chosenClass:P="sortable-chosen",dragClass:j="sortable-drag",fallbackClass:M="sortable-falback",ghostClass:z="sortable-ghost",swapClass:G="sortable-swap-highlight",filter:Y="sortable-filter",list:H}=this.props;if(!N||N==null)return null;const W=k||"data-id";return r.Children.map(N,(q,Q)=>{if(q===void 0)return;const X=H[Q]||{},{className:$}=q.props,K=typeof Y=="string"&&{[Y.replace(".","")]:!!X.filtered},te=a(n)($,{[D]:X.selected,[P]:X.chosen,...K});return(0,r.cloneElement)(q,{[W]:q.key,className:te})})}get sortable(){const N=this.ref.current;if(N===null)return null;const k=Object.keys(N).find(D=>D.includes("Sortable"));return k?N[k]:null}makeOptions(){const N=["onAdd","onChoose","onDeselect","onEnd","onRemove","onSelect","onSpill","onStart","onUnchoose","onUpdate"],k=["onChange","onClone","onFilter","onSort"],D=C(this.props);return N.forEach(j=>D[j]=this.prepareOnHandlerPropAndDOM(j)),k.forEach(j=>D[j]=this.prepareOnHandlerProp(j)),{...D,onMove:(j,M)=>{const{onMove:z}=this.props,G=j.willInsertAfter||-1;if(!z)return G;const Y=z(j,M,this.sortable,A);return typeof Y>"u"?!1:Y}}}prepareOnHandlerPropAndDOM(N){return k=>{this.callOnHandlerProp(k,N),this[N](k)}}prepareOnHandlerProp(N){return k=>{this.callOnHandlerProp(k,N)}}callOnHandlerProp(N,k){const D=this.props[k];D&&D(N,this.sortable,A)}onAdd(N){const{list:k,setList:D,clone:P}=this.props,j=[...A.dragging.props.list],M=h(N,j);c(M);const z=_(M,k,N,P).map(G=>Object.assign(G,{selected:!1}));D(z,this.sortable,A)}onRemove(N){const{list:k,setList:D}=this.props,P=y(N),j=h(N,k);f(j);let M=[...k];if(N.pullMode!=="clone")M=b(j,M);else{let z=j;switch(P){case"multidrag":z=j.map((G,Y)=>({...G,element:N.clones[Y]}));break;case"normal":z=j.map(G=>({...G,element:N.clone}));break;default:a(i)(!0,`mode "${P}" cannot clone. Please remove "props.clone" from when using the "${P}" plugin`)}c(z),j.forEach(G=>{const Y=G.oldIndex,H=this.props.clone(G.item,N);M.splice(Y,1,H)})}M=M.map(z=>Object.assign(z,{selected:!1})),D(M,this.sortable,A)}onUpdate(N){const{list:k,setList:D}=this.props,P=h(N,k);c(P),f(P);const j=m(P,k);return D(j,this.sortable,A)}onStart(){A.dragging=this}onEnd(){A.dragging=null}onChoose(N){const{list:k,setList:D}=this.props,P=k.map((j,M)=>{let z=j;return M===N.oldIndex&&(z=Object.assign(j,{chosen:!0})),z});D(P,this.sortable,A)}onUnchoose(N){const{list:k,setList:D}=this.props,P=k.map((j,M)=>{let z=j;return M===N.oldIndex&&(z=Object.assign(z,{chosen:!1})),z});D(P,this.sortable,A)}onSpill(N){const{removeOnSpill:k,revertOnSpill:D}=this.props;k&&!D&&l(N.item)}onSelect(N){const{list:k,setList:D}=this.props,P=k.map(j=>Object.assign(j,{selected:!1}));N.newIndicies.forEach(j=>{const M=j.index;if(M===-1){console.log(`"${N.type}" had indice of "${j.index}", which is probably -1 and doesn't usually happen here.`),console.log(N);return}P[M].selected=!0}),D(P,this.sortable,A)}onDeselect(N){const{list:k,setList:D}=this.props,P=k.map(j=>Object.assign(j,{selected:!1}));N.newIndicies.forEach(j=>{const M=j.index;M!==-1&&(P[M].selected=!0)}),D(P,this.sortable,A)}}var I={};s(t.exports,I)})(r6)),r6.exports}var mne=evt();function tvt(){const t=or();return d.jsx("div",{children:d.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",borderRadius:4,backgroundColor:t.palette.primary.main,padding:48},children:[d.jsx("p",{style:{margin:0,marginBottom:"0.5rem",fontSize:"2.5rem",fontWeight:400,color:"#fff"},children:"Draggable story!"}),d.jsxs("p",{style:{marginTop:0,marginBottom:"2rem",fontSize:"1.25rem",color:"#fff"},children:[d.jsx("i",{children:"Build"})," your own interfaces! Sit back and relax."]}),d.jsx("div",{children:d.jsx(gt,{size:"large",color:"warning",variant:"contained",style:{boxShadow:"none",textTransform:"none",fontSize:20,padding:"6px 12px",border:"1px solid",lineHeight:1.5},children:"Fullscreen me!"})})]})})}function nvt(){return d.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",margin:"3.5rem"},children:d.jsx(mc,{})})}function rvt(){const e={fontSize:"1.2rem",color:or().palette.primary.main};return d.jsxs(gn,{component:"div",children:[d.jsxs("blockquote",{style:{fontStyle:"italic",margin:"1rem"},children:['"There are no limits. There are plateaus, but you must not stay there, you must go beyond them. If it kills you, it kills you. A man must constantly exceed his level."',d.jsx("footer",{style:{fontSize:"0.85rem",fontStyle:"normal"},children:"— Bruce Lee"})]}),d.jsxs("p",{children:["To make a widget initially collapsed just add ",d.jsx("code",{style:e,children:"collapsed"})," ","property to ",d.jsx("code",{style:e,children:".widget"}),"."]}),d.jsxs("p",{children:["To make it locked (prevent dragging) add ",d.jsx("code",{style:e,children:".locked"})," ","class."]})]})}function ivt(){const t=or();return d.jsxs(oe,{block:"div",children:[d.jsxs("p",{children:[d.jsx("strong",{children:"Widgster"})," is a plugin that allows to easily implement basic widget functions that lots of our customers have requested. For now it has the following essential widget features:"]}),d.jsxs("ul",{children:[d.jsxs("li",{children:[d.jsx("strong",{children:"Collapse/Expand"})," - all widgets can be collapsed to fill only header's vertical space;"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Close"})," - closable. Any widget may be removed by clicking the close btn;"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Full Screen"})," - an option to make widget fill the whole window (just like OS);"]}),d.jsxs("li",{children:[d.jsx("strong",{children:"Ajax Load"})," - the hottest option allowing to load/reload widget content asynchronously. You just need to provide an url to fetch the data from. With loader delivered."]})]}),d.jsxs("p",{children:["It's available under MIT license, check out",d.jsxs("a",{href:"https://github.com/flatlogic/widgster",target:"_blank",rel:"noopener noreferrer",style:{textDecoration:"none",color:t.palette.primary.main},children:[" ","github"," "]}),"to find it."]}),d.jsx("p",{children:"Test it out!"})]})}const avt="/react-material-admin/assets/a1-DgqnjE2v.jpg",ovt="/react-material-admin/assets/a2-BF5wLY3O.jpg",svt="/react-material-admin/assets/a3-BT44phKs.jpg",lvt="/react-material-admin/assets/a3-Q2dxtR85.jpg";function cvt(){const t=or(),e=[{img:avt,name:"Maikel Basso",comment:"about 2 mins ago",type:"#FFC35F"},{img:ovt,name:"Ianus Arendse",comment:"about 42 mins ago",type:"#536DFE"},{img:svt,name:"Valdemar Landau",comment:"one hour ago",type:"#3CD4A0"},{img:lvt,name:"Rick Teagan",comment:"3 hours ago",type:"#FF5C93"}];return d.jsx("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",width:"100%",marginTop:10,marginBottom:-20},children:e.map(n=>d.jsxs("div",{style:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"space-between",width:"100%",padding:10,paddingLeft:0,borderLeft:"none",borderRight:"none",borderBottom:"none",borderTop:"2px solid rgba(185, 185, 185, 0.3)",backgroundColor:"transparent"},children:[d.jsxs("div",{style:{display:"flex",flexDirection:"row",alignItems:"center"},children:[d.jsx("span",{children:d.jsx("img",{src:n.img,alt:"...",style:{float:"left",height:50,width:50,marginRight:20,borderRadius:"50%"}})}),d.jsxs("div",{children:[d.jsx("div",{style:{fontSize:"1.15rem"},children:n.name}),d.jsx("small",{style:{color:t.palette.text.secondary},children:n.comment})]})]}),d.jsx(ce,{sx:{"@media (max-width: 320px)":{display:"none"}},children:d.jsx(eF,{size:"large",color:n.type})})]},n.name))})}const uvt=t=>({header:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",marginTop:10},headerText:{textAlign:"center"},description:{fontSize:"1.25rem",padding:"5px 30px 15px",textAlign:"center",color:t.palette.text.secondary},label:{margin:"5px 0"},blocksMargin:{marginBottom:"1rem"},buttonsGroup:{display:"flex",flexDirection:"row",float:"right"},button:{marginLeft:"1rem"},formLabels:{padding:0,margin:0}}),dvt=Zt(uvt),fvt=()=>{const t=dvt();return d.jsxs(re,{container:!0,direction:"column",children:[d.jsxs(re,{className:t.header,size:12,children:[d.jsxs(gn,{variant:"h2",className:t.headerText,children:["Sign up, it's ",d.jsx("strong",{children:"free"}),"!"]}),d.jsx("div",{className:t.description,children:"Faith makes it possible to achieve that which man's mind can conceive and believe."})]}),d.jsxs(re,{container:!0,direction:"column",size:12,children:[d.jsx(re,{className:t.blocksMargin,children:d.jsxs(rw,{children:[d.jsx("div",{className:t.formLabels,children:d.jsx(xy,{htmlFor:"exampleInputEmail1",children:"  Email address"})}),d.jsx(wn,{id:"exampleInputEmail1",type:"email",placeholder:"Enter email",margin:"dense",variant:"outlined",fullWidth:!0})]})}),d.jsx(re,{className:t.blocksMargin,children:d.jsxs(rw,{children:[d.jsx("div",{className:t.formLabels,children:d.jsxs(xy,{htmlFor:"pswd",children:[d.jsx("i",{}),"   Password"]})}),d.jsx(wn,{id:"pswd",type:"text",placeholder:"Min 8 characters",margin:"dense",variant:"outlined",fullWidth:!0})]})}),d.jsxs(re,{children:[d.jsxs(gn,{className:t.blocksMargin,children:["To make a widget automatically load it's content you just need to set ",d.jsx("strong",{children:"autoload"})," attribute and provide an api to update the widget content."]}),d.jsx(wn,{id:"outlined-read-only-input",defaultValue:"",size:"small",InputProps:{readOnly:!0},variant:"outlined",fullWidth:!0,margin:"normal"}),d.jsxs(gn,{className:t.blocksMargin,children:[d.jsx("strong",{children:"autoload"})," may be set to an integer value. If set, for example, to 2000 will refresh widget every 2 seconds."]}),d.jsxs("div",{className:t.buttonsGroup,children:[d.jsx(gt,{variant:"contained",children:"Cancel"}),d.jsx(gt,{className:t.button,color:"success",variant:"contained",children:" Submit "})]})]})]})]})},Cge={mainData:{default:[{id:1,value:"A timestamp this widget was created: Jan 12, 19:01:07"},{id:2,value:"A timestamp this widget was updated: Jan 12, 19:07:07"}],news:[{background:"#FFC260",icon:"star",title:"First Human Colony on Mars",description:"First 700 will take part in building first human settlement outside of Earth. That's awesome, right?",date:"Mar 20, 18:46"},{background:"#536DFE",icon:"microphone",title:"Light Blue reached $300",description:'Light Blue Inc. shares just hit $300 price. "This was inevitable. It should have happen sooner or later" - says NYSE expert.',date:"Sep 25, 11:59"},{background:"#3CD4A0",icon:"eye",title:"No more spying",description:"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",date:qr().format("MMM DD, hh:mm:ss")}]},updatedData:{default:[{extraClass:"text-muted",value:"Simulating latency with tiny html block on the server-side."},{value:"A timestamp this widget was created: Apr 24, 19:07:07"},{value:"A timestamp this widget was updated: "+qr().format("MMM DD, hh:mm:ss")}],news:[{extraClass:"animated fadeInDown",background:"warning",icon:"lock",title:"Just now! Check update time",description:"Check this news item timestamp. There is a small server part that generates current timestamp so it would be easier for you to see ajax widgets in action",date:"Mar 20, 18:46"},{background:"danger",icon:"star",title:"First Human Colony on Mars",description:"First 700 will take part in building first human settlement outside of Earth. That's awesome, right?",date:"Mar 20, 18:46"},{background:"info",icon:"microphone",title:"Light Blue reached $300",description:"Light Blue Inc. shares just hit $300 price. ‘This was inevitable. It should have happen sooner or later" - says NYSE expert.",date:"Sep 25, 11:59"},{background:"success",icon:"eye",title:"No more spying",description:"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",date:qr().format("MMM DD, hh:mm:ss")}]}},pvt=t=>({newsList:{marginBottom:0,paddingLeft:0},listRow:{display:"flex",listStyle:"none",boxSizing:"content-box",borderTop:"2px solid rgba(185, 185, 185, 0.3)",padding:"12px 12px 12px 0",cursor:"pointer","&:last-child":{height:"auto"}},iconBlock:{display:"flex",alignItems:"center",justifyContent:"center",width:60,height:60,"@media (max-width: 425px)":{display:"none"}},icon:{display:"flex",alignItems:"center",justifyContent:"center",fontSize:30,width:60,height:60,borderRadius:"50%",color:"#fff"},newsItemInfo:{marginLeft:"1rem"},newsHeader:{textDecoration:"none",textTransform:"uppercase",color:"#536DFE"},timeBlock:{marginTop:10,fontSize:"0.9rem",color:t.palette.text.secondary,display:"block"}}),hvt=Zt(pvt),gvt=()=>{const t=hvt(),e=n=>{switch(n){case"star":return d.jsx(Go,{});case"microphone":return d.jsx(O5e,{});case"eye":return d.jsx(ise,{});case"lock":return d.jsx(V9,{});default:return d.jsx(Joe,{})}};return d.jsx("ul",{className:t.newsList,children:Cge.mainData.news.map(n=>d.jsxs("li",{className:t.listRow,children:[d.jsx("div",{className:t.iconBlock,children:d.jsx("span",{className:`${t.icon}`,style:{backgroundColor:n.background},children:e(n.icon)})}),d.jsxs("div",{className:t.newsItemInfo,children:[d.jsx(gn,{variant:"h5",children:d.jsx(gc,{className:t.newsHeader,to:"/app/grid",children:n.title})}),d.jsx("div",{children:n.description}),d.jsx("time",{className:t.timeBlock,children:n.date})]})]},n.title))})},mvt=Zt(()=>({root:{},widgetLayout:{margin:"0 0 32px 0"},loaderWidgetLayout:{marginTop:"32px"},autoloadWidgetLayout:{margin:0}})),bvt=[{id:"widgster-info"},{id:"default-widget"},{id:"latest-shares"},{id:"autoload-widget"}],_vt=[{id:"news-widget"},{id:"collapsed-widget"},{id:"draggable-story"},{id:"custom-loader"}];function bne(t,e){switch(t){case"widgster-info":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(et,{className:e.widgetLayout,title:"Draggable Grid",children:d.jsx(ivt,{})})},t);case"default-widget":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(et,{className:e.widgetLayout,title:"Default Widget",children:Cge.mainData.default.map(n=>d.jsx(gn,{component:"p",gutterBottom:!0,children:n.value},n.value))})},t);case"latest-shares":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(et,{className:e.widgetLayout,title:"Latest Shares",children:d.jsx(cvt,{})})},t);case"autoload-widget":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(et,{className:e.autoloadWidgetLayout,title:"Autoload Widget",children:d.jsx(fvt,{})})},t);case"news-widget":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(et,{className:e.widgetLayout,title:"News",children:d.jsx(gvt,{})})},t);case"collapsed-widget":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(et,{className:e.widgetLayout,title:"Collapsed by default & locked",children:d.jsx(rvt,{})})},t);case"draggable-story":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(tvt,{})},t);case"custom-loader":return d.jsx(re,{size:{xs:12,sm:12,md:12,lg:12},children:d.jsx(et,{className:e.loaderWidgetLayout,title:"Custom Loader",disableWidgetMenu:!0,children:d.jsx(nvt,{})})},t);default:return null}}function vvt(){const t=mvt(),[e,n]=Ue.useState(bvt),[r,i]=Ue.useState(_vt);return d.jsxs(re,{container:!0,spacing:4,className:t.root,children:[d.jsx(re,{size:{xs:12,sm:12,md:6,lg:6},children:d.jsx(mne.ReactSortable,{list:e,setList:n,group:"shared",animation:550,ghostClass:"widget-placeholder-react",children:e.map(({id:a})=>bne(a,t))})}),d.jsx(re,{size:{xs:12,sm:12,md:6,lg:6},children:d.jsx(mne.ReactSortable,{list:r,setList:i,group:"shared",animation:550,ghostClass:"widget-placeholder-react",children:r.map(({id:a})=>bne(a,t))})})]})}function wge(t,e){const n=E.useRef(e);E.useEffect(function(){e!==n.current&&t.attributionControl!=null&&(n.current!=null&&t.attributionControl.removeAttribution(n.current),e!=null&&t.attributionControl.addAttribution(e)),n.current=e},[t,e])}function yvt(t,e,n){e.center!==n.center&&t.setLatLng(e.center),e.radius!=null&&e.radius!==n.radius&&t.setRadius(e.radius)}const Svt=1;function xvt(t){return Object.freeze({__version:Svt,map:t})}function Tge(t,e){return Object.freeze({...t,...e})}const YF=E.createContext(null);function WF(){const t=E.use(YF);if(t==null)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of ");return t}function Evt(t){function e(n,r){const{instance:i,context:a}=t(n).current;E.useImperativeHandle(r,()=>i);const{children:o}=n;return o==null?null:Ue.createElement(YF,{value:a},o)}return E.forwardRef(e)}function Cvt(t){function e(n,r){const[i,a]=E.useState(!1),{instance:o}=t(n,a).current;E.useImperativeHandle(r,()=>o),E.useEffect(function(){i&&o.update()},[o,i,n.children]);const s=o._contentNode;return s?md.createPortal(n.children,s):null}return E.forwardRef(e)}function wvt(t){function e(n,r){const{instance:i}=t(n).current;return E.useImperativeHandle(r,()=>i),null}return E.forwardRef(e)}function qF(t,e){const n=E.useRef(void 0);E.useEffect(function(){return e!=null&&t.instance.on(e),n.current=e,function(){n.current!=null&&t.instance.off(n.current),n.current=null}},[t,e])}function XR(t,e){const n=t.pane??e.pane;return n?{...t,pane:n}:t}function Tvt(t,e){return function(r,i){const a=WF(),o=t(XR(r,a),a);return wge(a.map,r.attribution),qF(o.current,r.eventHandlers),e(o.current,a,r,i),o}}var U0={exports:{}};var Avt=U0.exports,_ne;function Rvt(){return _ne||(_ne=1,(function(t,e){(function(n,r){r(e)})(Avt,(function(n){var r="1.9.4";function i(v){var w,B,V,J;for(B=1,V=arguments.length;B"u"||!L||!L.Mixin)){v=A(v)?v:[v];for(var w=0;w0?Math.floor(v):Math.ceil(v)};q.prototype={clone:function(){return new q(this.x,this.y)},add:function(v){return this.clone()._add(X(v))},_add:function(v){return this.x+=v.x,this.y+=v.y,this},subtract:function(v){return this.clone()._subtract(X(v))},_subtract:function(v){return this.x-=v.x,this.y-=v.y,this},divideBy:function(v){return this.clone()._divideBy(v)},_divideBy:function(v){return this.x/=v,this.y/=v,this},multiplyBy:function(v){return this.clone()._multiplyBy(v)},_multiplyBy:function(v){return this.x*=v,this.y*=v,this},scaleBy:function(v){return new q(this.x*v.x,this.y*v.y)},unscaleBy:function(v){return new q(this.x/v.x,this.y/v.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=Q(this.x),this.y=Q(this.y),this},distanceTo:function(v){v=X(v);var w=v.x-this.x,B=v.y-this.y;return Math.sqrt(w*w+B*B)},equals:function(v){return v=X(v),v.x===this.x&&v.y===this.y},contains:function(v){return v=X(v),Math.abs(v.x)<=Math.abs(this.x)&&Math.abs(v.y)<=Math.abs(this.y)},toString:function(){return"Point("+h(this.x)+", "+h(this.y)+")"}};function X(v,w,B){return v instanceof q?v:A(v)?new q(v[0],v[1]):v==null?v:typeof v=="object"&&"x"in v&&"y"in v?new q(v.x,v.y):new q(v,w,B)}function $(v,w){if(v)for(var B=w?[v,w]:v,V=0,J=B.length;V=this.min.x&&B.x<=this.max.x&&w.y>=this.min.y&&B.y<=this.max.y},intersects:function(v){v=K(v);var w=this.min,B=this.max,V=v.min,J=v.max,ne=J.x>=w.x&&V.x<=B.x,me=J.y>=w.y&&V.y<=B.y;return ne&&me},overlaps:function(v){v=K(v);var w=this.min,B=this.max,V=v.min,J=v.max,ne=J.x>w.x&&V.xw.y&&V.y=w.lat&&J.lat<=B.lat&&V.lng>=w.lng&&J.lng<=B.lng},intersects:function(v){v=ie(v);var w=this._southWest,B=this._northEast,V=v.getSouthWest(),J=v.getNorthEast(),ne=J.lat>=w.lat&&V.lat<=B.lat,me=J.lng>=w.lng&&V.lng<=B.lng;return ne&&me},overlaps:function(v){v=ie(v);var w=this._southWest,B=this._northEast,V=v.getSouthWest(),J=v.getNorthEast(),ne=J.lat>w.lat&&V.latw.lng&&V.lng1,Et=(function(){var v=!1;try{var w=Object.defineProperty({},"passive",{get:function(){v=!0}});window.addEventListener("testPassiveEventSupport",f,w),window.removeEventListener("testPassiveEventSupport",f,w)}catch{}return v})(),Xt=(function(){return!!document.createElement("canvas").getContext})(),_t=!!(document.createElementNS&&Ne("svg").createSVGRect),qt=!!_t&&(function(){var v=document.createElement("div");return v.innerHTML="",(v.firstChild&&v.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"})(),Dn=!_t&&(function(){try{var v=document.createElement("div");v.innerHTML='';var w=v.firstChild;return w.style.behavior="url(#default#VML)",w&&typeof w.adj=="object"}catch{return!1}})(),On=navigator.platform.indexOf("Mac")===0,xr=navigator.platform.indexOf("Linux")===0;function Or(v){return navigator.userAgent.toLowerCase().indexOf(v)>=0}var Gt={ie:Oe,ielt9:ht,edge:ot,webkit:At,android:ge,android23:nt,androidStock:ut,opera:dt,chrome:yt,gecko:jt,safari:ft,phantom:Pt,opera12:rt,win:St,ie3d:Mt,webkit3d:Yt,gecko3d:Hn,any3d:Un,mobile:Dt,mobileWebkit:Se,mobileWebkit3d:Le,msPointer:pt,pointer:Ut,touch:hn,touchNative:dn,mobileOpera:Nn,mobileGecko:wt,retina:Ht,passiveEvents:Et,canvas:Xt,svg:_t,vml:Dn,inlineSvg:qt,mac:On,linux:xr},Ja=Gt.msPointer?"MSPointerDown":"pointerdown",ts=Gt.msPointer?"MSPointerMove":"pointermove",ui=Gt.msPointer?"MSPointerUp":"pointerup",zn=Gt.msPointer?"MSPointerCancel":"pointercancel",$n={touchstart:Ja,touchmove:ts,touchend:ui,touchcancel:zn},ba={touchstart:Er,touchmove:Tr,touchend:Tr,touchcancel:Tr},Ua={},Rs=!1;function Ic(v,w,B){return w==="touchstart"&&an(),ba[w]?(B=ba[w].bind(this,B),v.addEventListener($n[w],B,!1),B):(console.warn("wrong event specified:",w),f)}function Ke(v,w,B){if(!$n[w]){console.warn("wrong event specified:",w);return}v.removeEventListener($n[w],B,!1)}function Ve(v){Ua[v.pointerId]=v}function zt(v){Ua[v.pointerId]&&(Ua[v.pointerId]=v)}function sn(v){delete Ua[v.pointerId]}function an(){Rs||(document.addEventListener(Ja,Ve,!0),document.addEventListener(ts,zt,!0),document.addEventListener(ui,sn,!0),document.addEventListener(zn,sn,!0),Rs=!0)}function Tr(v,w){if(w.pointerType!==(w.MSPOINTER_TYPE_MOUSE||"mouse")){w.touches=[];for(var B in Ua)w.touches.push(Ua[B]);w.changedTouches=[w],v(w)}}function Er(v,w){w.MSPOINTER_TYPE_TOUCH&&w.pointerType===w.MSPOINTER_TYPE_TOUCH&&Ji(w),Tr(v,w)}function _r(v){var w={},B,V;for(V in v)B=v[V],w[V]=B&&B.bind?B.bind(v):B;return v=w,w.type="dblclick",w.detail=2,w.isTrusted=!1,w._simulated=!0,w}var Ul=200;function al(v,w){v.addEventListener("dblclick",w);var B=0,V;function J(ne){if(ne.detail!==1){V=ne.detail;return}if(!(ne.pointerType==="mouse"||ne.sourceCapabilities&&!ne.sourceCapabilities.firesTouchEvents)){var me=Lh(ne);if(!(me.some(function(Fe){return Fe instanceof HTMLLabelElement&&Fe.attributes.for})&&!me.some(function(Fe){return Fe instanceof HTMLInputElement||Fe instanceof HTMLSelectElement}))){var Ie=Date.now();Ie-B<=Ul?(V++,V===2&&w(_r(ne))):V=1,B=Ie}}}return v.addEventListener("click",J),{dblclick:w,simDblclick:J}}function ns(v,w){v.removeEventListener("dblclick",w.dblclick),v.removeEventListener("click",w.simDblclick)}var Do=is(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),Ye=is(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),Vt=Ye==="webkitTransition"||Ye==="OTransition"?Ye+"End":"transitionend";function Tn(v){return typeof v=="string"?document.getElementById(v):v}function qn(v,w){var B=v.style[w]||v.currentStyle&&v.currentStyle[w];if((!B||B==="auto")&&document.defaultView){var V=document.defaultView.getComputedStyle(v,null);B=V?V[w]:null}return B==="auto"?null:B}function mn(v,w,B){var V=document.createElement(v);return V.className=w||"",B&&B.appendChild(V),V}function sr(v){var w=v.parentNode;w&&w.removeChild(v)}function mi(v){for(;v.firstChild;)v.removeChild(v.firstChild)}function Fr(v){var w=v.parentNode;w&&w.lastChild!==v&&w.appendChild(v)}function _a(v){var w=v.parentNode;w&&w.firstChild!==v&&w.insertBefore(v,w.firstChild)}function rs(v,w){if(v.classList!==void 0)return v.classList.contains(w);var B=Md(v);return B.length>0&&new RegExp("(^|\\s)"+w+"(\\s|$)").test(B)}function Mn(v,w){if(v.classList!==void 0)for(var B=b(w),V=0,J=B.length;V0?2*window.devicePixelRatio:1;function mo(v){return Gt.edge?v.wheelDeltaY/2:v.deltaY&&v.deltaMode===0?-v.deltaY/xx:v.deltaY&&v.deltaMode===1?-v.deltaY*20:v.deltaY&&v.deltaMode===2?-v.deltaY*60:v.deltaX||v.deltaZ?0:v.wheelDelta?(v.wheelDeltaY||v.wheelDelta)/2:v.detail&&Math.abs(v.detail)<32765?-v.detail*20:v.detail?v.detail/-32765*60:0}function Mc(v,w){var B=w.relatedTarget;if(!B)return!0;try{for(;B&&B!==v;)B=B.parentNode}catch{return!1}return B!==v}var e1={__proto__:null,on:Sn,off:Ur,stopPropagation:cl,disableScrollPropagation:zl,disableClickPropagation:kd,preventDefault:Ji,stop:Ru,getPropagationPath:Lh,getMousePosition:Bh,getWheelDelta:mo,isExternalTarget:Mc,addListener:Sn,removeListener:Ur},Qf=W.extend({run:function(v,w,B,V){this.stop(),this._el=v,this._inProgress=!0,this._duration=B||.25,this._easeOutPower=1/Math.max(V||.5,.2),this._startPos=An(v),this._offset=w.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=j(this._animate,this),this._step()},_step:function(v){var w=+new Date-this._startTime,B=this._duration*1e3;wthis.options.maxZoom)?this.setZoom(v):this},panInsideBounds:function(v,w){this._enforcingBounds=!0;var B=this.getCenter(),V=this._limitCenter(B,this._zoom,ie(v));return B.equals(V)||this.panTo(V,w),this._enforcingBounds=!1,this},panInside:function(v,w){w=w||{};var B=X(w.paddingTopLeft||w.padding||[0,0]),V=X(w.paddingBottomRight||w.padding||[0,0]),J=this.project(this.getCenter()),ne=this.project(v),me=this.getPixelBounds(),Ie=K([me.min.add(B),me.max.subtract(V)]),Fe=Ie.getSize();if(!Ie.contains(ne)){this._enforcingBounds=!0;var st=ne.subtract(Ie.getCenter()),Bt=Ie.extend(ne).getSize().subtract(Fe);J.x+=st.x<0?-Bt.x:Bt.x,J.y+=st.y<0?-Bt.y:Bt.y,this.panTo(this.unproject(J),w),this._enforcingBounds=!1}return this},invalidateSize:function(v){if(!this._loaded)return this;v=i({animate:!1,pan:!0},v===!0?{animate:!0}:v);var w=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var B=this.getSize(),V=w.divideBy(2).round(),J=B.divideBy(2).round(),ne=V.subtract(J);return!ne.x&&!ne.y?this:(v.animate&&v.pan?this.panBy(ne):(v.pan&&this._rawPanBy(ne),this.fire("move"),v.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:w,newSize:B}))},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(v){if(v=this._locateOptions=i({timeout:1e4,watch:!1},v),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var w=o(this._handleGeolocationResponse,this),B=o(this._handleGeolocationError,this);return v.watch?this._locationWatchId=navigator.geolocation.watchPosition(w,B,v):navigator.geolocation.getCurrentPosition(w,B,v),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(v){if(this._container._leaflet_id){var w=v.code,B=v.message||(w===1?"permission denied":w===2?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:w,message:"Geolocation error: "+B+"."})}},_handleGeolocationResponse:function(v){if(this._container._leaflet_id){var w=v.coords.latitude,B=v.coords.longitude,V=new se(w,B),J=V.toBounds(v.coords.accuracy*2),ne=this._locateOptions;if(ne.setView){var me=this.getBoundsZoom(J);this.setView(V,ne.maxZoom?Math.min(me,ne.maxZoom):me)}var Ie={latlng:V,bounds:J,timestamp:v.timestamp};for(var Fe in v.coords)typeof v.coords[Fe]=="number"&&(Ie[Fe]=v.coords[Fe]);this.fire("locationfound",Ie)}},addHandler:function(v,w){if(!w)return this;var B=this[v]=new w(this);return this._handlers.push(B),this.options[v]&&B.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),sr(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(M(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var v;for(v in this._layers)this._layers[v].remove();for(v in this._panes)sr(this._panes[v]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(v,w){var B="leaflet-pane"+(v?" leaflet-"+v.replace("Pane","")+"-pane":""),V=mn("div",B,w||this._mapPane);return v&&(this._panes[v]=V),V},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var v=this.getPixelBounds(),w=this.unproject(v.getBottomLeft()),B=this.unproject(v.getTopRight());return new te(w,B)},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZoom===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(v,w,B){v=ie(v),B=X(B||[0,0]);var V=this.getZoom()||0,J=this.getMinZoom(),ne=this.getMaxZoom(),me=v.getNorthWest(),Ie=v.getSouthEast(),Fe=this.getSize().subtract(B),st=K(this.project(Ie,V),this.project(me,V)).getSize(),Bt=Gt.any3d?this.options.zoomSnap:1,fn=Fe.x/st.x,Kn=Fe.y/st.y,za=w?Math.max(fn,Kn):Math.min(fn,Kn);return V=this.getScaleZoom(za,V),Bt&&(V=Math.round(V/(Bt/100))*(Bt/100),V=w?Math.ceil(V/Bt)*Bt:Math.floor(V/Bt)*Bt),Math.max(J,Math.min(ne,V))},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new q(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(v,w){var B=this._getTopLeftPoint(v,w);return new $(B,B.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(v){return this.options.crs.getProjectedBounds(v===void 0?this.getZoom():v)},getPane:function(v){return typeof v=="string"?this._panes[v]:v},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(v,w){var B=this.options.crs;return w=w===void 0?this._zoom:w,B.scale(v)/B.scale(w)},getScaleZoom:function(v,w){var B=this.options.crs;w=w===void 0?this._zoom:w;var V=B.zoom(v*B.scale(w));return isNaN(V)?1/0:V},project:function(v,w){return w=w===void 0?this._zoom:w,this.options.crs.latLngToPoint(le(v),w)},unproject:function(v,w){return w=w===void 0?this._zoom:w,this.options.crs.pointToLatLng(X(v),w)},layerPointToLatLng:function(v){var w=X(v).add(this.getPixelOrigin());return this.unproject(w)},latLngToLayerPoint:function(v){var w=this.project(le(v))._round();return w._subtract(this.getPixelOrigin())},wrapLatLng:function(v){return this.options.crs.wrapLatLng(le(v))},wrapLatLngBounds:function(v){return this.options.crs.wrapLatLngBounds(ie(v))},distance:function(v,w){return this.options.crs.distance(le(v),le(w))},containerPointToLayerPoint:function(v){return X(v).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(v){return X(v).add(this._getMapPanePos())},containerPointToLatLng:function(v){var w=this.containerPointToLayerPoint(X(v));return this.layerPointToLatLng(w)},latLngToContainerPoint:function(v){return this.layerPointToContainerPoint(this.latLngToLayerPoint(le(v)))},mouseEventToContainerPoint:function(v){return Bh(v,this._container)},mouseEventToLayerPoint:function(v){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(v))},mouseEventToLatLng:function(v){return this.layerPointToLatLng(this.mouseEventToLayerPoint(v))},_initContainer:function(v){var w=this._container=Tn(v);if(w){if(w._leaflet_id)throw new Error("Map container is already initialized.")}else throw new Error("Map container not found.");Sn(w,"scroll",this._onScroll,this),this._containerId=l(w)},_initLayout:function(){var v=this._container;this._fadeAnimated=this.options.fadeAnimation&&Gt.any3d,Mn(v,"leaflet-container"+(Gt.touch?" leaflet-touch":"")+(Gt.retina?" leaflet-retina":"")+(Gt.ielt9?" leaflet-oldie":"")+(Gt.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var w=qn(v,"position");w!=="absolute"&&w!=="relative"&&w!=="fixed"&&w!=="sticky"&&(v.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var v=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Ar(this._mapPane,new q(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Mn(v.markerPane,"leaflet-zoom-hide"),Mn(v.shadowPane,"leaflet-zoom-hide"))},_resetView:function(v,w,B){Ar(this._mapPane,new q(0,0));var V=!this._loaded;this._loaded=!0,w=this._limitZoom(w),this.fire("viewprereset");var J=this._zoom!==w;this._moveStart(J,B)._move(v,w)._moveEnd(J),this.fire("viewreset"),V&&this.fire("load")},_moveStart:function(v,w){return v&&this.fire("zoomstart"),w||this.fire("movestart"),this},_move:function(v,w,B,V){w===void 0&&(w=this._zoom);var J=this._zoom!==w;return this._zoom=w,this._lastCenter=v,this._pixelOrigin=this._getNewPixelOrigin(v),V?B&&B.pinch&&this.fire("zoom",B):((J||B&&B.pinch)&&this.fire("zoom",B),this.fire("move",B)),this},_moveEnd:function(v){return v&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return M(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(v){Ar(this._mapPane,this._getMapPanePos().subtract(v))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(v){this._targets={},this._targets[l(this._container)]=this;var w=v?Ur:Sn;w(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&w(window,"resize",this._onResize,this),Gt.any3d&&this.options.transform3DLimit&&(v?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){M(this._resizeRequest),this._resizeRequest=j(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var v=this._getMapPanePos();Math.max(Math.abs(v.x),Math.abs(v.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(v,w){for(var B=[],V,J=w==="mouseout"||w==="mouseover",ne=v.target||v.srcElement,me=!1;ne;){if(V=this._targets[l(ne)],V&&(w==="click"||w==="preclick")&&this._draggableMoved(V)){me=!0;break}if(V&&V.listens(w,!0)&&(J&&!Mc(ne,v)||(B.push(V),J))||ne===this._container)break;ne=ne.parentNode}return!B.length&&!me&&!J&&this.listens(w,!0)&&(B=[this]),B},_isClickDisabled:function(v){for(;v&&v!==this._container;){if(v._leaflet_disable_click)return!0;v=v.parentNode}},_handleDOMEvent:function(v){var w=v.target||v.srcElement;if(!(!this._loaded||w._leaflet_disable_events||v.type==="click"&&this._isClickDisabled(w))){var B=v.type;B==="mousedown"&&ln(w),this._fireDOMEvent(v,B)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(v,w,B){if(v.type==="click"){var V=i({},v);V.type="preclick",this._fireDOMEvent(V,V.type,B)}var J=this._findEventTargets(v,w);if(B){for(var ne=[],me=0;me0?Math.round(v-w)/2:Math.max(0,Math.ceil(v))-Math.max(0,Math.floor(w))},_limitZoom:function(v){var w=this.getMinZoom(),B=this.getMaxZoom(),V=Gt.any3d?this.options.zoomSnap:1;return V&&(v=Math.round(v/V)*V),Math.max(w,Math.min(B,v))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){di(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(v,w){var B=this._getCenterOffset(v)._trunc();return(w&&w.animate)!==!0&&!this.getSize().contains(B)?!1:(this.panBy(B,w),!0)},_createAnimProxy:function(){var v=this._proxy=mn("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(v),this.on("zoomanim",function(w){var B=Do,V=this._proxy.style[B];as(this._proxy,this.project(w.center,w.zoom),this.getZoomScale(w.zoom,1)),V===this._proxy.style[B]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){sr(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var v=this.getCenter(),w=this.getZoom();as(this._proxy,this.project(v,w),this.getZoomScale(w,1))},_catchTransitionEnd:function(v){this._animatingZoom&&v.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(v,w,B){if(this._animatingZoom)return!0;if(B=B||{},!this._zoomAnimated||B.animate===!1||this._nothingToAnimate()||Math.abs(w-this._zoom)>this.options.zoomAnimationThreshold)return!1;var V=this.getZoomScale(w),J=this._getCenterOffset(v)._divideBy(1-1/V);return B.animate!==!0&&!this.getSize().contains(J)?!1:(j(function(){this._moveStart(!0,B.noMoveStart||!1)._animateZoom(v,w,!0)},this),!0)},_animateZoom:function(v,w,B,V){this._mapPane&&(B&&(this._animatingZoom=!0,this._animateToCenter=v,this._animateToZoom=w,Mn(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:v,zoom:w,noUpdate:V}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(o(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&di(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function K_(v,w){return new pr(v,w)}var ss=G.extend({options:{position:"topright"},initialize:function(v){_(this,v)},getPosition:function(){return this.options.position},setPosition:function(v){var w=this._map;return w&&w.removeControl(this),this.options.position=v,w&&w.addControl(this),this},getContainer:function(){return this._container},addTo:function(v){this.remove(),this._map=v;var w=this._container=this.onAdd(v),B=this.getPosition(),V=v._controlCorners[B];return Mn(w,"leaflet-control"),B.indexOf("bottom")!==-1?V.insertBefore(w,V.firstChild):V.appendChild(w),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(sr(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(v){this._map&&v&&v.screenX>0&&v.screenY>0&&this._map.getContainer().focus()}}),Dc=function(v){return new ss(v)};pr.include({addControl:function(v){return v.addTo(this),this},removeControl:function(v){return v.remove(),this},_initControlPos:function(){var v=this._controlCorners={},w="leaflet-",B=this._controlContainer=mn("div",w+"control-container",this._container);function V(J,ne){var me=w+J+" "+w+ne;v[J+ne]=mn("div",me,B)}V("top","left"),V("top","right"),V("bottom","left"),V("bottom","right")},_clearControlPos:function(){for(var v in this._controlCorners)sr(this._controlCorners[v]);sr(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Fh=ss.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(v,w,B,V){return B1,this._baseLayersList.style.display=v?"":"none"),this._separator.style.display=w&&v?"":"none",this},_onLayerChange:function(v){this._handlingClick||this._update();var w=this._getLayer(l(v.target)),B=w.overlay?v.type==="add"?"overlayadd":"overlayremove":v.type==="add"?"baselayerchange":null;B&&this._map.fire(B,w)},_createRadioElement:function(v,w){var B='",V=document.createElement("div");return V.innerHTML=B,V.firstChild},_addItem:function(v){var w=document.createElement("label"),B=this._map.hasLayer(v.layer),V;v.overlay?(V=document.createElement("input"),V.type="checkbox",V.className="leaflet-control-layers-selector",V.defaultChecked=B):V=this._createRadioElement("leaflet-base-layers_"+l(this),B),this._layerControlInputs.push(V),V.layerId=l(v.layer),Sn(V,"click",this._onInputClick,this);var J=document.createElement("span");J.innerHTML=" "+v.name;var ne=document.createElement("span");w.appendChild(ne),ne.appendChild(V),ne.appendChild(J);var me=v.overlay?this._overlaysList:this._baseLayersList;return me.appendChild(w),this._checkDisabledLayers(),w},_onInputClick:function(){if(!this._preventClick){var v=this._layerControlInputs,w,B,V=[],J=[];this._handlingClick=!0;for(var ne=v.length-1;ne>=0;ne--)w=v[ne],B=this._getLayer(w.layerId).layer,w.checked?V.push(B):w.checked||J.push(B);for(ne=0;ne=0;J--)w=v[J],B=this._getLayer(w.layerId).layer,w.disabled=B.options.minZoom!==void 0&&VB.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var v=this._section;this._preventClick=!0,Sn(v,"click",Ji),this.expand();var w=this;setTimeout(function(){Ur(v,"click",Ji),w._preventClick=!1})}}),Ex=function(v,w,B){return new Fh(v,w,B)},X_=ss.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(v){var w="leaflet-control-zoom",B=mn("div",w+" leaflet-bar"),V=this.options;return this._zoomInButton=this._createButton(V.zoomInText,V.zoomInTitle,w+"-in",B,this._zoomIn),this._zoomOutButton=this._createButton(V.zoomOutText,V.zoomOutTitle,w+"-out",B,this._zoomOut),this._updateDisabled(),v.on("zoomend zoomlevelschange",this._updateDisabled,this),B},onRemove:function(v){v.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(v){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(v.shiftKey?3:1))},_createButton:function(v,w,B,V,J){var ne=mn("a",B,V);return ne.innerHTML=v,ne.href="#",ne.title=w,ne.setAttribute("role","button"),ne.setAttribute("aria-label",w),kd(ne),Sn(ne,"click",Ru),Sn(ne,"click",J,this),Sn(ne,"click",this._refocusOnMap,this),ne},_updateDisabled:function(){var v=this._map,w="leaflet-disabled";di(this._zoomInButton,w),di(this._zoomOutButton,w),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||v._zoom===v.getMinZoom())&&(Mn(this._zoomOutButton,w),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||v._zoom===v.getMaxZoom())&&(Mn(this._zoomInButton,w),this._zoomInButton.setAttribute("aria-disabled","true"))}});pr.mergeOptions({zoomControl:!0}),pr.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new X_,this.addControl(this.zoomControl))});var vO=function(v){return new X_(v)},Cx=ss.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(v){var w="leaflet-control-scale",B=mn("div",w),V=this.options;return this._addScales(V,w+"-line",B),v.on(V.updateWhenIdle?"moveend":"move",this._update,this),v.whenReady(this._update,this),B},onRemove:function(v){v.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(v,w,B){v.metric&&(this._mScale=mn("div",w,B)),v.imperial&&(this._iScale=mn("div",w,B))},_update:function(){var v=this._map,w=v.getSize().y/2,B=v.distance(v.containerPointToLatLng([0,w]),v.containerPointToLatLng([this.options.maxWidth,w]));this._updateScales(B)},_updateScales:function(v){this.options.metric&&v&&this._updateMetric(v),this.options.imperial&&v&&this._updateImperial(v)},_updateMetric:function(v){var w=this._getRoundNum(v),B=w<1e3?w+" m":w/1e3+" km";this._updateScale(this._mScale,B,w/v)},_updateImperial:function(v){var w=v*3.2808399,B,V,J;w>5280?(B=w/5280,V=this._getRoundNum(B),this._updateScale(this._iScale,V+" mi",V/B)):(J=this._getRoundNum(w),this._updateScale(this._iScale,J+" ft",J/w))},_updateScale:function(v,w,B){v.style.width=Math.round(this.options.maxWidth*B)+"px",v.innerHTML=w},_getRoundNum:function(v){var w=Math.pow(10,(Math.floor(v)+"").length-1),B=v/w;return B=B>=10?10:B>=5?5:B>=3?3:B>=2?2:1,w*B}}),Q_=function(v){return new Cx(v)},yO='',Z_=ss.extend({options:{position:"bottomright",prefix:''+(Gt.inlineSvg?yO+" ":"")+"Leaflet"},initialize:function(v){_(this,v),this._attributions={}},onAdd:function(v){v.attributionControl=this,this._container=mn("div","leaflet-control-attribution"),kd(this._container);for(var w in v._layers)v._layers[w].getAttribution&&this.addAttribution(v._layers[w].getAttribution());return this._update(),v.on("layeradd",this._addAttribution,this),this._container},onRemove:function(v){v.off("layeradd",this._addAttribution,this)},_addAttribution:function(v){v.layer.getAttribution&&(this.addAttribution(v.layer.getAttribution()),v.layer.once("remove",function(){this.removeAttribution(v.layer.getAttribution())},this))},setPrefix:function(v){return this.options.prefix=v,this._update(),this},addAttribution:function(v){return v?(this._attributions[v]||(this._attributions[v]=0),this._attributions[v]++,this._update(),this):this},removeAttribution:function(v){return v?(this._attributions[v]&&(this._attributions[v]--,this._update()),this):this},_update:function(){if(this._map){var v=[];for(var w in this._attributions)this._attributions[w]&&v.push(w);var B=[];this.options.prefix&&B.push(this.options.prefix),v.length&&B.push(v.join(", ")),this._container.innerHTML=B.join(' ')}}});pr.mergeOptions({attributionControl:!0}),pr.addInitHook(function(){this.options.attributionControl&&new Z_().addTo(this)});var SO=function(v){return new Z_(v)};ss.Layers=Fh,ss.Zoom=X_,ss.Scale=Cx,ss.Attribution=Z_,Dc.layers=Ex,Dc.zoom=vO,Dc.scale=Q_,Dc.attribution=SO;var Hl=G.extend({initialize:function(v){this._map=v},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Hl.addTo=function(v,w){return v.addHandler(w,this),this};var xO={Events:H},J_=Gt.touch?"touchstart mousedown":"mousedown",Ou=W.extend({options:{clickTolerance:3},initialize:function(v,w,B,V){_(this,V),this._element=v,this._dragStartTarget=w||v,this._preventOutline=B},enable:function(){this._enabled||(Sn(this._dragStartTarget,J_,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Ou._dragging===this&&this.finishDrag(!0),Ur(this._dragStartTarget,J_,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(v){if(this._enabled&&(this._moved=!1,!rs(this._element,"leaflet-zoom-anim"))){if(v.touches&&v.touches.length!==1){Ou._dragging===this&&this.finishDrag();return}if(!(Ou._dragging||v.shiftKey||v.which!==1&&v.button!==1&&!v.touches)&&(Ou._dragging=this,this._preventOutline&&ln(this._element),Po(),ol(),!this._moving)){this.fire("down");var w=v.touches?v.touches[0]:v,B=Zn(this._element);this._startPoint=new q(w.clientX,w.clientY),this._startPos=An(this._element),this._parentScale=bi(B);var V=v.type==="mousedown";Sn(document,V?"mousemove":"touchmove",this._onMove,this),Sn(document,V?"mouseup":"touchend touchcancel",this._onUp,this)}}},_onMove:function(v){if(this._enabled){if(v.touches&&v.touches.length>1){this._moved=!0;return}var w=v.touches&&v.touches.length===1?v.touches[0]:v,B=new q(w.clientX,w.clientY)._subtract(this._startPoint);!B.x&&!B.y||Math.abs(B.x)+Math.abs(B.y)ne&&(me=Ie,ne=Fe);ne>B&&(w[me]=1,nv(v,w,B,V,me),nv(v,w,B,me,J))}function CO(v,w){for(var B=[v[0]],V=1,J=0,ne=v.length;Vw&&(B.push(v[V]),J=V);return Jw.max.x&&(B|=2),v.yw.max.y&&(B|=8),B}function wO(v,w){var B=w.x-v.x,V=w.y-v.y;return B*B+V*V}function jh(v,w,B,V){var J=w.x,ne=w.y,me=B.x-J,Ie=B.y-ne,Fe=me*me+Ie*Ie,st;return Fe>0&&(st=((v.x-J)*me+(v.y-ne)*Ie)/Fe,st>1?(J=B.x,ne=B.y):st>0&&(J+=me*st,ne+=Ie*st)),me=v.x-J,Ie=v.y-ne,V?me*me+Ie*Ie:new q(J,ne)}function Is(v){return!A(v[0])||typeof v[0][0]!="object"&&typeof v[0][0]<"u"}function n1(v){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Is(v)}function Zf(v,w){var B,V,J,ne,me,Ie,Fe,st;if(!v||v.length===0)throw new Error("latlngs not passed");Is(v)||(console.warn("latlngs are not flat! Only the first ring will be used"),v=v[0]);var Bt=le([0,0]),fn=ie(v),Kn=fn.getNorthWest().distanceTo(fn.getSouthWest())*fn.getNorthEast().distanceTo(fn.getNorthWest());Kn<1700&&(Bt=ev(v));var za=v.length,ea=[];for(B=0;BV){Fe=(ne-V)/J,st=[Ie.x-Fe*(Ie.x-me.x),Ie.y-Fe*(Ie.y-me.y)];break}var Ir=w.unproject(X(st));return le([Ir.lat+Bt.lat,Ir.lng+Bt.lng])}var TO={__proto__:null,simplify:Ax,pointToSegmentDistance:Rx,closestPointOnSegment:EO,clipSegment:Nx,_getEdgeIntersection:t1,_getBitCode:Ld,_sqClosestPointOnSegment:jh,isFlat:Is,_flat:n1,polylineCenter:Zf},r1={project:function(v){return new q(v.lng,v.lat)},unproject:function(v){return new se(v.y,v.x)},bounds:new $([-180,-90],[180,90])},i1={R:6378137,R_MINOR:6356752314245179e-9,bounds:new $([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(v){var w=Math.PI/180,B=this.R,V=v.lat*w,J=this.R_MINOR/B,ne=Math.sqrt(1-J*J),me=ne*Math.sin(V),Ie=Math.tan(Math.PI/4-V/2)/Math.pow((1-me)/(1+me),ne/2);return V=-B*Math.log(Math.max(Ie,1e-10)),new q(v.lng*w*B,V)},unproject:function(v){for(var w=180/Math.PI,B=this.R,V=this.R_MINOR/B,J=Math.sqrt(1-V*V),ne=Math.exp(-v.y/B),me=Math.PI/2-2*Math.atan(ne),Ie=0,Fe=.1,st;Ie<15&&Math.abs(Fe)>1e-7;Ie++)st=J*Math.sin(me),st=Math.pow((1-st)/(1+st),J/2),Fe=Math.PI/2-2*Math.atan(ne*st)-me,me+=Fe;return new se(me*w,v.x*w/B)}},Mx={__proto__:null,LonLat:r1,Mercator:i1,SphericalMercator:ye},Dx=i({},we,{code:"EPSG:3395",projection:i1,transformation:(function(){var v=.5/(Math.PI*i1.R);return ve(v,.5,-v,.5)})()}),rv=i({},we,{code:"EPSG:4326",projection:r1,transformation:ve(1/180,1,-1/180,.5)}),Jf=i({},be,{projection:r1,transformation:ve(1,0,-1,0),scale:function(v){return Math.pow(2,v)},zoom:function(v){return Math.log(v)/Math.LN2},distance:function(v,w){var B=w.lng-v.lng,V=w.lat-v.lat;return Math.sqrt(B*B+V*V)},infinite:!0});be.Earth=we,be.EPSG3395=Dx,be.EPSG3857=Xe,be.EPSG900913=Be,be.EPSG4326=rv,be.Simple=Jf;var ul=W.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(v){return v.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(v){return v&&v.removeLayer(this),this},getPane:function(v){return this._map.getPane(v?this.options[v]||v:this.options.pane)},addInteractiveTarget:function(v){return this._map._targets[l(v)]=this,this},removeInteractiveTarget:function(v){return delete this._map._targets[l(v)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(v){var w=v.target;if(w.hasLayer(this)){if(this._map=w,this._zoomAnimated=w._zoomAnimated,this.getEvents){var B=this.getEvents();w.on(B,this),this.once("remove",function(){w.off(B,this)},this)}this.onAdd(w),this.fire("add"),w.fire("layeradd",{layer:this})}}});pr.include({addLayer:function(v){if(!v._layerAdd)throw new Error("The provided object is not a Layer.");var w=l(v);return this._layers[w]?this:(this._layers[w]=v,v._mapToAdd=this,v.beforeAdd&&v.beforeAdd(this),this.whenReady(v._layerAdd,v),this)},removeLayer:function(v){var w=l(v);return this._layers[w]?(this._loaded&&v.onRemove(this),delete this._layers[w],this._loaded&&(this.fire("layerremove",{layer:v}),v.fire("remove")),v._map=v._mapToAdd=null,this):this},hasLayer:function(v){return l(v)in this._layers},eachLayer:function(v,w){for(var B in this._layers)v.call(w,this._layers[B]);return this},_addLayers:function(v){v=v?A(v)?v:[v]:[];for(var w=0,B=v.length;wthis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()=2&&w[0]instanceof se&&w[0].equals(w[B-1])&&w.pop(),w},_setLatLngs:function(v){Pc.prototype._setLatLngs.call(this,v),Is(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Is(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var v=this._renderer._bounds,w=this.options.weight,B=new q(w,w);if(v=new $(v.min.subtract(B),v.max.add(B)),this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(v))){if(this.options.noClip){this._parts=this._rings;return}for(var V=0,J=this._rings.length,ne;Vv.y!=J.y>v.y&&v.x<(J.x-V.x)*(v.y-V.y)/(J.y-V.y)+V.x&&(w=!w);return w||Pc.prototype._containsPoint.call(this,v,!0)}});function OO(v,w){return new np(v,w)}var kc=$l.extend({initialize:function(v,w){_(this,w),this._layers={},v&&this.addData(v)},addData:function(v){var w=A(v)?v:v.features,B,V,J;if(w){for(B=0,V=w.length;B0&&J.push(J[0].slice()),J}function Iu(v,w){return v.feature?i({},v.feature,{geometry:w}):l1(w)}function l1(v){return v.type==="Feature"||v.type==="FeatureCollection"?v:{type:"Feature",properties:{},geometry:v}}var Nu={toGeoJSON:function(v){return Iu(this,{type:"Point",coordinates:s1(this.getLatLng(),v)})}};$h.include(Nu),a1.include(Nu),tp.include(Nu),Pc.include({toGeoJSON:function(v){var w=!Is(this._latlngs),B=Vh(this._latlngs,w?1:0,!1,v);return Iu(this,{type:(w?"Multi":"")+"LineString",coordinates:B})}}),np.include({toGeoJSON:function(v){var w=!Is(this._latlngs),B=w&&!Is(this._latlngs[0]),V=Vh(this._latlngs,B?2:w?1:0,!0,v);return w||(V=[V]),Iu(this,{type:(B?"Multi":"")+"Polygon",coordinates:V})}}),ep.include({toMultiPoint:function(v){var w=[];return this.eachLayer(function(B){w.push(B.toGeoJSON(v).geometry.coordinates)}),Iu(this,{type:"MultiPoint",coordinates:w})},toGeoJSON:function(v){var w=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(w==="MultiPoint")return this.toMultiPoint(v);var B=w==="GeometryCollection",V=[];return this.eachLayer(function(J){if(J.toGeoJSON){var ne=J.toGeoJSON(v);if(B)V.push(ne.geometry);else{var me=l1(ne);me.type==="FeatureCollection"?V.push.apply(V,me.features):V.push(me)}}}),B?Iu(this,{geometries:V,type:"GeometryCollection"}):{type:"FeatureCollection",features:V}}});function c1(v,w){return new kc(v,w)}var Yh=c1,ip=ul.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(v,w,B){this._url=v,this._bounds=ie(w),_(this,B)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(Mn(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){sr(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(v){return this.options.opacity=v,this._image&&this._updateOpacity(),this},setStyle:function(v){return v.opacity&&this.setOpacity(v.opacity),this},bringToFront:function(){return this._map&&Fr(this._image),this},bringToBack:function(){return this._map&&_a(this._image),this},setUrl:function(v){return this._url=v,this._image&&(this._image.src=v),this},setBounds:function(v){return this._bounds=ie(v),this._map&&this._reset(),this},getEvents:function(){var v={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(v.zoomanim=this._animateZoom),v},setZIndex:function(v){return this.options.zIndex=v,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var v=this._url.tagName==="IMG",w=this._image=v?this._url:mn("img");if(Mn(w,"leaflet-image-layer"),this._zoomAnimated&&Mn(w,"leaflet-zoom-animated"),this.options.className&&Mn(w,this.options.className),w.onselectstart=f,w.onmousemove=f,w.onload=o(this.fire,this,"load"),w.onerror=o(this._overlayOnError,this,"error"),(this.options.crossOrigin||this.options.crossOrigin==="")&&(w.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),v){this._url=w.src;return}w.src=this._url,w.alt=this.options.alt},_animateZoom:function(v){var w=this._map.getZoomScale(v.zoom),B=this._map._latLngBoundsToNewLayerBounds(this._bounds,v.zoom,v.center).min;as(this._image,B,w)},_reset:function(){var v=this._image,w=new $(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),B=w.getSize();Ar(v,w.min),v.style.width=B.x+"px",v.style.height=B.y+"px"},_updateOpacity:function(){jr(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var v=this.options.errorOverlayUrl;v&&this._url!==v&&(this._url=v,this._image.src=v)},getCenter:function(){return this._bounds.getCenter()}}),Fx=function(v,w,B){return new ip(v,w,B)},Mu=ip.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var v=this._url.tagName==="VIDEO",w=this._image=v?this._url:mn("video");if(Mn(w,"leaflet-image-layer"),this._zoomAnimated&&Mn(w,"leaflet-zoom-animated"),this.options.className&&Mn(w,this.options.className),w.onselectstart=f,w.onmousemove=f,w.onloadeddata=o(this.fire,this,"load"),v){for(var B=w.getElementsByTagName("source"),V=[],J=0;J0?V:[w.src];return}A(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(w.style,"objectFit")&&(w.style.objectFit="fill"),w.autoplay=!!this.options.autoplay,w.loop=!!this.options.loop,w.muted=!!this.options.muted,w.playsInline=!!this.options.playsInline;for(var ne=0;neJ?(w.height=J+"px",Mn(v,ne)):di(v,ne),this._containerWidth=this._container.offsetWidth},_animateZoom:function(v){var w=this._map._latLngToNewLayerPoint(this._latlng,v.zoom,v.center),B=this._getAnchor();Ar(this._container,w.add(B))},_adjustPan:function(){if(this.options.autoPan){if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning){this._autopanning=!1;return}var v=this._map,w=parseInt(qn(this._container,"marginBottom"),10)||0,B=this._container.offsetHeight+w,V=this._containerWidth,J=new q(this._containerLeft,-B-this._containerBottom);J._add(An(this._container));var ne=v.layerPointToContainerPoint(J),me=X(this.options.autoPanPadding),Ie=X(this.options.autoPanPaddingTopLeft||me),Fe=X(this.options.autoPanPaddingBottomRight||me),st=v.getSize(),Bt=0,fn=0;ne.x+V+Fe.x>st.x&&(Bt=ne.x+V-st.x+Fe.x),ne.x-Bt-Ie.x<0&&(Bt=ne.x-Ie.x),ne.y+B+Fe.y>st.y&&(fn=ne.y+B-st.y+Fe.y),ne.y-fn-Ie.y<0&&(fn=ne.y-Ie.y),(Bt||fn)&&(this.options.keepInView&&(this._autopanning=!0),v.fire("autopanstart").panBy([Bt,fn]))}},_getAnchor:function(){return X(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),Ux=function(v,w){return new Wh(v,w)};pr.mergeOptions({closePopupOnClick:!0}),pr.include({openPopup:function(v,w,B){return this._initOverlay(Wh,v,w,B).openOn(this),this},closePopup:function(v){return v=arguments.length?v:this._popup,v&&v.close(),this}}),ul.include({bindPopup:function(v,w){return this._popup=this._initOverlay(Wh,this._popup,v,w),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(v){return this._popup&&(this instanceof $l||(this._popup._source=this),this._popup._prepareOpen(v||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return this._popup?this._popup.isOpen():!1},setPopupContent:function(v){return this._popup&&this._popup.setContent(v),this},getPopup:function(){return this._popup},_openPopup:function(v){if(!(!this._popup||!this._map)){Ru(v);var w=v.layer||v.target;if(this._popup._source===w&&!(w instanceof Vl)){this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(v.latlng);return}this._popup._source=w,this.openPopup(v.latlng)}},_movePopup:function(v){this._popup.setLatLng(v.latlng)},_onKeyPress:function(v){v.originalEvent.keyCode===13&&this._openPopup(v)}});var qh=to.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(v){to.prototype.onAdd.call(this,v),this.setOpacity(this.options.opacity),v.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(v){to.prototype.onRemove.call(this,v),v.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var v=to.prototype.getEvents.call(this);return this.options.permanent||(v.preclick=this.close),v},_initLayout:function(){var v="leaflet-tooltip",w=v+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=mn("div",w),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+l(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(v){var w,B,V=this._map,J=this._container,ne=V.latLngToContainerPoint(V.getCenter()),me=V.layerPointToContainerPoint(v),Ie=this.options.direction,Fe=J.offsetWidth,st=J.offsetHeight,Bt=X(this.options.offset),fn=this._getAnchor();Ie==="top"?(w=Fe/2,B=st):Ie==="bottom"?(w=Fe/2,B=0):Ie==="center"?(w=Fe/2,B=st/2):Ie==="right"?(w=0,B=st/2):Ie==="left"?(w=Fe,B=st/2):me.xthis.options.maxZoom||BV?this._retainParent(J,ne,me,V):!1)},_retainChildren:function(v,w,B,V){for(var J=2*v;J<2*v+2;J++)for(var ne=2*w;ne<2*w+2;ne++){var me=new q(J,ne);me.z=B+1;var Ie=this._tileCoordsToKey(me),Fe=this._tiles[Ie];if(Fe&&Fe.active){Fe.retain=!0;continue}else Fe&&Fe.loaded&&(Fe.retain=!0);B+1this.options.maxZoom||this.options.minZoom!==void 0&&J1){this._setView(v,B);return}for(var fn=J.min.y;fn<=J.max.y;fn++)for(var Kn=J.min.x;Kn<=J.max.x;Kn++){var za=new q(Kn,fn);if(za.z=this._tileZoom,!!this._isValidTile(za)){var ea=this._tiles[this._tileCoordsToKey(za)];ea?ea.current=!0:me.push(za)}}if(me.sort(function(Ir,Nr){return Ir.distanceTo(ne)-Nr.distanceTo(ne)}),me.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var ls=document.createDocumentFragment();for(Kn=0;KnB.max.x)||!w.wrapLat&&(v.yB.max.y))return!1}if(!this.options.bounds)return!0;var V=this._tileCoordsToBounds(v);return ie(this.options.bounds).overlaps(V)},_keyToBounds:function(v){return this._tileCoordsToBounds(this._keyToTileCoords(v))},_tileCoordsToNwSe:function(v){var w=this._map,B=this.getTileSize(),V=v.scaleBy(B),J=V.add(B),ne=w.unproject(V,v.z),me=w.unproject(J,v.z);return[ne,me]},_tileCoordsToBounds:function(v){var w=this._tileCoordsToNwSe(v),B=new te(w[0],w[1]);return this.options.noWrap||(B=this._map.wrapLatLngBounds(B)),B},_tileCoordsToKey:function(v){return v.x+":"+v.y+":"+v.z},_keyToTileCoords:function(v){var w=v.split(":"),B=new q(+w[0],+w[1]);return B.z=+w[2],B},_removeTile:function(v){var w=this._tiles[v];w&&(sr(w.el),delete this._tiles[v],this.fire("tileunload",{tile:w.el,coords:this._keyToTileCoords(v)}))},_initTile:function(v){Mn(v,"leaflet-tile");var w=this.getTileSize();v.style.width=w.x+"px",v.style.height=w.y+"px",v.onselectstart=f,v.onmousemove=f,Gt.ielt9&&this.options.opacity<1&&jr(v,this.options.opacity)},_addTile:function(v,w){var B=this._getTilePos(v),V=this._tileCoordsToKey(v),J=this.createTile(this._wrapCoords(v),o(this._tileReady,this,v));this._initTile(J),this.createTile.length<2&&j(o(this._tileReady,this,v,null,J)),Ar(J,B),this._tiles[V]={el:J,coords:v,current:!0},w.appendChild(J),this.fire("tileloadstart",{tile:J,coords:v})},_tileReady:function(v,w,B){w&&this.fire("tileerror",{error:w,tile:B,coords:v});var V=this._tileCoordsToKey(v);B=this._tiles[V],B&&(B.loaded=+new Date,this._map._fadeAnimated?(jr(B.el,0),M(this._fadeFrame),this._fadeFrame=j(this._updateOpacity,this)):(B.active=!0,this._pruneTiles()),w||(Mn(B.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:B.el,coords:v})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Gt.ielt9||!this._map._fadeAnimated?j(this._pruneTiles,this):setTimeout(o(this._pruneTiles,this),250)))},_getTilePos:function(v){return v.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(v){var w=new q(this._wrapX?c(v.x,this._wrapX):v.x,this._wrapY?c(v.y,this._wrapY):v.y);return w.z=v.z,w},_pxBoundsToTileRange:function(v){var w=this.getTileSize();return new $(v.min.unscaleBy(w).floor(),v.max.unscaleBy(w).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var v in this._tiles)if(!this._tiles[v].loaded)return!1;return!0}});function Hx(v){return new op(v)}var Du=op.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(v,w){this._url=v,w=_(this,w),w.detectRetina&&Gt.retina&&w.maxZoom>0?(w.tileSize=Math.floor(w.tileSize/2),w.zoomReverse?(w.zoomOffset--,w.minZoom=Math.min(w.maxZoom,w.minZoom+1)):(w.zoomOffset++,w.maxZoom=Math.max(w.minZoom,w.maxZoom-1)),w.minZoom=Math.max(0,w.minZoom)):w.zoomReverse?w.minZoom=Math.min(w.maxZoom,w.minZoom):w.maxZoom=Math.max(w.minZoom,w.maxZoom),typeof w.subdomains=="string"&&(w.subdomains=w.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(v,w){return this._url===v&&w===void 0&&(w=!0),this._url=v,w||this.redraw(),this},createTile:function(v,w){var B=document.createElement("img");return Sn(B,"load",o(this._tileOnLoad,this,w,B)),Sn(B,"error",o(this._tileOnError,this,w,B)),(this.options.crossOrigin||this.options.crossOrigin==="")&&(B.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),typeof this.options.referrerPolicy=="string"&&(B.referrerPolicy=this.options.referrerPolicy),B.alt="",B.src=this.getTileUrl(v),B},getTileUrl:function(v){var w={r:Gt.retina?"@2x":"",s:this._getSubdomain(v),x:v.x,y:v.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var B=this._globalTileRange.max.y-v.y;this.options.tms&&(w.y=B),w["-y"]=B}return C(this._url,i(w,this.options))},_tileOnLoad:function(v,w){Gt.ielt9?setTimeout(o(v,this,null,w),0):v(null,w)},_tileOnError:function(v,w,B){var V=this.options.errorTileUrl;V&&w.getAttribute("src")!==V&&(w.src=V),v(B,w)},_onTileRemove:function(v){v.tile.onload=null},_getZoomForUrl:function(){var v=this._tileZoom,w=this.options.maxZoom,B=this.options.zoomReverse,V=this.options.zoomOffset;return B&&(v=w-v),v+V},_getSubdomain:function(v){var w=Math.abs(v.x+v.y)%this.options.subdomains.length;return this.options.subdomains[w]},_abortLoading:function(){var v,w;for(v in this._tiles)if(this._tiles[v].coords.z!==this._tileZoom&&(w=this._tiles[v].el,w.onload=f,w.onerror=f,!w.complete)){w.src=I;var B=this._tiles[v].coords;sr(w),delete this._tiles[v],this.fire("tileabort",{tile:w,coords:B})}},_removeTile:function(v){var w=this._tiles[v];if(w)return w.el.setAttribute("src",I),op.prototype._removeTile.call(this,v)},_tileReady:function(v,w,B){if(!(!this._map||B&&B.getAttribute("src")===I))return op.prototype._tileReady.call(this,v,w,B)}});function Ns(v,w){return new Du(v,w)}var Kh=Du.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(v,w){this._url=v;var B=i({},this.defaultWmsParams);for(var V in w)V in this.options||(B[V]=w[V]);w=_(this,w);var J=w.detectRetina&&Gt.retina?2:1,ne=this.getTileSize();B.width=ne.x*J,B.height=ne.y*J,this.wmsParams=B},onAdd:function(v){this._crs=this.options.crs||v.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var w=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[w]=this._crs.code,Du.prototype.onAdd.call(this,v)},getTileUrl:function(v){var w=this._tileCoordsToNwSe(v),B=this._crs,V=K(B.project(w[0]),B.project(w[1])),J=V.min,ne=V.max,me=(this._wmsVersion>=1.3&&this._crs===rv?[J.y,J.x,ne.y,ne.x]:[J.x,J.y,ne.x,ne.y]).join(","),Ie=Du.prototype.getTileUrl.call(this,v);return Ie+y(this.wmsParams,Ie,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+me},setParams:function(v,w){return i(this.wmsParams,v),w||this.redraw(),this}});function Ms(v,w){return new Kh(v,w)}Du.WMS=Kh,Ns.wms=Ms;var Bo=ul.extend({options:{padding:.1},initialize:function(v){_(this,v),l(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),Mn(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var v={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(v.zoomanim=this._onAnimZoom),v},_onAnimZoom:function(v){this._updateTransform(v.center,v.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(v,w){var B=this._map.getZoomScale(w,this._zoom),V=this._map.getSize().multiplyBy(.5+this.options.padding),J=this._map.project(this._center,w),ne=V.multiplyBy(-B).add(J).subtract(this._map._getNewPixelOrigin(v,w));Gt.any3d?as(this._container,ne,B):Ar(this._container,ne)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var v in this._layers)this._layers[v]._reset()},_onZoomEnd:function(){for(var v in this._layers)this._layers[v]._project()},_updatePaths:function(){for(var v in this._layers)this._layers[v]._update()},_update:function(){var v=this.options.padding,w=this._map.getSize(),B=this._map.containerPointToLayerPoint(w.multiplyBy(-v)).round();this._bounds=new $(B,B.add(w.multiplyBy(1+v*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),d1=Bo.extend({options:{tolerance:0},getEvents:function(){var v=Bo.prototype.getEvents.call(this);return v.viewprereset=this._onViewPreReset,v},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Bo.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var v=this._container=document.createElement("canvas");Sn(v,"mousemove",this._onMouseMove,this),Sn(v,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Sn(v,"mouseout",this._handleMouseOut,this),v._leaflet_disable_events=!0,this._ctx=v.getContext("2d")},_destroyContainer:function(){M(this._redrawRequest),delete this._ctx,sr(this._container),Ur(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var v;this._redrawBounds=null;for(var w in this._layers)v=this._layers[w],v._update();this._redraw()}},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Bo.prototype._update.call(this);var v=this._bounds,w=this._container,B=v.getSize(),V=Gt.retina?2:1;Ar(w,v.min),w.width=V*B.x,w.height=V*B.y,w.style.width=B.x+"px",w.style.height=B.y+"px",Gt.retina&&this._ctx.scale(2,2),this._ctx.translate(-v.min.x,-v.min.y),this.fire("update")}},_reset:function(){Bo.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(v){this._updateDashArray(v),this._layers[l(v)]=v;var w=v._order={layer:v,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=w),this._drawLast=w,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(v){this._requestRedraw(v)},_removePath:function(v){var w=v._order,B=w.next,V=w.prev;B?B.prev=V:this._drawLast=V,V?V.next=B:this._drawFirst=B,delete v._order,delete this._layers[l(v)],this._requestRedraw(v)},_updatePath:function(v){this._extendRedrawBounds(v),v._project(),v._update(),this._requestRedraw(v)},_updateStyle:function(v){this._updateDashArray(v),this._requestRedraw(v)},_updateDashArray:function(v){if(typeof v.options.dashArray=="string"){var w=v.options.dashArray.split(/[, ]+/),B=[],V,J;for(J=0;J')}}catch{}return function(v){return document.createElement("<"+v+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),iv={_initContainer:function(){this._container=mn("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Bo.prototype._update.call(this),this.fire("update"))},_initPath:function(v){var w=v._container=Pu("shape");Mn(w,"leaflet-vml-shape "+(this.options.className||"")),w.coordsize="1 1",v._path=Pu("path"),w.appendChild(v._path),this._updateStyle(v),this._layers[l(v)]=v},_addPath:function(v){var w=v._container;this._container.appendChild(w),v.options.interactive&&v.addInteractiveTarget(w)},_removePath:function(v){var w=v._container;sr(w),v.removeInteractiveTarget(w),delete this._layers[l(v)]},_updateStyle:function(v){var w=v._stroke,B=v._fill,V=v.options,J=v._container;J.stroked=!!V.stroke,J.filled=!!V.fill,V.stroke?(w||(w=v._stroke=Pu("stroke")),J.appendChild(w),w.weight=V.weight+"px",w.color=V.color,w.opacity=V.opacity,V.dashArray?w.dashStyle=A(V.dashArray)?V.dashArray.join(" "):V.dashArray.replace(/( *, *)/g," "):w.dashStyle="",w.endcap=V.lineCap.replace("butt","flat"),w.joinstyle=V.lineJoin):w&&(J.removeChild(w),v._stroke=null),V.fill?(B||(B=v._fill=Pu("fill")),J.appendChild(B),B.color=V.fillColor||V.color,B.opacity=V.fillOpacity):B&&(J.removeChild(B),v._fill=null)},_updateCircle:function(v){var w=v._point.round(),B=Math.round(v._radius),V=Math.round(v._radiusY||B);this._setPath(v,v._empty()?"M0 0":"AL "+w.x+","+w.y+" "+B+","+V+" 0,"+65535*360)},_setPath:function(v,w){v._path.v=w},_bringToFront:function(v){Fr(v._container)},_bringToBack:function(v){_a(v._container)}},Yl=Gt.vml?Pu:Ne,sp=Bo.extend({_initContainer:function(){this._container=Yl("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Yl("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){sr(this._container),Ur(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Bo.prototype._update.call(this);var v=this._bounds,w=v.getSize(),B=this._container;(!this._svgSize||!this._svgSize.equals(w))&&(this._svgSize=w,B.setAttribute("width",w.x),B.setAttribute("height",w.y)),Ar(B,v.min),B.setAttribute("viewBox",[v.min.x,v.min.y,w.x,w.y].join(" ")),this.fire("update")}},_initPath:function(v){var w=v._path=Yl("path");v.options.className&&Mn(w,v.options.className),v.options.interactive&&Mn(w,"leaflet-interactive"),this._updateStyle(v),this._layers[l(v)]=v},_addPath:function(v){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(v._path),v.addInteractiveTarget(v._path)},_removePath:function(v){sr(v._path),v.removeInteractiveTarget(v._path),delete this._layers[l(v)]},_updatePath:function(v){v._project(),v._update()},_updateStyle:function(v){var w=v._path,B=v.options;w&&(B.stroke?(w.setAttribute("stroke",B.color),w.setAttribute("stroke-opacity",B.opacity),w.setAttribute("stroke-width",B.weight),w.setAttribute("stroke-linecap",B.lineCap),w.setAttribute("stroke-linejoin",B.lineJoin),B.dashArray?w.setAttribute("stroke-dasharray",B.dashArray):w.removeAttribute("stroke-dasharray"),B.dashOffset?w.setAttribute("stroke-dashoffset",B.dashOffset):w.removeAttribute("stroke-dashoffset")):w.setAttribute("stroke","none"),B.fill?(w.setAttribute("fill",B.fillColor||B.color),w.setAttribute("fill-opacity",B.fillOpacity),w.setAttribute("fill-rule",B.fillRule||"evenodd")):w.setAttribute("fill","none"))},_updatePoly:function(v,w){this._setPath(v,Je(v._parts,w))},_updateCircle:function(v){var w=v._point,B=Math.max(Math.round(v._radius),1),V=Math.max(Math.round(v._radiusY),1)||B,J="a"+B+","+V+" 0 1,0 ",ne=v._empty()?"M0 0":"M"+(w.x-B)+","+w.y+J+B*2+",0 "+J+-B*2+",0 ";this._setPath(v,ne)},_setPath:function(v,w){v._path.setAttribute("d",w)},_bringToFront:function(v){Fr(v._path)},_bringToBack:function(v){_a(v._path)}});Gt.vml&&sp.include(iv);function Qh(v){return Gt.svg||Gt.vml?new sp(v):null}pr.include({getRenderer:function(v){var w=v.options.renderer||this._getPaneRenderer(v.options.pane)||this.options.renderer||this._renderer;return w||(w=this._renderer=this._createRenderer()),this.hasLayer(w)||this.addLayer(w),w},_getPaneRenderer:function(v){if(v==="overlayPane"||v===void 0)return!1;var w=this._paneRenderers[v];return w===void 0&&(w=this._createRenderer({pane:v}),this._paneRenderers[v]=w),w},_createRenderer:function(v){return this.options.preferCanvas&&Xh(v)||Qh(v)}});var Bd=np.extend({initialize:function(v,w){np.prototype.initialize.call(this,this._boundsToLatLngs(v),w)},setBounds:function(v){return this.setLatLngs(this._boundsToLatLngs(v))},_boundsToLatLngs:function(v){return v=ie(v),[v.getSouthWest(),v.getNorthWest(),v.getNorthEast(),v.getSouthEast()]}});function MO(v,w){return new Bd(v,w)}sp.create=Yl,sp.pointsToPath=Je,kc.geometryToLayer=eo,kc.coordsToLatLng=o1,kc.coordsToLatLngs=Gh,kc.latLngToCoords=s1,kc.latLngsToCoords=Vh,kc.getFeature=Iu,kc.asFeature=l1,pr.mergeOptions({boxZoom:!0});var Fo=Hl.extend({initialize:function(v){this._map=v,this._container=v._container,this._pane=v._panes.overlayPane,this._resetStateTimeout=0,v.on("unload",this._destroy,this)},addHooks:function(){Sn(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Ur(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){sr(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(v){if(!v.shiftKey||v.which!==1&&v.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),ol(),Po(),this._startPoint=this._map.mouseEventToContainerPoint(v),Sn(document,{contextmenu:Ru,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(v){this._moved||(this._moved=!0,this._box=mn("div","leaflet-zoom-box",this._container),Mn(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(v);var w=new $(this._point,this._startPoint),B=w.getSize();Ar(this._box,w.min),this._box.style.width=B.x+"px",this._box.style.height=B.y+"px"},_finish:function(){this._moved&&(sr(this._box),di(this._container,"leaflet-crosshair")),Vr(),Os(),Ur(document,{contextmenu:Ru,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(v){if(!(v.which!==1&&v.button!==1)&&(this._finish(),!!this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(o(this._resetState,this),0);var w=new te(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(w).fire("boxzoomend",{boxZoomBounds:w})}},_onKeyDown:function(v){v.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});pr.addInitHook("addHandler","boxZoom",Fo),pr.mergeOptions({doubleClickZoom:!0});var f1=Hl.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(v){var w=this._map,B=w.getZoom(),V=w.options.zoomDelta,J=v.originalEvent.shiftKey?B-V:B+V;w.options.doubleClickZoom==="center"?w.setZoom(J):w.setZoomAround(v.containerPoint,J)}});pr.addInitHook("addHandler","doubleClickZoom",f1),pr.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Wl=Hl.extend({addHooks:function(){if(!this._draggable){var v=this._map;this._draggable=new Ou(v._mapPane,v._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),v.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),v.on("zoomend",this._onZoomEnd,this),v.whenReady(this._onZoomEnd,this))}Mn(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){di(this._map._container,"leaflet-grab"),di(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var v=this._map;if(v._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var w=ie(this._map.options.maxBounds);this._offsetLimit=K(this._map.latLngToContainerPoint(w.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(w.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;v.fire("movestart").fire("dragstart"),v.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(v){if(this._map.options.inertia){var w=this._lastTime=+new Date,B=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(B),this._times.push(w),this._prunePositions(w)}this._map.fire("move",v).fire("drag",v)},_prunePositions:function(v){for(;this._positions.length>1&&v-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var v=this._map.getSize().divideBy(2),w=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=w.subtract(v).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(v,w){return v-(v-w)*this._viscosity},_onPreDragLimit:function(){if(!(!this._viscosity||!this._offsetLimit)){var v=this._draggable._newPos.subtract(this._draggable._startPos),w=this._offsetLimit;v.xw.max.x&&(v.x=this._viscousLimit(v.x,w.max.x)),v.y>w.max.y&&(v.y=this._viscousLimit(v.y,w.max.y)),this._draggable._newPos=this._draggable._startPos.add(v)}},_onPreDragWrap:function(){var v=this._worldWidth,w=Math.round(v/2),B=this._initialWorldOffset,V=this._draggable._newPos.x,J=(V-w+B)%v+w-B,ne=(V+w+B)%v-w-B,me=Math.abs(J+B)0?ne:-ne))-w;this._delta=0,this._startTime=null,me&&(v.options.scrollWheelZoom==="center"?v.setZoom(w+me):v.setZoomAround(this._lastMousePos,w+me))}});pr.addInitHook("addHandler","scrollWheelZoom",Zh);var Fd=600;pr.mergeOptions({tapHold:Gt.touchNative&&Gt.safari&&Gt.mobile,tapTolerance:15});var p1=Hl.extend({addHooks:function(){Sn(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Ur(this._map._container,"touchstart",this._onDown,this)},_onDown:function(v){if(clearTimeout(this._holdTimeout),v.touches.length===1){var w=v.touches[0];this._startPos=this._newPos=new q(w.clientX,w.clientY),this._holdTimeout=setTimeout(o(function(){this._cancel(),this._isTapValid()&&(Sn(document,"touchend",Ji),Sn(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",w))},this),Fd),Sn(document,"touchend touchcancel contextmenu",this._cancel,this),Sn(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function v(){Ur(document,"touchend",Ji),Ur(document,"touchend touchcancel",v)},_cancel:function(){clearTimeout(this._holdTimeout),Ur(document,"touchend touchcancel contextmenu",this._cancel,this),Ur(document,"touchmove",this._onMove,this)},_onMove:function(v){var w=v.touches[0];this._newPos=new q(w.clientX,w.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(v,w){var B=new MouseEvent(v,{bubbles:!0,cancelable:!0,view:window,screenX:w.screenX,screenY:w.screenY,clientX:w.clientX,clientY:w.clientY});B._simulated=!0,w.target.dispatchEvent(B)}});pr.addInitHook("addHandler","tapHold",p1),pr.mergeOptions({touchZoom:Gt.touch,bounceAtZoomLimits:!0});var ov=Hl.extend({addHooks:function(){Mn(this._map._container,"leaflet-touch-zoom"),Sn(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){di(this._map._container,"leaflet-touch-zoom"),Ur(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(v){var w=this._map;if(!(!v.touches||v.touches.length!==2||w._animatingZoom||this._zooming)){var B=w.mouseEventToContainerPoint(v.touches[0]),V=w.mouseEventToContainerPoint(v.touches[1]);this._centerPoint=w.getSize()._divideBy(2),this._startLatLng=w.containerPointToLatLng(this._centerPoint),w.options.touchZoom!=="center"&&(this._pinchStartLatLng=w.containerPointToLatLng(B.add(V)._divideBy(2))),this._startDist=B.distanceTo(V),this._startZoom=w.getZoom(),this._moved=!1,this._zooming=!0,w._stop(),Sn(document,"touchmove",this._onTouchMove,this),Sn(document,"touchend touchcancel",this._onTouchEnd,this),Ji(v)}},_onTouchMove:function(v){if(!(!v.touches||v.touches.length!==2||!this._zooming)){var w=this._map,B=w.mouseEventToContainerPoint(v.touches[0]),V=w.mouseEventToContainerPoint(v.touches[1]),J=B.distanceTo(V)/this._startDist;if(this._zoom=w.getScaleZoom(J,this._startZoom),!w.options.bounceAtZoomLimits&&(this._zoomw.getMaxZoom()&&J>1)&&(this._zoom=w._limitZoom(this._zoom)),w.options.touchZoom==="center"){if(this._center=this._startLatLng,J===1)return}else{var ne=B._add(V)._divideBy(2)._subtract(this._centerPoint);if(J===1&&ne.x===0&&ne.y===0)return;this._center=w.unproject(w.project(this._pinchStartLatLng,this._zoom).subtract(ne),this._zoom)}this._moved||(w._moveStart(!0,!1),this._moved=!0),M(this._animRequest);var me=o(w._move,w,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=j(me,this,!0),Ji(v)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,M(this._animRequest),Ur(document,"touchmove",this._onTouchMove,this),Ur(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))}});pr.addInitHook("addHandler","touchZoom",ov),pr.BoxZoom=Fo,pr.DoubleClickZoom=f1,pr.Drag=Wl,pr.Keyboard=av,pr.ScrollWheelZoom=Zh,pr.TapHold=p1,pr.TouchZoom=ov,n.Bounds=$,n.Browser=Gt,n.CRS=be,n.Canvas=d1,n.Circle=a1,n.CircleMarker=tp,n.Class=G,n.Control=ss,n.DivIcon=zx,n.DivOverlay=to,n.DomEvent=e1,n.DomUtil=ko,n.Draggable=Ou,n.Evented=W,n.FeatureGroup=$l,n.GeoJSON=kc,n.GridLayer=op,n.Handler=Hl,n.Icon=Gl,n.ImageOverlay=ip,n.LatLng=se,n.LatLngBounds=te,n.Layer=ul,n.LayerGroup=ep,n.LineUtil=TO,n.Map=pr,n.Marker=$h,n.Mixin=xO,n.Path=Vl,n.Point=q,n.PolyUtil=tv,n.Polygon=np,n.Polyline=Pc,n.Popup=Wh,n.PosAnimation=Qf,n.Projection=Mx,n.Rectangle=Bd,n.Renderer=Bo,n.SVG=sp,n.SVGOverlay=u1,n.TileLayer=Du,n.Tooltip=qh,n.Transformation=Ae,n.Util=z,n.VideoOverlay=Mu,n.bind=o,n.bounds=K,n.canvas=Xh,n.circle=Bx,n.circleMarker=Lx,n.control=Dc,n.divIcon=NO,n.extend=i,n.featureGroup=Px,n.geoJSON=c1,n.geoJson=Yh,n.gridLayer=Hx,n.icon=Uh,n.imageOverlay=Fx,n.latLng=le,n.latLngBounds=ie,n.layerGroup=AO,n.map=K_,n.marker=kx,n.point=X,n.polygon=OO,n.polyline=RO,n.popup=Ux,n.rectangle=MO,n.setOptions=_,n.stamp=l,n.svg=Qh,n.svgOverlay=jx,n.tileLayer=Ns,n.tooltip=IO,n.transformation=ve,n.version=r,n.videoOverlay=ap;var sv=window.L;n.noConflict=function(){return window.L=sv,this},window.L=n}))})(U0,U0.exports)),U0.exports}var px=Rvt();function QR(t,e,n){return Object.freeze({instance:t,context:e,container:n})}function KF(t,e){return e==null?function(r,i){const a=E.useRef(void 0);return a.current||(a.current=t(r,i)),a}:function(r,i){const a=E.useRef(void 0);a.current||(a.current=t(r,i));const o=E.useRef(r),{instance:s}=a.current;return E.useEffect(function(){o.current!==r&&(e(s,r,o.current),o.current=r)},[s,r,e]),a}}function Age(t,e){E.useEffect(function(){return(e.layerContainer??e.map).addLayer(t.instance),function(){e.layerContainer?.removeLayer(t.instance),e.map.removeLayer(t.instance)}},[e,t])}function Ovt(t){return function(n){const r=WF(),i=t(XR(n,r),r);return wge(r.map,n.attribution),qF(i.current,n.eventHandlers),Age(i.current,r),i}}function Ivt(t,e){const n=E.useRef(void 0);E.useEffect(function(){if(e.pathOptions!==n.current){const i=e.pathOptions??{};t.instance.setStyle(i),n.current=i}},[t,e])}function Nvt(t){return function(n){const r=WF(),i=t(XR(n,r),r);return qF(i.current,n.eventHandlers),Age(i.current,r),Ivt(i.current,n),i}}function Mvt(t,e){const n=KF(t),r=Tvt(n,e);return Cvt(r)}function Rge(t,e){const n=KF(t,e),r=Nvt(n);return Evt(r)}function Dvt(t,e){const n=KF(t,e),r=Ovt(n);return wvt(r)}function Pvt(t,e,n){const{opacity:r,zIndex:i}=e;r!=null&&r!==n.opacity&&t.setOpacity(r),i!=null&&i!==n.zIndex&&t.setZIndex(i)}const g6=Rge(function({center:e,children:n,...r},i){const a=new px.CircleMarker(e,r);return QR(a,Tge(i,{overlayContainer:a}))},yvt),kvt=Rge(function({data:e,...n},r){const i=new px.GeoJSON(e,n);return QR(i,Tge(r,{overlayContainer:i}))},function(e,n,r){n.style!==r.style&&(n.style==null?e.resetStyle():e.setStyle(n.style))});function Lvt({bounds:t,boundsOptions:e,center:n,children:r,className:i,id:a,placeholder:o,style:s,whenReady:l,zoom:u,...c},f){const[h]=E.useState({className:i,id:a,style:s}),[m,b]=E.useState(null),_=E.useRef(void 0);E.useImperativeHandle(f,()=>m?.map??null,[m]);const y=E.useCallback(C=>{if(C!==null&&!_.current){const A=new px.Map(C,c);_.current=A,n!=null&&u!=null?A.setView(n,u):t!=null&&A.fitBounds(t,e),l!=null&&A.whenReady(l),b(xvt(A))}},[]);E.useEffect(()=>()=>{m?.map.remove()},[m]);const x=m?Ue.createElement(YF,{value:m},r):o??null;return Ue.createElement("div",{...h,ref:y},x)}const Oge=E.forwardRef(Lvt),m6=Mvt(function(e,n){const r=new px.Popup(e,n.overlayContainer);return QR(r,n)},function(e,n,{position:r},i){E.useEffect(function(){const{instance:o}=e;function s(u){u.popup===o&&(o.update(),i(!0))}function l(u){u.popup===o&&i(!1)}return n.map.on({popupopen:s,popupclose:l}),n.overlayContainer==null?(r!=null&&o.setLatLng(r),o.openOn(n.map)):n.overlayContainer.bindPopup(o),function(){n.map.off({popupopen:s,popupclose:l}),n.overlayContainer?.unbindPopup(),n.map.removeLayer(o)}},[e,n,i,r])}),Ige=Dvt(function({url:e,...n},r){const i=new px.TileLayer(e,XR(n,r));return QR(i,r)},function(e,n,r){Pvt(e,n,r);const{url:i}=n;i!=null&&i!==r.url&&e.setUrl(i)}),Nge=Zt(t=>({mapContainer:{height:"calc(100vh - 170px)",minHeight:480,borderRadius:8,overflow:"hidden"},vectorContainer:{height:"calc(100vh - 170px)",minHeight:480,borderRadius:8,overflow:"hidden"},leafletMap:{height:"100%",width:"100%",background:t.palette.background.default}}));function Bvt(){const t=Nge();return d.jsx("div",{className:t.mapContainer,children:d.jsxs(Oge,{center:[39.8283,-98.5795],zoom:4,scrollWheelZoom:!0,className:t.leafletMap,children:[d.jsx(Ige,{attribution:'© OpenStreetMap contributors',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),d.jsx(g6,{center:[40.7128,-74.006],radius:8,pathOptions:{color:"#536DFE"},children:d.jsx(m6,{children:"New York"})}),d.jsx(g6,{center:[34.0522,-118.2437],radius:8,pathOptions:{color:"#3CD4A0"},children:d.jsx(m6,{children:"Los Angeles"})}),d.jsx(g6,{center:[41.8781,-87.6298],radius:8,pathOptions:{color:"#FF5C93"},children:d.jsx(m6,{children:"Chicago"})})]})})}function Fvt(t){return t}function jvt(t){if(t==null)return Fvt;var e,n,r=t.scale[0],i=t.scale[1],a=t.translate[0],o=t.translate[1];return function(s,l){l||(e=n=0);var u=2,c=s.length,f=new Array(c);for(f[0]=(e+=s[0])*r+a,f[1]=(n+=s[1])*i+o;ub6?.objects?.world?zvt(b6,b6.objects.world):null,[]),r=Ue.useCallback(()=>({fillColor:t.palette.mode==="dark"?"#2D3B58":"#C5D3F6",weight:1,opacity:1,color:t.palette.mode==="dark"?"#4C5D82":"#8EA4D2",fillOpacity:.75}),[t.palette.mode]),i=Ue.useCallback((a,o)=>{const s=a?.properties?.name;s&&o.bindTooltip(s,{sticky:!0})},[]);return d.jsx("div",{className:e.vectorContainer,children:d.jsxs(Oge,{center:[20,0],zoom:2,minZoom:2,scrollWheelZoom:!0,className:e.leafletMap,children:[d.jsx(Ige,{attribution:'© OpenStreetMap contributors',url:"https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png"}),n&&d.jsx(kvt,{data:n,style:r,onEachFeature:i})]})})}const Wvt=Zt(t=>({icon:{fontSize:t.spacing(2)},divider:{margin:`0px -${t.spacing(3)}px`},wrapper:{"& > *":{paddingTop:t.spacing(5)},"& > :first-child":{paddingTop:0}}})),k2="/react-material-admin/assets/a2-BF5wLY3O.jpg",yne="/react-material-admin/assets/a3-Q2dxtR85.jpg",Sne="/react-material-admin/assets/profile-Bf-8o0G6.jpg",qvt="/react-material-admin/assets/a4-CjndXA0d.jpg",Kvt="/react-material-admin/assets/a1-DgqnjE2v.jpg",Xvt="/react-material-admin/assets/mountains-FnFFFzmH.jpeg",Qvt=Zt(()=>({border:{position:"relative","&:before":{content:"''",position:"absolute",border:"1px solid #bdbdbd",left:"50%",height:"calc(100% + 40px)",width:1}},circle:{border:"rgba(255,255,255,.2) 5px solid"}})),L2=t=>d.jsx(ce,{width:"45%",align:t.right&&"right",children:d.jsxs("time",{children:[d.jsx(oe,{children:t.day}),d.jsx(oe,{weight:"medium",children:t.timestep})]})}),B2=({children:t,...e})=>{const n=Qvt();return d.jsx(ce,{className:n.border,display:"flex",children:d.jsx(Eo,{...e,className:n.circle,children:t||null})})},F2=t=>d.jsx(d.Fragment,{children:d.jsx(ce,{display:"flex",flexDirection:"row",justifyContent:"space-between",children:t.children})});function Zvt(){const t=Wvt(),[e,n]=Ue.useState(!1),r=()=>{n(!e)};return d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:3,children:d.jsx(re,{size:12,children:d.jsxs(ce,{display:"flex",flexDirection:"column",justifyContent:"center",className:t.wrapper,children:[d.jsxs(F2,{children:[d.jsx(ce,{width:"45%",children:d.jsx(et,{disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(ce,{display:"flex",flexDirection:"column",children:[d.jsxs(ce,{display:"flex",children:[d.jsx(Eo,{src:k2,style:{marginRight:8}}),d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",children:[d.jsx(vr,{color:"primary",children:"Jessica Nilson"})," @jess"]}),d.jsx(ce,{fontSize:".875rem",children:"10:12 am - Publicly near Minsk"})]})]}),d.jsxs(ce,{display:"flex",ml:"-12px",my:1,children:[d.jsx(pn,{"aria-label":"like",children:d.jsx(Vp,{})}),d.jsx(pn,{"aria-label":"comments",children:d.jsx(Gg,{})})]}),d.jsx(Ys,{className:t.divider}),d.jsxs(ce,{display:"flex",my:2,children:[d.jsx(Eo,{src:k2,style:{marginRight:8}}),d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",display:"flex",alignItems:"center",fontSize:".77rem",children:[d.jsx(vr,{to:"#",color:"primary",children:"Jessica Nilson"})," ",d.jsx(ce,{fontSize:".7rem",fontWeight:"fontWeightRegular",ml:1,children:"7 mins ago"})]}),d.jsx(ce,{fontSize:".8rem",children:"Someone said they were the best people out there just few years ago. Don't know better options."})]})]}),d.jsx(Ys,{className:t.divider}),d.jsxs(ce,{display:"flex",my:2,children:[d.jsx(Eo,{src:yne,style:{marginRight:8}}),d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",display:"flex",alignItems:"center",fontSize:".77rem",children:[d.jsx(vr,{to:"#",color:"primary",children:"Ignacio Abad"})," ",d.jsx(ce,{fontSize:".7rem",fontWeight:"fontWeightRegular",ml:1,children:"6 mins ago"})]}),d.jsx(ce,{fontSize:".8rem",children:"True. Heard absolutely the same."})]})]}),d.jsx(Ys,{className:t.divider}),d.jsxs(ce,{display:"flex",mt:3,children:[d.jsx(Eo,{color:"primary",style:{marginRight:8},children:"P"}),d.jsx(wn,{placeholder:"Write your comment...",style:{flexGrow:1}})]})]})})}),d.jsx(B2,{color:"primary",children:d.jsx(I5e,{className:t.icon})}),d.jsx(L2,{day:"yesterday",timestep:"8:03 pm"})]}),d.jsxs(F2,{children:[d.jsx(L2,{day:"yesterday",timestep:"9:03 am",right:!0}),d.jsx(B2,{color:"secondary",children:d.jsx(l5e,{className:t.icon})}),d.jsx(ce,{width:"45%",children:d.jsx(et,{disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(ce,{display:"flex",flexDirection:"column",children:[d.jsxs(ce,{display:"flex",children:[d.jsx(Eo,{src:Sne,style:{marginRight:8}}),d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",children:[d.jsx(vr,{to:"#",color:"secondary",children:"Bob Nilson"})," ","@nils"]}),d.jsx(ce,{fontSize:".875rem",children:"February 22, 2014 at 01:59 PM"})]})]}),d.jsx(ce,{mt:2,children:"There is no such thing as maturity. There is instead an ever-evolving process of maturing. Because when there is a maturity, there is ..."}),d.jsxs(ce,{display:"flex",ml:"-12px",mt:1,children:[d.jsx(pn,{"aria-label":"like",children:d.jsx(Vp,{})}),d.jsx(pn,{"aria-label":"comments",children:d.jsx(Gg,{})})]})]})})})]}),d.jsxs(F2,{children:[d.jsx(ce,{width:"45%",children:d.jsx(et,{disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(ce,{display:"flex",flexDirection:"column",children:[d.jsxs(ce,{display:"flex",children:[d.jsx(Eo,{src:k2,style:{marginRight:8}}),d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",children:[d.jsx(vr,{color:"warning",children:"Jessica Smith"})," @jess"]}),d.jsx(ce,{fontSize:".875rem",children:"February 22, 2014 at 01:59 PM"}),d.jsx(ce,{my:1,children:d.jsx(oe,{variant:"subtitle2",children:"Check out this awesome photo I made in Italy last summer. Seems it was lost somewhere deep inside my brand new HDD 40TB. Thanks god I found it!"})})]})]}),d.jsx(ce,{height:400,width:"100%",mx:"-24px",mt:2,children:d.jsx("img",{src:Xvt,alt:"mountains",style:{height:"100%",width:"calc(100% + 48px)"}})}),d.jsxs(ce,{display:"flex",ml:"-12px",mt:1,children:[d.jsx(pn,{"aria-label":"like",children:d.jsx(Vp,{})}),d.jsx(pn,{"aria-label":"comments",children:d.jsx(Gg,{})}),d.jsxs(ce,{ml:"auto",display:"flex",children:[d.jsx(Eo,{src:k2}),d.jsx(Eo,{src:yne,style:{marginLeft:8}}),d.jsx(Eo,{src:Sne,style:{marginLeft:8}})]})]}),d.jsx(Ys,{className:t.divider}),d.jsxs(ce,{display:"flex",my:2,children:[d.jsx(Eo,{src:Kvt,style:{marginRight:8}}),d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",display:"flex",alignItems:"center",fontSize:".77rem",children:[d.jsx(vr,{to:"#",color:"warning",children:"Ignacio Abad"})," ",d.jsx(ce,{fontSize:".7rem",fontWeight:"fontWeightRegular",ml:1,children:"6 mins ago"})]}),d.jsx(ce,{fontSize:".8rem",children:"Hey, have you heard anything about that?"})]})]}),d.jsx(Ys,{className:t.divider}),d.jsxs(ce,{display:"flex",mt:3,children:[d.jsx(Eo,{color:"warning",style:{marginRight:8},children:"P"}),d.jsx(wn,{placeholder:"Write your comment...",style:{flexGrow:1}})]})]})})}),d.jsx(B2,{color:"warning",children:d.jsx(x5e,{className:t.icon})}),d.jsx(L2,{day:"yesterday",timestep:"9:03 pm"})]}),d.jsxs(F2,{children:[d.jsx(L2,{day:"yesterday",timestep:"9:03 am",right:!0}),d.jsx(B2,{color:"success",children:"J"}),d.jsx(ce,{width:"45%",children:d.jsx(et,{disableWidgetMenu:!0,inheritHeight:!0,children:d.jsxs(ce,{display:"flex",flexDirection:"column",children:[d.jsxs(ce,{display:"flex",children:[d.jsx(Eo,{src:qvt,style:{marginRight:8}}),d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",children:[d.jsx(vr,{to:"#",color:"success",children:"Jessica Smith"})," ","@jess"]}),d.jsx(ce,{fontSize:".875rem",children:"9:03 am - Publicly near Minsk"})]})]}),d.jsxs(ce,{mt:2,children:[d.jsxs(oe,{variant:"h6",children:["New ",d.jsx("b",{children:"Project"})," Launch"]}),d.jsx(ce,{my:1,children:"Let's try something different this time. Hey, do you wanna join us tonight? We're planning to a launch a new project soon. Want to discuss with all of you..."}),d.jsx(ce,{children:d.jsx(gt,{onClick:r,children:"Read more..."})}),d.jsx(Yb,{in:e,timeout:"auto",unmountOnExit:!0,children:d.jsxs(eu,{children:[d.jsx(oe,{paragraph:!0,children:"Finished her are its honoured drawings nor. Pretty see mutual thrown all not edward ten. Particular an boisterous up he reasonably frequently. Several any had enjoyed shewing studied two. Up intention remainder sportsmen behaviour ye happiness. Few again any alone style added abode ask. Nay projecting unpleasing boisterous eat discovered solicitude. Own six moments produce elderly pasture far arrival. Hold our year they ten upon. Gentleman contained so intention sweetness in on resolving."}),d.jsx(oe,{paragraph:!0,children:"Finished her are its honoured drawings nor. Pretty see mutual thrown all not edward ten. Particular an boisterous up he reasonably frequently. Several any had enjoyed shewing studied two. Up intention remainder sportsmen behaviour ye happiness. Few again any alone style added abode ask. Nay projecting unpleasing boisterous eat discovered solicitude. Own six moments produce elderly pasture far arrival. Hold our year they ten upon. Gentleman contained so intention sweetness in on resolving."}),d.jsx(oe,{children:"Of recommend residence education be on difficult repulsive offending. Judge views had mirth table seems great him for her."})]})})]}),d.jsxs(ce,{display:"flex",ml:"-12px",mt:1,children:[d.jsx(pn,{"aria-label":"like",children:d.jsx(Vp,{})}),d.jsx(pn,{"aria-label":"comments",children:d.jsx(Gg,{})})]})]})})})]})]})})})})}const Jvt=Zt(()=>({filter:{width:130},adjustRightBorderRadius:{borderTopRightRadius:0,borderBottomRightRadius:0},adjustLeftBorderRadius:{borderTopLeftRadius:0,borderBottomLeftRadius:0}})),e0t="/react-material-admin/assets/img1-Dtu24cI6.jpg",t0t="/react-material-admin/assets/img2-hCLBWyRx.jpg",n0t="/react-material-admin/assets/img3-BBd_mS8I.jpg",r0t="/react-material-admin/assets/img4-DN0wnbGq.jpg";function i0t(){const[t,e]=Ue.useState({row:!0,grid:!1}),[n,r]=Ue.useState("Popular"),[i,a]=Ue.useState("All Time"),o=c=>{r(c.target.value)},s=c=>{a(c.target.value)},l=()=>{e(c=>({row:!c.row,grid:!c.grid}))},u=Jvt();return d.jsx(d.Fragment,{children:d.jsxs(re,{container:!0,spacing:6,children:[d.jsxs(re,{size:12,children:[d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(Vo,{variant:"outlined",className:u.filter,style:{marginRight:8},children:d.jsxs(pa,{value:n,onChange:o,children:[d.jsx($t,{value:"All",children:"All"}),d.jsx($t,{value:"Popular",children:"Popular"}),d.jsx($t,{value:"Interesting",children:"Interesting"}),d.jsx($t,{value:"Latest",children:"Latest"})]})}),d.jsx(Vo,{variant:"outlined",className:u.filter,children:d.jsxs(pa,{value:i,onChange:s,children:[d.jsx($t,{value:"All Time",children:"All Time"}),d.jsx($t,{value:"Last 24h",children:"Last 24h"}),d.jsx($t,{value:"Last Month",children:"Last Month"}),d.jsx($t,{value:"Last Year",children:"Last Year"}),d.jsx($t,{value:"Latest",children:"Latest"})]})}),d.jsx(ce,{style:{display:"inline-flex",marginLeft:"auto"},children:d.jsxs(wRe,{color:"primary",size:"large","aria-label":"large contained secondary button group",children:[d.jsx(gt,{select:t.row?1:0,onClick:()=>l(),className:u.adjustRightBorderRadius,children:d.jsx(S5e,{})}),d.jsx(gt,{select:t.grid?1:0,onClick:()=>l(),className:u.adjustLeftBorderRadius,children:d.jsx(qoe,{})})]})})]}),d.jsx(ce,{my:2,children:d.jsx(oe,{variant:"subtitle2",children:"About 94 700 000 (0.39 sec.) results"})})]}),d.jsxs(re,{container:!0,direction:"row-reverse",size:12,spacing:3,children:[d.jsx(re,{size:{xs:12,md:4},children:d.jsx(ce,{display:"flex",flexDirection:"column",children:d.jsxs(oe,{block:!0,variant:"h5",children:["Results"," ",d.jsx(oe,{weight:"medium",variant:"h5",display:"inline",children:"Filtering"}),d.jsx(ce,{fontSize:".875rem",children:"Listed content is categorized by the following groups:"}),d.jsxs(vf,{component:"nav","aria-label":"main mailbox folders",children:[d.jsxs(oo,{button:!0,children:[d.jsx(Ei,{primary:"Hot Ideas"}),d.jsx(fc,{children:d.jsx(Cl,{label:"34",color:"primary"})})]}),d.jsxs(oo,{button:!0,children:[d.jsx(Ei,{primary:"Latest Pictures"}),d.jsx(fc,{children:d.jsx(Cl,{label:"9",color:"secondary"})})]}),d.jsx(oo,{button:!0,children:d.jsx(Ei,{primary:"Labels of Day"})}),d.jsx(oo,{button:!0,children:d.jsx(Ei,{primary:"Recent Movies"})}),d.jsxs(oo,{button:!0,children:[d.jsx(Ei,{primary:"Globals"}),d.jsx(fc,{children:d.jsx(Cl,{label:"18",color:"warning"})})]})]})]})})}),d.jsxs(re,{container:!0,spacing:3,size:{xs:12,md:8},children:[d.jsx(re,{children:d.jsx(et,{disableWidgetMenu:!0,noBodyPadding:!0,inheritHeight:!0,children:d.jsxs(re,{container:!0,children:[d.jsx(re,{size:{xs:12,md:2},children:d.jsx("img",{src:e0t,alt:"admin templates",style:{width:"100%",height:"100%"}})}),d.jsx(re,{size:{xs:12,md:8},children:d.jsx(ce,{display:"flex",flexDirection:"column",m:3,children:d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",fontSize:"h5.fontSize",children:[d.jsx(vr,{color:"primary",children:"Next generation admin template"})," "]}),d.jsx(ce,{fontSize:".875rem",mb:1,children:"New York, NY 2018"}),d.jsx(ce,{children:"Not just usual Metro. But something bigger. Not just usual widgets, but real widgets. Not just yet another admin template, but next generation admin template."})]})})}),d.jsx(re,{size:{xs:12,md:2},children:d.jsxs(ce,{m:3,display:"flex",height:"calc(100% - 48px)",flexDirection:"column",alignItems:"center",justifyContent:"space-between",children:[d.jsx(oe,{weight:"bold",children:"$9700"}),d.jsx(oe,{variant:"caption",uppercase:!0,children:"per week"}),d.jsx(gt,{variant:"contained",color:"primary",children:"Learn More"})]})})]})})}),d.jsx(re,{children:d.jsx(et,{disableWidgetMenu:!0,noBodyPadding:!0,inheritHeight:!0,children:d.jsxs(re,{container:!0,children:[d.jsx(re,{size:{xs:12,md:2},children:d.jsx("img",{src:t0t,alt:"admin templates",style:{width:"100%",height:"100%"}})}),d.jsx(re,{size:{xs:12,md:8},children:d.jsx(ce,{display:"flex",flexDirection:"column",m:3,children:d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",fontSize:"h5.fontSize",display:"flex",children:[d.jsx(vr,{color:"secondary",children:"Try. Posted by Okendoken"})," ",d.jsx(Cl,{label:"Best Deal!",color:"secondary",style:{marginLeft:"auto"}})]}),d.jsx(ce,{fontSize:".875rem",mb:1,children:"Los Angeles, NY 20188"}),d.jsx(ce,{children:"You will never know exactly how something will go until you try it. You can think three hundred times and still have no precise result."})]})})}),d.jsx(re,{size:{xs:12,md:2},children:d.jsxs(ce,{m:3,display:"flex",height:"calc(100% - 48px)",flexDirection:"column",alignItems:"center",justifyContent:"space-between",children:[d.jsx(oe,{weight:"bold",children:"$10300"}),d.jsx(oe,{variant:"caption",uppercase:!0,children:"per week"}),d.jsx(gt,{variant:"contained",color:"secondary",children:"Learn More"})]})})]})})}),d.jsx(re,{children:d.jsx(et,{disableWidgetMenu:!0,noBodyPadding:!0,inheritHeight:!0,children:d.jsxs(re,{container:!0,children:[d.jsx(re,{size:{xs:12,md:2},children:d.jsx("img",{src:n0t,alt:"admin templates",style:{width:"100%",height:"100%"}})}),d.jsx(re,{size:{xs:12,md:8},children:d.jsx(ce,{display:"flex",flexDirection:"column",m:3,children:d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",fontSize:"h5.fontSize",children:[d.jsx(vr,{color:"warning",children:"Vitaut the Great"})," "]}),d.jsx(ce,{fontSize:".875rem",mb:1,children:"New York, NY 20188"}),d.jsx(ce,{children:"The Great Prince of the Grand Duchy of Lithuania he had stopped the invasion to Europe of Timur (Tamerlan) from Asia heading a big Army of Belarusians, Lithuanians."})]})})}),d.jsx(re,{size:{xs:12,md:2},children:d.jsxs(ce,{m:3,display:"flex",height:"calc(100% - 48px)",flexDirection:"column",alignItems:"center",justifyContent:"space-between",children:[d.jsx(oe,{weight:"bold",children:"$3200"}),d.jsx(oe,{variant:"caption",uppercase:!0,children:"per week"}),d.jsx(gt,{variant:"contained",color:"warning",children:"Learn More"})]})})]})})}),d.jsxs(re,{children:[d.jsx(et,{disableWidgetMenu:!0,noBodyPadding:!0,inheritHeight:!0,children:d.jsxs(re,{container:!0,children:[d.jsx(re,{size:{xs:12,md:2},children:d.jsx("img",{src:r0t,alt:"admin templates",style:{width:"100%",height:"100%"}})}),d.jsx(re,{size:{xs:12,md:8},children:d.jsx(ce,{display:"flex",flexDirection:"column",m:3,children:d.jsxs(oe,{block:!0,children:[d.jsxs(ce,{fontWeight:"fontWeightBold",fontSize:"h5.fontSize",children:[d.jsx(vr,{color:"success",children:"Can I use CSS3 Radial-Gradient?"})," "]}),d.jsx(ce,{fontSize:".875rem",mb:1,children:"Minsk, NY 20188"}),d.jsx(ce,{children:"Yes you can! Further more, you should! It let's you create really beautiful images either for elements or for the entire background."})]})})}),d.jsx(re,{size:{xs:12,md:2},children:d.jsxs(ce,{m:3,display:"flex",height:"calc(100% - 48px)",flexDirection:"column",alignItems:"center",justifyContent:"space-between",children:[d.jsx(oe,{weight:"bold",children:"$2400"}),d.jsx(oe,{variant:"caption",uppercase:!0,children:"per week"}),d.jsx(gt,{variant:"contained",color:"success",children:"Learn More"})]})})]})}),d.jsx(ce,{m:4,display:"flex",alignItems:"center",justifyContent:"center",children:d.jsx(_Ne,{count:10,color:"primary",size:"large"})})]})]})]})]})})}const a0t="/react-material-admin/assets/gallery1-DGSLZf-L.jpg",o0t="/react-material-admin/assets/gallery2-DjgoMOGX.jpg",s0t="/react-material-admin/assets/gallery3-P-rpFEKH.jpg",l0t="/react-material-admin/assets/gallery4-DCtNJ_Qn.jpg",c0t="/react-material-admin/assets/gallery5-DNF09C0h.jpg",u0t="/react-material-admin/assets/gallery6-BNFJM8Sz.jpg",d0t="/react-material-admin/assets/gallery7-DiAFQ1Bu.jpg",f0t="/react-material-admin/assets/gallery8-B7RAOBcs.jpg",p0t="/react-material-admin/assets/gallery9-Ca5uFBrN.jpg",h0t="/react-material-admin/assets/gallery10-DI1pvIyM.jpg",g0t="/react-material-admin/assets/gallery11-hZ8j93Gx.jpg",m0t="/react-material-admin/assets/gallery12-Bl3gQrzf.jpg",b0t=[{img:a0t,id:1},{img:o0t,id:2},{img:s0t,id:3},{img:l0t,id:4},{img:c0t,id:5},{img:u0t,id:6},{img:d0t,id:7},{img:f0t,id:8},{img:p0t,id:9},{img:h0t,id:10},{img:g0t,id:11},{img:m0t,id:12}],_0t=()=>d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:6,children:b0t.map(t=>d.jsx(re,{size:{xs:12,md:3},children:d.jsxs(Zc,{children:[d.jsx(Gp,{children:d.jsx(hf,{image:t.img,title:"Gallery",style:{height:200}})}),d.jsxs(Jc,{children:[d.jsx(pn,{"aria-label":"like",children:d.jsx(Vp,{})}),d.jsx(pn,{"aria-label":"comments",children:d.jsx(Gg,{})})]})]})},t.id))})}),v0t=Zt(t=>({table:{"& .MuiTableRow-root:nth-child(odd)":{backgroundColor:t.palette.mode==="dark"?"none":"#f3f3f3"}},tableFooter:{backgroundColor:t.palette.mode==="dark"?"none":"#fff !important"},tableWrapper:{marginTop:t.spacing(3),overflowX:"auto",width:"100%"},iconButton:{marginRight:t.spacing(1)}})),y0t="/react-material-admin/assets/flatlogic-fzLmcyc0.jpeg",S0t=[{id:1,item:"Brand-new 27 monitor",desc:"2,560x1,440-pixel (WQHD) resolution supported!",quantity:2,price:700,total:1400},{id:2,item:"Domain: okendoken.com",desc:"6-month registration",quantity:1,price:10.99,total:21.88},{id:3,item:"Atlas Shrugged",desc:"Novel by Ayn Rand, first published in 1957 in the United States",quantity:5,price:35,total:175},{id:4,item:"New Song by Dr. Pre",desc:"Lyrics: praesent blandit augue non sapien ornare imperdiet",quantity:1,price:2,total:2}],x0t=()=>{window.print()},E0t=()=>{const t=v0t();return d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:6,children:d.jsx(re,{size:12,children:d.jsxs(et,{disableWidgetMenu:!0,children:[d.jsxs(ce,{display:"flex",justifyContent:"space-between",mb:3,children:[d.jsx("img",{src:y0t,alt:"Flatlogic",style:{maxHeight:100,borderRadius:10,marginRight:24}}),d.jsxs(ce,{children:[d.jsx(oe,{weight:"bold",display:"inline",children:"#9.45613 /"})," ",d.jsx(oe,{display:"inline",children:"17 May 2014"}),d.jsx(oe,{children:"Some Invoice number description or whatever"})]})]}),d.jsxs(ce,{display:"flex",justifyContent:"space-between",flexWrap:"wrap",children:[d.jsxs(ce,{children:[d.jsx(oe,{variant:"h4",style:{marginBottom:16},children:"Company Information"}),d.jsx(oe,{variant:"h6",children:"Flatlogic LLC"}),d.jsx(oe,{weight:"bold",children:"2 Infinite Loop"}),d.jsx(oe,{children:"Minsk, Belarus 220004"}),d.jsx(oe,{children:"088.253.5345"}),d.jsxs(oe,{children:[d.jsx("abbr",{title:"Work Email",children:"e-mail:"}),d.jsx(vr,{color:"primary",children:" email@example.com"})]}),d.jsxs(oe,{children:[d.jsx("abbr",{title:"Work Phone",children:"phone:"})," (012) 345-678-901"]}),d.jsxs(oe,{children:[d.jsx("abbr",{title:"Work Fax",children:"fax:"})," (012) 678-132-901"]})]}),d.jsxs(ce,{display:"inline-flex",flexDirection:"column",alignItems:"flex-end",children:[d.jsx(oe,{variant:"h4",style:{marginBottom:16},children:"Client Information"}),d.jsx(oe,{variant:"h6",children:"Veronica Niasvizhskaja"}),d.jsxs(oe,{display:"inline",weight:"bold",block:!0,children:["Consultant",d.jsxs(oe,{display:"inline",children:[" ","at ",d.jsx(vr,{color:"primary",children:"Allspana"})]})]}),d.jsxs(oe,{children:[d.jsx("abbr",{title:"Work Email",children:"e-mail:"})," ",d.jsx(vr,{color:"primary",children:" maryna@allspana.by"})]}),d.jsxs(oe,{children:[d.jsx("abbr",{title:"Work Phone",children:"phone:"})," (012) 345-678-901"]}),d.jsxs(oe,{children:[d.jsx("abbr",{title:"Work Fax",children:"fax:"})," (012) 678-132-901"]}),d.jsx(oe,{weight:"bold",children:"Note:"}),d.jsx(oe,{variant:"body2",children:"Some nights I stay up cashing in my bad luck. Some nights I call it a draw"})]}),d.jsx("div",{className:t.tableWrapper,children:d.jsxs(yf,{className:t.table,"aria-label":"simple table",children:[d.jsx(jm,{children:d.jsxs(Pr,{className:t.tableFooter,children:[d.jsx(ct,{children:"#"}),d.jsx(ct,{children:"ITEM"}),d.jsx(ct,{children:"DESCRIPTION"}),d.jsx(ct,{children:"QUANTITY"}),d.jsx(ct,{children:"PRICE PER UNIT"}),d.jsx(ct,{children:"TOTAL"})]})}),d.jsx(Sf,{children:S0t.map(e=>d.jsxs(Pr,{children:[d.jsx(ct,{children:e.id}),d.jsx(ct,{children:e.item}),d.jsx(ct,{children:e.desc}),d.jsx(ct,{children:e.quantity}),d.jsx(ct,{children:e.price}),d.jsx(ct,{children:e.total})]},e.id))})]})}),d.jsxs(ce,{display:"flex",justifyContent:"space-between",width:"100%",mt:3,flexWrap:"wrap",children:[d.jsxs(oe,{block:!0,style:{marginBottom:16},children:[d.jsx(oe,{weight:"bold",display:"inline",children:"Note:"}),"Thank you for your business. Keep in mind, sometimes bad things happen. But it's just sometimes."]}),d.jsxs(ce,{display:"flex",flexDirection:"column",children:[d.jsxs(ce,{display:"flex",justifyContent:"space-between",children:[d.jsx(ce,{mr:2,mb:2,children:"Subtotal"}),d.jsx(ce,{children:"1,598.88"})]}),d.jsxs(ce,{display:"flex",justifyContent:"space-between",children:[d.jsx(ce,{mr:2,mb:2,children:"Tax(10%)"}),d.jsx(ce,{children:"159.89"})]}),d.jsx(oe,{weight:"bold",block:!0,children:d.jsxs(ce,{display:"flex",justifyContent:"space-between",children:[d.jsx(ce,{mr:2,mb:2,children:"Total"}),d.jsx(ce,{children:"1,758.77"})]})})]})]})]}),d.jsxs(ce,{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:3,children:[d.jsxs(oe,{block:!0,style:{marginBottom:16},children:["Marketing Consultant",d.jsx(oe,{weight:"bold",children:"Bob Smith"})," "]}),d.jsxs(ce,{display:"flex",children:[d.jsxs(gt,{variant:"contained",style:{marginRight:8},"aria-label":"Print",onClick:x0t,children:[d.jsx(P5e,{className:t.iconButton}),"Print"]}),d.jsxs(gt,{variant:"contained",color:"success","aria-label":"Proceed",children:[d.jsx(dC,{className:t.iconButton}),"Proceed with Payment"]})]})]})]})})})})};var ZR,En,Mge,Dge,p_,Bg,xne,Pge,kge,AT={},Lge=[],C0t=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function Qp(t,e){for(var n in e)t[n]=e[n];return t}function Bge(t){var e=t.parentNode;e&&e.removeChild(t)}function he(t,e,n){var r,i,a,o={};for(a in e)a=="key"?r=e[a]:a=="ref"?i=e[a]:o[a]=e[a];if(arguments.length>2&&(o.children=arguments.length>3?ZR.call(arguments,2):n),typeof t=="function"&&t.defaultProps!=null)for(a in t.defaultProps)o[a]===void 0&&(o[a]=t.defaultProps[a]);return DC(t,o,r,i,null)}function DC(t,e,n,r,i){var a={type:t,props:e,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Mge};return i==null&&En.vnode!=null&&En.vnode(a),a}function Es(){return{current:null}}function ci(t){return t.children}function w0t(t,e,n,r,i){var a;for(a in n)a==="children"||a==="key"||a in e||RT(t,a,null,n[a],r);for(a in e)i&&typeof e[a]!="function"||a==="children"||a==="key"||a==="value"||a==="checked"||n[a]===e[a]||RT(t,a,e[a],n[a],r)}function Ene(t,e,n){e[0]==="-"?t.setProperty(e,n??""):t[e]=n==null?"":typeof n!="number"||C0t.test(e)?n:n+"px"}function RT(t,e,n,r,i){var a;e:if(e==="style")if(typeof n=="string")t.style.cssText=n;else{if(typeof r=="string"&&(t.style.cssText=r=""),r)for(e in r)n&&e in n||Ene(t.style,e,"");if(n)for(e in n)r&&n[e]===r[e]||Ene(t.style,e,n[e])}else if(e[0]==="o"&&e[1]==="n")a=e!==(e=e.replace(/Capture$/,"")),e=e.toLowerCase()in t?e.toLowerCase().slice(2):e.slice(2),t.l||(t.l={}),t.l[e+a]=n,n?r||t.addEventListener(e,a?wne:Cne,a):t.removeEventListener(e,a?wne:Cne,a);else if(e!=="dangerouslySetInnerHTML"){if(i)e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!=="width"&&e!=="height"&&e!=="href"&&e!=="list"&&e!=="form"&&e!=="tabIndex"&&e!=="download"&&e in t)try{t[e]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&e.indexOf("-")==-1?t.removeAttribute(e):t.setAttribute(e,n))}}function Cne(t){p_=!0;try{return this.l[t.type+!1](En.event?En.event(t):t)}finally{p_=!1}}function wne(t){p_=!0;try{return this.l[t.type+!0](En.event?En.event(t):t)}finally{p_=!1}}function Dl(t,e){this.props=t,this.context=e}function rS(t,e){if(e==null)return t.__?rS(t.__,t.__.__k.indexOf(t)+1):null;for(var n;ee&&Bg.sort(function(l,u){return l.__v.__b-u.__v.__b}));OT.__r=0}function jge(t,e,n,r,i,a,o,s,l,u){var c,f,h,m,b,_,y,x=r&&r.__k||Lge,C=x.length;for(n.__k=[],c=0;c0?DC(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)!=null){if(m.__=n,m.__b=n.__b+1,(h=x[c])===null||h&&m.key==h.key&&m.type===h.type)x[c]=void 0;else for(f=0;f=0;e--)if((n=t.__k[e])&&(r=Hge(n)))return r}return null}function XF(t,e,n,r,i,a,o,s,l){var u,c,f,h,m,b,_,y,x,C,A,R,I,O,N,k=e.type;if(e.constructor!==void 0)return null;n.__h!=null&&(l=n.__h,s=e.__e=n.__e,e.__h=null,a=[s]),(u=En.__b)&&u(e);try{e:if(typeof k=="function"){if(y=e.props,x=(u=k.contextType)&&r[u.__c],C=u?x?x.props.value:u.__:r,n.__c?_=(c=e.__c=n.__c).__=c.__E:("prototype"in k&&k.prototype.render?e.__c=c=new k(y,C):(e.__c=c=new Dl(y,C),c.constructor=k,c.render=R0t),x&&x.sub(c),c.props=y,c.state||(c.state={}),c.context=C,c.__n=r,f=c.__d=!0,c.__h=[],c._sb=[]),c.__s==null&&(c.__s=c.state),k.getDerivedStateFromProps!=null&&(c.__s==c.state&&(c.__s=Qp({},c.__s)),Qp(c.__s,k.getDerivedStateFromProps(y,c.__s))),h=c.props,m=c.state,c.__v=e,f)k.getDerivedStateFromProps==null&&c.componentWillMount!=null&&c.componentWillMount(),c.componentDidMount!=null&&c.__h.push(c.componentDidMount);else{if(k.getDerivedStateFromProps==null&&y!==h&&c.componentWillReceiveProps!=null&&c.componentWillReceiveProps(y,C),!c.__e&&c.shouldComponentUpdate!=null&&c.shouldComponentUpdate(y,c.__s,C)===!1||e.__v===n.__v){for(e.__v!==n.__v&&(c.props=y,c.state=c.__s,c.__d=!1),e.__e=n.__e,e.__k=n.__k,e.__k.forEach(function(D){D&&(D.__=e)}),A=0;A3;)n.pop()();if(n[1]>>1,1),e.i.removeChild(r)}}),iS(he(P0t,{context:e.context},t.__v),e.l)):e.l&&e.componentWillUnmount()}function L0t(t,e){var n=he(k0t,{__v:t,i:e});return n.containerInfo=e,n}(j2.prototype=new Dl).__a=function(t){var e=this,n=Kge(e.__v),r=e.o.get(t);return r[0]++,function(i){var a=function(){e.props.revealOrder?(r.push(i),Bne(e,t,r)):i()};n?n(a):a()}},j2.prototype.render=function(t){this.u=null,this.o=new Map;var e=IT(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var n=e.length;n--;)this.o.set(e[n],this.u=[1,0,this.u]);return t.children},j2.prototype.componentDidUpdate=j2.prototype.componentDidMount=function(){var t=this;this.o.forEach(function(e,n){Bne(t,n,e)})};var B0t=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,F0t=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,j0t=typeof document<"u",U0t=function(t){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(t)};Dl.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(Dl.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Fne=En.event;function z0t(){}function H0t(){return this.cancelBubble}function $0t(){return this.defaultPrevented}En.event=function(t){return Fne&&(t=Fne(t)),t.persist=z0t,t.isPropagationStopped=H0t,t.isDefaultPrevented=$0t,t.nativeEvent=t};var jne={configurable:!0,get:function(){return this.class}},Une=En.vnode;En.vnode=function(t){var e=t.type,n=t.props,r=n;if(typeof e=="string"){var i=e.indexOf("-")===-1;for(var a in r={},n){var o=n[a];j0t&&a==="children"&&e==="noscript"||a==="value"&&"defaultValue"in n&&o==null||(a==="defaultValue"&&"value"in n&&n.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+e)&&!U0t(n.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&F0t.test(a)?a=a.replace(/[A-Z0-9]/g,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),r[a]&&(a="oninputCapture")),r[a]=o)}e=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=IT(n.children).forEach(function(s){s.props.selected=r.value.indexOf(s.props.value)!=-1})),e=="select"&&r.defaultValue!=null&&(r.value=IT(n.children).forEach(function(s){s.props.selected=r.multiple?r.defaultValue.indexOf(s.props.value)!=-1:r.defaultValue==s.props.value})),t.props=r,n.class!=n.className&&(jne.enumerable="className"in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",jne))}t.$$typeof=B0t,Une&&Une(t)};var zne=En.__r;En.__r=function(t){zne&&zne(t),t.__c};const Xge=[],p8=new Map;function JR(t){Xge.push(t),p8.forEach(e=>{Zge(e,t)})}function G0t(t){t.isConnected&&t.getRootNode&&Qge(t.getRootNode())}function Qge(t){let e=p8.get(t);if(!e||!e.isConnected){if(e=t.querySelector("style[data-fullcalendar]"),!e){e=document.createElement("style"),e.setAttribute("data-fullcalendar","");const n=Y0t();n&&(e.nonce=n);const r=t===document?document.head:t,i=t===document?r.querySelector("script,link[rel=stylesheet],link[as=style],style"):r.firstChild;r.insertBefore(e,i)}p8.set(t,e),V0t(e)}}function V0t(t){for(const e of Xge)Zge(t,e)}function Zge(t,e){const{sheet:n}=t,r=n.cssRules.length;e.split("}").forEach((i,a)=>{i=i.trim(),i&&n.insertRule(i+"}",r+a)})}let S6;function Y0t(){return S6===void 0&&(S6=W0t()),S6}function W0t(){const t=document.querySelector('meta[name="csp-nonce"]');if(t&&t.hasAttribute("content"))return t.getAttribute("content");const e=document.querySelector("script[nonce]");return e&&e.nonce||""}typeof document<"u"&&Qge(document);var q0t=':root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:"\\e900"}.fc-icon-chevron-right:before{content:"\\e901"}.fc-icon-chevrons-left:before{content:"\\e902"}.fc-icon-chevrons-right:before{content:"\\e903"}.fc-icon-minus-square:before{content:"\\e904"}.fc-icon-plus-square:before{content:"\\e905"}.fc-icon-x:before{content:"\\e906"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:"";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:"";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}';JR(q0t);class QF{constructor(e){this.drainedOption=e,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}request(e){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),e==null?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),e))}pause(e=""){let{pauseDepths:n}=this;n[e]=(n[e]||0)+1,this.clearTimeout()}resume(e="",n){let{pauseDepths:r}=this;e in r&&(n?delete r[e]:(r[e]-=1,r[e]<=0&&delete r[e]),this.tryDrain())}isPaused(){return Object.keys(this.pauseDepths).length}tryDrain(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}}clear(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}}clearTimeout(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=0)}drained(){this.drainedOption&&this.drainedOption()}}function ZF(t){t.parentNode&&t.parentNode.removeChild(t)}function Ko(t,e){if(t.closest)return t.closest(e);if(!document.documentElement.contains(t))return null;do{if(Jge(t,e))return t;t=t.parentElement||t.parentNode}while(t!==null&&t.nodeType===1);return null}function Jge(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector).call(t,e)}function K0t(t,e){let n=t instanceof HTMLElement?[t]:t,r=[];for(let i=0;i{let r=Ko(n.target,t);r&&e.call(r,n,r)}}function nme(t,e,n,r){let i=Q0t(n,r);return t.addEventListener(e,i),()=>{t.removeEventListener(e,i)}}function Z0t(t,e,n,r){let i;return nme(t,"mouseover",e,(a,o)=>{if(o!==i){i=o,n(a,o);let s=l=>{i=null,r(l,o),o.removeEventListener("mouseleave",s)};o.addEventListener("mouseleave",s)}})}const $ne=["webkitTransitionEnd","otransitionend","oTransitionEnd","msTransitionEnd","transitionend"];function J0t(t,e){let n=r=>{e(r),$ne.forEach(i=>{t.removeEventListener(i,n)})};$ne.forEach(r=>{t.addEventListener(r,n)})}function rme(t){return Object.assign({onClick:t},ime(t))}function ime(t){return{tabIndex:0,onKeyDown(e){(e.key==="Enter"||e.key===" ")&&(t(e),e.preventDefault())}}}let Gne=0;function Vm(){return Gne+=1,String(Gne)}function tO(){document.body.classList.add("fc-not-allowed")}function nO(){document.body.classList.remove("fc-not-allowed")}function eyt(t){t.style.userSelect="none",t.style.webkitUserSelect="none",t.addEventListener("selectstart",eO)}function tyt(t){t.style.userSelect="",t.style.webkitUserSelect="",t.removeEventListener("selectstart",eO)}function nyt(t){t.addEventListener("contextmenu",eO)}function ryt(t){t.removeEventListener("contextmenu",eO)}function iyt(t){let e=[],n=[],r,i;for(typeof t=="string"?n=t.split(/\s*,\s*/):typeof t=="function"?n=[t]:Array.isArray(t)&&(n=t),r=0;rr.replace("$"+a,i||""),t):n}function lyt(t,e){return t-e}function kC(t){return t%1===0}function cyt(t){let e=t.querySelector(".fc-scrollgrid-shrink-frame"),n=t.querySelector(".fc-scrollgrid-shrink-cushion");if(!e)throw new Error("needs fc-scrollgrid-shrink-frame className");if(!n)throw new Error("needs fc-scrollgrid-shrink-cushion className");return t.getBoundingClientRect().width-e.getBoundingClientRect().width+n.getBoundingClientRect().width}const Vne=["years","months","days","milliseconds"],uyt=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function fr(t,e){return typeof t=="string"?dyt(t):typeof t=="object"&&t?Yne(t):typeof t=="number"?Yne({[e||"milliseconds"]:t}):null}function dyt(t){let e=uyt.exec(t);if(e){let n=e[1]?-1:1;return{years:0,months:0,days:n*(e[2]?parseInt(e[2],10):0),milliseconds:n*((e[3]?parseInt(e[3],10):0)*60*60*1e3+(e[4]?parseInt(e[4],10):0)*60*1e3+(e[5]?parseInt(e[5],10):0)*1e3+(e[6]?parseInt(e[6],10):0))}}return null}function Yne(t){let e={years:t.years||t.year||0,months:t.months||t.month||0,days:t.days||t.day||0,milliseconds:(t.hours||t.hour||0)*60*60*1e3+(t.minutes||t.minute||0)*60*1e3+(t.seconds||t.second||0)*1e3+(t.milliseconds||t.millisecond||t.ms||0)},n=t.weeks||t.week;return n&&(e.days+=n*7,e.specifiedWeeks=!0),e}function fyt(t,e){return t.years===e.years&&t.months===e.months&&t.days===e.days&&t.milliseconds===e.milliseconds}function h8(t,e){return{years:t.years+e.years,months:t.months+e.months,days:t.days+e.days,milliseconds:t.milliseconds+e.milliseconds}}function pyt(t,e){return{years:t.years-e.years,months:t.months-e.months,days:t.days-e.days,milliseconds:t.milliseconds-e.milliseconds}}function hyt(t,e){return{years:t.years*e,months:t.months*e,days:t.days*e,milliseconds:t.milliseconds*e}}function gyt(t){return Ub(t)/365}function myt(t){return Ub(t)/30}function Ub(t){return ou(t)/864e5}function ou(t){return t.years*(365*864e5)+t.months*(30*864e5)+t.days*864e5+t.milliseconds}function JF(t,e){let n=null;for(let r=0;r=1?Math.min(i,a):i}function x6(t,e,n,r){let i=Ks([e,0,1+Ryt(e,n,r)]),a=gi(t),o=Math.round(Mh(i,a));return Math.floor(o/7)+1}function Ryt(t,e,n){let r=7+e-n;return-((7+Ks([t,0,r]).getUTCDay()-e)%7)+r-1}function qne(t){return[t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()]}function Kne(t){return new Date(t[0],t[1]||0,t[2]==null?1:t[2],t[3]||0,t[4]||0,t[5]||0)}function Zp(t){return[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()]}function Ks(t){return t.length===1&&(t=t.concat([0])),new Date(Date.UTC(...t))}function ame(t){return!isNaN(t.valueOf())}function Jp(t){return t.getUTCHours()*1e3*60*60+t.getUTCMinutes()*1e3*60+t.getUTCSeconds()*1e3+t.getUTCMilliseconds()}function ome(t,e,n=!1){let r=t.toISOString();return r=r.replace(".000",""),n&&(r=r.replace("T00:00:00Z","")),r.length>10&&(e==null?r=r.replace("Z",""):e!==0&&(r=r.replace("Z",ej(e,!0)))),r}function hx(t){return t.toISOString().replace(/T.*$/,"")}function Oyt(t){return t.toISOString().match(/^\d{4}-\d{2}/)[0]}function Iyt(t){return jb(t.getUTCHours(),2)+":"+jb(t.getUTCMinutes(),2)+":"+jb(t.getUTCSeconds(),2)}function ej(t,e=!1){let n=t<0?"-":"+",r=Math.abs(t),i=Math.floor(r/60),a=Math.round(r%60);return e?`${n+jb(i,2)}:${jb(a,2)}`:`GMT${n}${i}${a?`:${jb(a,2)}`:""}`}function xn(t,e,n){let r,i;return function(...a){if(!r)i=t.apply(this,a);else if(!mh(r,a)){let o=t.apply(this,a);(!e||!e(o,i))&&(i=o)}return r=a,i}}function LC(t,e,n){let r,i;return a=>(r?vu(r,a)||(i=t.call(this,a)):i=t.call(this,a),r=a,i)}const E6={week:3,separator:9,omitZeroMinute:9,meridiem:9,omitCommas:9},MT={timeZoneName:7,era:6,year:5,month:4,day:2,weekday:2,hour:1,minute:1,second:1},U2=/\s*([ap])\.?m\.?/i,Nyt=/,/g,Myt=/\s+/g,Dyt=/\u200e/g,Pyt=/UTC|GMT/;class kyt{constructor(e){let n={},r={},i=9;for(let a in e)a in E6?(r[a]=e[a],E6[a]<9&&(i=Math.min(E6[a],i))):(n[a]=e[a],a in MT&&(i=Math.min(MT[a],i)));this.standardDateProps=n,this.extendedSettings=r,this.smallestUnitNum=i,this.buildFormattingFunc=xn(Xne)}format(e,n){return this.buildFormattingFunc(this.standardDateProps,this.extendedSettings,n)(e)}formatRange(e,n,r,i){let{standardDateProps:a,extendedSettings:o}=this,s=zyt(e.marker,n.marker,r.calendarSystem);if(!s)return this.format(e,r);let l=s;l>1&&(a.year==="numeric"||a.year==="2-digit")&&(a.month==="numeric"||a.month==="2-digit")&&(a.day==="numeric"||a.day==="2-digit")&&(l=1);let u=this.format(e,r),c=this.format(n,r);if(u===c)return u;let f=Hyt(a,l),h=Xne(f,o,r),m=h(e),b=h(n),_=$yt(u,m,c,b),y=o.separator||i||r.defaultSeparator||"";return _?_.before+m+y+b+_.after:u+y+c}getSmallestUnit(){switch(this.smallestUnitNum){case 7:case 6:case 5:return"year";case 4:return"month";case 3:return"week";case 2:return"day";default:return"time"}}}function Xne(t,e,n){let r=Object.keys(t).length;return r===1&&t.timeZoneName==="short"?i=>ej(i.timeZoneOffset):r===0&&e.week?i=>Uyt(n.computeWeekNumber(i.marker),n.weekText,n.weekTextLong,n.locale,e.week):Lyt(t,e,n)}function Lyt(t,e,n){t=Object.assign({},t),e=Object.assign({},e),Byt(t,e),t.timeZone="UTC";let r=new Intl.DateTimeFormat(n.locale.codes,t),i;if(e.omitZeroMinute){let a=Object.assign({},t);delete a.minute,i=new Intl.DateTimeFormat(n.locale.codes,a)}return a=>{let{marker:o}=a,s;i&&!o.getUTCMinutes()?s=i:s=r;let l=s.format(o);return Fyt(l,a,t,e,n)}}function Byt(t,e){t.timeZoneName&&(t.hour||(t.hour="2-digit"),t.minute||(t.minute="2-digit")),t.timeZoneName==="long"&&(t.timeZoneName="short"),e.omitZeroMinute&&(t.second||t.millisecond)&&delete e.omitZeroMinute}function Fyt(t,e,n,r,i){return t=t.replace(Dyt,""),n.timeZoneName==="short"&&(t=jyt(t,i.timeZone==="UTC"||e.timeZoneOffset==null?"UTC":ej(e.timeZoneOffset))),r.omitCommas&&(t=t.replace(Nyt,"").trim()),r.omitZeroMinute&&(t=t.replace(":00","")),r.meridiem===!1?t=t.replace(U2,"").trim():r.meridiem==="narrow"?t=t.replace(U2,(a,o)=>o.toLocaleLowerCase()):r.meridiem==="short"?t=t.replace(U2,(a,o)=>`${o.toLocaleLowerCase()}m`):r.meridiem==="lowercase"&&(t=t.replace(U2,a=>a.toLocaleLowerCase())),t=t.replace(Myt," "),t=t.trim(),t}function jyt(t,e){let n=!1;return t=t.replace(Pyt,()=>(n=!0,e)),n||(t+=` ${e}`),t}function Uyt(t,e,n,r,i){let a=[];return i==="long"?a.push(n):(i==="short"||i==="narrow")&&a.push(e),(i==="long"||i==="short")&&a.push(" "),a.push(r.simpleNumberFormat.format(t)),r.options.direction==="rtl"&&a.reverse(),a.join("")}function zyt(t,e,n){return n.getMarkerYear(t)!==n.getMarkerYear(e)?5:n.getMarkerMonth(t)!==n.getMarkerMonth(e)?4:n.getMarkerDay(t)!==n.getMarkerDay(e)?2:Jp(t)!==Jp(e)?1:0}function Hyt(t,e){let n={};for(let r in t)(!(r in MT)||MT[r]<=e)&&(n[r]=t[r]);return n}function $yt(t,e,n,r){let i=0;for(;i=0;a-=1){let o=t[a][r];if(typeof o=="object"&&o)i.unshift(o);else if(o!==void 0){n[r]=o;break}}i.length&&(n[r]=tj(i))}}for(let r=t.length-1;r>=0;r-=1){let i=t[r];for(let a in i)a in n||(n[a]=i[a])}return n}function Dm(t,e){let n={};for(let r in t)e(t[r],r)&&(n[r]=t[r]);return n}function Ff(t,e){let n={};for(let r in t)n[r]=e(t[r],r);return n}function sme(t){let e={};for(let n of t)e[n]=!0;return e}function nj(t){let e=[];for(let n in t)e.push(t[n]);return e}function vu(t,e){if(t===e)return!0;for(let n in t)if(PT.call(t,n)&&!(n in e))return!1;for(let n in e)if(PT.call(e,n)&&t[n]!==e[n])return!1;return!0}const Wyt=/^on[A-Z]/;function qyt(t,e){const n=Kyt(t,e);for(let r of n)if(!Wyt.test(r))return!1;return!0}function Kyt(t,e){let n=[];for(let r in t)PT.call(t,r)&&(r in e||n.push(r));for(let r in e)PT.call(e,r)&&t[r]!==e[r]&&n.push(r);return n}function w6(t,e,n={}){if(t===e)return!0;for(let r in e)if(!(r in t&&Xyt(t[r],e[r],n[r])))return!1;for(let r in t)if(!(r in e))return!1;return!0}function Xyt(t,e,n){return t===e||n===!0?!0:n?n(t,e):!1}function Qyt(t,e=0,n,r=1){let i=[];n==null&&(n=Object.keys(t).length);for(let a=e;a{this.props.value!==o.value&&a.forEach(s=>{s.context=o.value,s.forceUpdate()})},this.sub=o=>{a.push(o);let s=o.componentWillUnmount;o.componentWillUnmount=()=>{a.splice(a.indexOf(o),1),s&&s.call(o)}}}return i},e}class aSt{constructor(e,n,r,i){this.execFunc=e,this.emitter=n,this.scrollTime=r,this.scrollTimeReset=i,this.handleScrollRequest=a=>{this.queuedRequest=Object.assign({},this.queuedRequest||{},a),this.drain()},n.on("_scrollRequest",this.handleScrollRequest),this.fireInitialScroll()}detach(){this.emitter.off("_scrollRequest",this.handleScrollRequest)}update(e){e&&this.scrollTimeReset?this.fireInitialScroll():this.drain()}fireInitialScroll(){this.handleScrollRequest({time:this.scrollTime})}drain(){this.queuedRequest&&this.execFunc(this.queuedRequest)&&(this.queuedRequest=null)}}const Kf=cme({});function oSt(t,e,n,r,i,a,o,s,l,u,c,f,h,m){return{dateEnv:i,nowManager:a,options:n,pluginHooks:s,emitter:c,dispatch:l,getCurrentData:u,calendarApi:f,viewSpec:t,viewApi:e,dateProfileGenerator:r,theme:o,isRtl:n.direction==="rtl",addResizeHandler(b){c.on("_resize",b)},removeResizeHandler(b){c.off("_resize",b)},createScrollResponder(b){return new aSt(b,c,fr(n.scrollTime),n.scrollTimeReset)},registerInteractiveComponent:h,unregisterInteractiveComponent:m}}class Ym extends Dl{shouldComponentUpdate(e,n){return!w6(this.props,e,this.propEquality)||!w6(this.state,n,this.stateEquality)}safeSetState(e){w6(this.state,Object.assign(Object.assign({},this.state),e),this.stateEquality)||this.setState(e)}}Ym.addPropsEquality=sSt;Ym.addStateEquality=lSt;Ym.contextType=Kf;Ym.prototype.propEquality={};Ym.prototype.stateEquality={};class Br extends Ym{}Br.contextType=Kf;function sSt(t){let e=Object.create(this.prototype.propEquality);Object.assign(e,t),this.prototype.propEquality=e}function lSt(t){let e=Object.create(this.prototype.stateEquality);Object.assign(e,t),this.prototype.stateEquality=e}function wd(t,e){typeof t=="function"?t(e):t&&(t.current=e)}class rj extends Br{constructor(){super(...arguments),this.id=Vm(),this.queuedDomNodes=[],this.currentDomNodes=[],this.handleEl=e=>{const{options:n}=this.context,{generatorName:r}=this.props;(!n.customRenderingReplaces||!m8(r,n))&&this.updateElRef(e)},this.updateElRef=e=>{this.props.elRef&&wd(this.props.elRef,e)}}render(){const{props:e,context:n}=this,{options:r}=n,{customGenerator:i,defaultGenerator:a,renderProps:o}=e,s=ume(e,[],this.handleEl);let l=!1,u,c=[],f;if(i!=null){const h=typeof i=="function"?i(o,he):i;if(h===!0)l=!0;else{const m=h&&typeof h=="object";m&&"html"in h?s.dangerouslySetInnerHTML={__html:h.html}:m&&"domNodes"in h?c=Array.prototype.slice.call(h.domNodes):(m?Dge(h):typeof h!="function")?u=h:f=h}}else l=!m8(e.generatorName,r);return l&&a&&(u=a(o)),this.queuedDomNodes=c,this.currentGeneratorMeta=f,he(e.elTag,s,u)}componentDidMount(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentDidUpdate(){this.applyQueueudDomNodes(),this.triggerCustomRendering(!0)}componentWillUnmount(){this.triggerCustomRendering(!1)}triggerCustomRendering(e){var n;const{props:r,context:i}=this,{handleCustomRendering:a,customRenderingMetaMap:o}=i.options;if(a){const s=(n=this.currentGeneratorMeta)!==null&&n!==void 0?n:o?.[r.generatorName];s&&a(Object.assign(Object.assign({id:this.id,isActive:e,containerEl:this.base,reportNewContainerEl:this.updateElRef,generatorMeta:s},r),{elClasses:(r.elClasses||[]).filter(cSt)}))}}applyQueueudDomNodes(){const{queuedDomNodes:e,currentDomNodes:n}=this,r=this.base;if(!mh(e,n)){n.forEach(ZF);for(let i of e)r.appendChild(i);this.currentDomNodes=e}}}rj.addPropsEquality({elClasses:mh,elStyle:vu,elAttrs:qyt,renderProps:vu});function m8(t,e){var n;return!!(e.handleCustomRendering&&t&&(!((n=e.customRenderingMetaMap)===null||n===void 0)&&n[t]))}function ume(t,e,n){const r=Object.assign(Object.assign({},t.elAttrs),{ref:n});return(t.elClasses||e)&&(r.className=(t.elClasses||[]).concat(e||[]).concat(r.className||[]).filter(Boolean).join(" ")),t.elStyle&&(r.style=t.elStyle),r}function cSt(t){return!!t}const dme=cme(0);class es extends Dl{constructor(){super(...arguments),this.InnerContent=uSt.bind(void 0,this),this.handleEl=e=>{this.el=e,this.props.elRef&&(wd(this.props.elRef,e),e&&this.didMountMisfire&&this.componentDidMount())}}render(){const{props:e}=this,n=dSt(e.classNameGenerator,e.renderProps);if(e.children){const r=ume(e,n,this.handleEl),i=e.children(this.InnerContent,e.renderProps,r);return e.elTag?he(e.elTag,r,i):i}else return he(rj,Object.assign(Object.assign({},e),{elRef:this.handleEl,elTag:e.elTag||"div",elClasses:(e.elClasses||[]).concat(n),renderId:this.context}))}componentDidMount(){var e,n;this.el?(n=(e=this.props).didMount)===null||n===void 0||n.call(e,Object.assign(Object.assign({},this.props.renderProps),{el:this.el})):this.didMountMisfire=!0}componentWillUnmount(){var e,n;(n=(e=this.props).willUnmount)===null||n===void 0||n.call(e,Object.assign(Object.assign({},this.props.renderProps),{el:this.el}))}}es.contextType=dme;function uSt(t,e){const n=t.props;return he(rj,Object.assign({renderProps:n.renderProps,generatorName:n.generatorName,customGenerator:n.customGenerator,defaultGenerator:n.defaultGenerator,renderId:t.context},e))}function dSt(t,e){const n=typeof t=="function"?t(e):t||[];return typeof n=="string"?[n]:n}class aS extends Br{render(){let{props:e,context:n}=this,{options:r}=n,i={view:n.viewApi};return he(es,{elRef:e.elRef,elTag:e.elTag||"div",elAttrs:e.elAttrs,elClasses:[...fme(e.viewSpec),...e.elClasses||[]],elStyle:e.elStyle,renderProps:i,classNameGenerator:r.viewClassNames,generatorName:void 0,didMount:r.viewDidMount,willUnmount:r.viewWillUnmount},()=>e.children)}}function fme(t){return[`fc-${t.type}-view`,"fc-view"]}function fSt(t,e){let n=null,r=null;return t.start&&(n=e.createMarker(t.start)),t.end&&(r=e.createMarker(t.end)),!n&&!r||n&&r&&rr&&n.push({start:r,end:a.start}),a.end>r&&(r=a.end);return re.start)&&(t.start===null||e.end===null||t.start=t.start)&&(t.end===null||e.end!==null&&e.end<=t.end)}function wf(t,e){return(t.start===null||e>=t.start)&&(t.end===null||e=e.end?new Date(e.end.valueOf()-1):t}function pme(t){let e=Math.floor(Mh(t.start,t.end))||1,n=gi(t.start),r=Ba(n,e);return{start:n,end:r}}function aj(t,e=fr(0)){let n=null,r=null;if(t.end){r=gi(t.end);let i=t.end.valueOf()-r.valueOf();i&&i>=ou(e)&&(r=Ba(r,1))}return t.start&&(n=gi(t.start),r&&r<=n&&(r=Ba(n,1))),{start:n,end:r}}function mSt(t){let e=aj(t);return Mh(e.start,e.end)>1}function Tb(t,e,n,r){return r==="year"?fr(n.diffWholeYears(t,e),"year"):r==="month"?fr(n.diffWholeMonths(t,e),"month"):xyt(t,e)}class hme{constructor(e){this.props=e,this.initHiddenDays()}buildPrev(e,n,r){let{dateEnv:i}=this.props,a=i.subtract(i.startOf(n,e.currentRangeUnit),e.dateIncrement);return this.build(a,-1,r)}buildNext(e,n,r){let{dateEnv:i}=this.props,a=i.add(i.startOf(n,e.currentRangeUnit),e.dateIncrement);return this.build(a,1,r)}build(e,n,r=!0){let{props:i}=this,a,o,s,l,u,c;return a=this.buildValidRange(),a=this.trimHiddenDays(a),r&&(e=gSt(e,a)),o=this.buildCurrentRangeInfo(e,n),s=/^(year|month|week|day)$/.test(o.unit),l=this.buildRenderRange(this.trimHiddenDays(o.range),o.unit,s),l=this.trimHiddenDays(l),u=l,i.showNonCurrentDates||(u=_h(u,o.range)),u=this.adjustActiveRange(u),u=_h(u,a),c=ij(o.range,a),wf(l,e)||(e=l.start),{currentDate:e,validRange:a,currentRange:o.range,currentRangeUnit:o.unit,isRangeAllDay:s,activeRange:u,renderRange:l,slotMinTime:i.slotMinTime,slotMaxTime:i.slotMaxTime,isValid:c,dateIncrement:this.buildDateIncrement(o.duration)}}buildValidRange(){let e=this.props.validRangeInput,n=typeof e=="function"?e.call(this.props.calendarApi,this.props.dateEnv.toDate(this.props.nowManager.getDateMarker())):e;return this.refineRange(n)||{start:null,end:null}}buildCurrentRangeInfo(e,n){let{props:r}=this,i=null,a=null,o=null,s;return r.duration?(i=r.duration,a=r.durationUnit,o=this.buildRangeFromDuration(e,n,i,a)):(s=this.props.dayCount)?(a="day",o=this.buildRangeFromDayCount(e,n,s)):(o=this.buildCustomVisibleRange(e))?a=r.dateEnv.greatestWholeUnit(o.start,o.end).unit:(i=this.getFallbackDuration(),a=g8(i).unit,o=this.buildRangeFromDuration(e,n,i,a)),{duration:i,unit:a,range:o}}getFallbackDuration(){return fr({day:1})}adjustActiveRange(e){let{dateEnv:n,usesMinMaxTime:r,slotMinTime:i,slotMaxTime:a}=this.props,{start:o,end:s}=e;return r&&(Ub(i)<0&&(o=gi(o),o=n.add(o,i)),Ub(a)>1&&(s=gi(s),s=Ba(s,-1),s=n.add(s,a))),{start:o,end:s}}buildRangeFromDuration(e,n,r,i){let{dateEnv:a,dateAlignment:o}=this.props,s,l,u;if(!o){let{dateIncrement:f}=this.props;f&&ou(f)!o[l.defId].recurringDef);for(let l in o){let u=o[l];if(u.recurringDef){let{duration:c}=u.recurringDef;c||(c=u.allDay?a.defaultAllDayEventDuration:a.defaultTimedEventDuration);let f=_St(u,c,e,r,i.recurringTypes);for(let h of f){let m=aO(l,{start:h,end:r.add(h,c)});s[m.instanceId]=m}}}return{defs:o,instances:s}}function _St(t,e,n,r,i){let o=i[t.recurringDef.typeId].expand(t.recurringDef.typeData,{start:r.subtract(n.start,e),end:n.end},r);return t.allDay&&(o=o.map(gi)),o}const BC={id:String,groupId:String,title:String,url:String,interactive:Boolean},gme={start:He,end:He,date:He,allDay:Boolean},vSt=Object.assign(Object.assign(Object.assign({},BC),gme),{extendedProps:He});function mme(t,e,n,r,i=sj(n),a,o){let{refined:s,extra:l}=oj(t,n,i),u=SSt(e,n),c=bSt(s,u,n.dateEnv,n.pluginHooks.recurringTypes);if(c){let h=LT(s,l,e?e.sourceId:"",c.allDay,!!c.duration,n,a);return h.recurringDef={typeId:c.typeId,typeData:c.typeData,duration:c.duration},{def:h,instance:null}}let f=ySt(s,u,n,r);if(f){let h=LT(s,l,e?e.sourceId:"",f.allDay,f.hasEnd,n,a),m=aO(h.defId,f.range,f.forcedStartTzo,f.forcedEndTzo);return o&&h.publicId&&o[h.publicId]&&(m.instanceId=o[h.publicId]),{def:h,instance:m}}return null}function oj(t,e,n=sj(e)){return rO(t,n)}function sj(t){return Object.assign(Object.assign(Object.assign({},BT),vSt),t.pluginHooks.eventRefiners)}function LT(t,e,n,r,i,a,o){let s={title:t.title||"",groupId:t.groupId||"",publicId:t.id||"",url:t.url||"",recurringDef:null,defId:(o&&t.id?o[t.id]:"")||Vm(),sourceId:n,allDay:r,hasEnd:i,interactive:t.interactive,ui:FT(t,a),extendedProps:Object.assign(Object.assign({},t.extendedProps||{}),e)};for(let l of a.pluginHooks.eventDefMemberAdders)Object.assign(s,l(t));return Object.freeze(s.ui.classNames),Object.freeze(s.extendedProps),s}function ySt(t,e,n,r){let{allDay:i}=t,a,o=null,s=!1,l,u=null,c=t.start!=null?t.start:t.date;if(a=n.dateEnv.createMarkerMeta(c),a)o=a.marker;else if(!r)return null;return t.end!=null&&(l=n.dateEnv.createMarkerMeta(t.end)),i==null&&(e!=null?i=e:i=(!a||a.isTimeUnspecified)&&(!l||l.isTimeUnspecified)),i&&o&&(o=gi(o)),l&&(u=l.marker,i&&(u=gi(u)),o&&u<=o&&(u=null)),u?s=!0:r||(s=n.options.forceEventDuration||!1,u=n.dateEnv.add(o,i?n.options.defaultAllDayEventDuration:n.options.defaultTimedEventDuration)),{allDay:i,hasEnd:s,range:{start:o,end:u},forcedStartTzo:a?a.forcedTzo:null,forcedEndTzo:l?l.forcedTzo:null}}function SSt(t,e){let n=null;return t&&(n=t.defaultAllDay),n==null&&(n=e.options.defaultAllDay),n}function oS(t,e,n,r,i,a){let o=Qo(),s=sj(n);for(let l of t){let u=mme(l,e,n,r,s,i,a);u&&sS(u,o)}return o}function sS(t,e=Qo()){return e.defs[t.def.defId]=t.def,t.instance&&(e.instances[t.instance.instanceId]=t.instance),e}function lj(t,e){let n=t.instances[e];if(n){let r=t.defs[n.defId],i=oO(t,a=>xSt(r,a));return i.defs[r.defId]=r,i.instances[n.instanceId]=n,i}return Qo()}function xSt(t,e){return!!(t.groupId&&t.groupId===e.groupId)}function Qo(){return{defs:{},instances:{}}}function cj(t,e){return{defs:Object.assign(Object.assign({},t.defs),e.defs),instances:Object.assign(Object.assign({},t.instances),e.instances)}}function oO(t,e){let n=Dm(t.defs,e),r=Dm(t.instances,i=>n[i.defId]);return{defs:n,instances:r}}function ESt(t,e){let{defs:n,instances:r}=t,i={},a={};for(let o in n)e.defs[o]||(i[o]=n[o]);for(let o in r)!e.instances[o]&&i[r[o].defId]&&(a[o]=r[o]);return{defs:i,instances:a}}function CSt(t,e){return Array.isArray(t)?oS(t,null,e,!0):typeof t=="object"&&t?oS([t],null,e,!0):t!=null?String(t):null}function nre(t){return Array.isArray(t)?t:typeof t=="string"?t.split(/\s+/):[]}const BT={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:He,overlap:He,allow:He,className:nre,classNames:nre,color:String,backgroundColor:String,borderColor:String,textColor:String},wSt={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:"",borderColor:"",textColor:"",classNames:[]};function FT(t,e){let n=CSt(t.constraint,e);return{display:t.display||null,startEditable:t.startEditable!=null?t.startEditable:t.editable,durationEditable:t.durationEditable!=null?t.durationEditable:t.editable,constraints:n!=null?[n]:[],overlap:t.overlap!=null?t.overlap:null,allows:t.allow!=null?[t.allow]:[],backgroundColor:t.backgroundColor||t.color||"",borderColor:t.borderColor||t.color||"",textColor:t.textColor||"",classNames:(t.className||[]).concat(t.classNames||[])}}function bme(t){return t.reduce(TSt,wSt)}function TSt(t,e){return{display:e.display!=null?e.display:t.display,startEditable:e.startEditable!=null?e.startEditable:t.startEditable,durationEditable:e.durationEditable!=null?e.durationEditable:t.durationEditable,constraints:t.constraints.concat(e.constraints),overlap:typeof e.overlap=="boolean"?e.overlap:t.overlap,allows:t.allows.concat(e.allows),backgroundColor:e.backgroundColor||t.backgroundColor,borderColor:e.borderColor||t.borderColor,textColor:e.textColor||t.textColor,classNames:t.classNames.concat(e.classNames)}}const ASt={id:String,defaultAllDay:Boolean,url:String,format:String,events:He,eventDataTransform:He,success:He,failure:He};function _me(t,e,n=vme(e)){let r;if(typeof t=="string"?r={url:t}:typeof t=="function"||Array.isArray(t)?r={events:t}:typeof t=="object"&&t&&(r=t),r){let{refined:i,extra:a}=rO(r,n),o=RSt(i,e);if(o)return{_raw:t,isFetching:!1,latestFetchId:"",fetchRange:null,defaultAllDay:i.defaultAllDay,eventDataTransform:i.eventDataTransform,success:i.success,failure:i.failure,publicId:i.id||"",sourceId:Vm(),sourceDefId:o.sourceDefId,meta:o.meta,ui:FT(i,e),extendedProps:a}}return null}function vme(t){return Object.assign(Object.assign(Object.assign({},BT),ASt),t.pluginHooks.eventSourceRefiners)}function RSt(t,e){let n=e.pluginHooks.eventSourceDefs;for(let r=n.length-1;r>=0;r-=1){let a=n[r].parseMeta(t);if(a)return{sourceDefId:r,meta:a}}return null}function OSt(t,e,n,r,i){switch(e.type){case"RECEIVE_EVENTS":return ISt(t,n[e.sourceId],e.fetchId,e.fetchRange,e.rawEvents,i);case"RESET_RAW_EVENTS":return NSt(t,n[e.sourceId],e.rawEvents,r.activeRange,i);case"ADD_EVENTS":return MSt(t,e.eventStore,r?r.activeRange:null,i);case"RESET_EVENTS":return e.eventStore;case"MERGE_EVENTS":return cj(t,e.eventStore);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return r?Pm(t,r.activeRange,i):t;case"REMOVE_EVENTS":return ESt(t,e.eventStore);case"REMOVE_EVENT_SOURCE":return Sme(t,e.sourceId);case"REMOVE_ALL_EVENT_SOURCES":return oO(t,a=>!a.sourceId);case"REMOVE_ALL_EVENTS":return Qo();default:return t}}function ISt(t,e,n,r,i,a){if(e&&n===e.latestFetchId){let o=oS(yme(i,e,a),e,a);return r&&(o=Pm(o,r,a)),cj(Sme(t,e.sourceId),o)}return t}function NSt(t,e,n,r,i){const{defIdMap:a,instanceIdMap:o}=PSt(t);let s=oS(yme(n,e,i),e,i,!1,a,o);return Pm(s,r,i)}function yme(t,e,n){let r=n.options.eventDataTransform,i=e?e.eventDataTransform:null;return i&&(t=rre(t,i)),r&&(t=rre(t,r)),t}function rre(t,e){let n;if(!e)n=t;else{n=[];for(let r of t){let i=e(r);i?n.push(i):i==null&&n.push(r)}}return n}function MSt(t,e,n,r){return n&&(e=Pm(e,n,r)),cj(t,e)}function ire(t,e,n){let{defs:r}=t,i=Ff(t.instances,a=>r[a.defId].allDay?a:Object.assign(Object.assign({},a),{range:{start:n.createMarker(e.toDate(a.range.start,a.forcedStartTzo)),end:n.createMarker(e.toDate(a.range.end,a.forcedEndTzo))},forcedStartTzo:n.canComputeOffset?null:a.forcedStartTzo,forcedEndTzo:n.canComputeOffset?null:a.forcedEndTzo}));return{defs:r,instances:i}}function Sme(t,e){return oO(t,n=>n.sourceId!==e)}function DSt(t,e){return{defs:t.defs,instances:Dm(t.instances,n=>!e[n.instanceId])}}function PSt(t){const{defs:e,instances:n}=t,r={},i={};for(let a in e){const o=e[a],{publicId:s}=o;s&&(r[s]=a)}for(let a in n){const o=n[a],s=e[o.defId],{publicId:l}=s;l&&(i[l]=a)}return{defIdMap:r,instanceIdMap:i}}class sO{constructor(){this.handlers={},this.thisContext=null}setThisContext(e){this.thisContext=e}setOptions(e){this.options=e}on(e,n){kSt(this.handlers,e,n)}off(e,n){LSt(this.handlers,e,n)}trigger(e,...n){let r=this.handlers[e]||[],i=this.options&&this.options[e],a=[].concat(i||[],r);for(let o of a)o.apply(this.thisContext,n)}hasHandlers(e){return!!(this.handlers[e]&&this.handlers[e].length||this.options&&this.options[e])}}function kSt(t,e,n){(t[e]||(t[e]=[])).push(n)}function LSt(t,e,n){n?t[e]&&(t[e]=t[e].filter(r=>r!==n)):delete t[e]}const BSt={startTime:"09:00",endTime:"17:00",daysOfWeek:[1,2,3,4,5],display:"inverse-background",classNames:"fc-non-business",groupId:"_businessHours"};function FSt(t,e){return oS(jSt(t),null,e)}function jSt(t){let e;return t===!0?e=[{}]:Array.isArray(t)?e=t.filter(n=>n.daysOfWeek):typeof t=="object"&&t?e=[t]:e=[],e=e.map(n=>Object.assign(Object.assign({},BSt),n)),e}function xme(t,e,n){n.emitter.trigger("select",Object.assign(Object.assign({},uj(t,n)),{jsEvent:e?e.origEvent:null,view:n.viewApi||n.calendarApi.view}))}function USt(t,e){e.emitter.trigger("unselect",{jsEvent:t?t.origEvent:null,view:e.viewApi||e.calendarApi.view})}function uj(t,e){let n={};for(let r of e.pluginHooks.dateSpanTransforms)Object.assign(n,r(t,e));return Object.assign(n,ext(t,e.dateEnv)),n}function b8(t,e,n){let{dateEnv:r,options:i}=n,a=e;return t?(a=gi(a),a=r.add(a,i.defaultAllDayEventDuration)):a=r.add(a,i.defaultTimedEventDuration),a}function dj(t,e,n,r){let i=jT(t.defs,e),a=Qo();for(let o in t.defs){let s=t.defs[o];a.defs[o]=zSt(s,i[o],n,r)}for(let o in t.instances){let s=t.instances[o],l=a.defs[s.defId];a.instances[o]=HSt(s,l,i[s.defId],n,r)}return a}function zSt(t,e,n,r){let i=n.standardProps||{};i.hasEnd==null&&e.durationEditable&&(n.startDelta||n.endDelta)&&(i.hasEnd=!0);let a=Object.assign(Object.assign(Object.assign({},t),i),{ui:Object.assign(Object.assign({},t.ui),i.ui)});n.extendedProps&&(a.extendedProps=Object.assign(Object.assign({},a.extendedProps),n.extendedProps));for(let o of r.pluginHooks.eventDefMutationAppliers)o(a,n,r);return!a.hasEnd&&r.options.forceEventDuration&&(a.hasEnd=!0),a}function HSt(t,e,n,r,i){let{dateEnv:a}=i,o=r.standardProps&&r.standardProps.allDay===!0,s=r.standardProps&&r.standardProps.hasEnd===!1,l=Object.assign({},t);return o&&(l.range=pme(l.range)),r.datesDelta&&n.startEditable&&(l.range={start:a.add(l.range.start,r.datesDelta),end:a.add(l.range.end,r.datesDelta)}),r.startDelta&&n.durationEditable&&(l.range={start:a.add(l.range.start,r.startDelta),end:l.range.end}),r.endDelta&&n.durationEditable&&(l.range={start:l.range.start,end:a.add(l.range.end,r.endDelta)}),s&&(l.range={start:l.range.start,end:b8(e.allDay,l.range.start,i)}),e.allDay&&(l.range={start:gi(l.range.start),end:gi(l.range.end)}),l.range.endCme(n,e))}function Cme(t,e){let n=[];return e[""]&&n.push(e[""]),e[t.defId]&&n.push(e[t.defId]),n.push(t.ui),bme(n)}function fj(t,e){let n=t.map(GSt);return n.sort((r,i)=>ayt(r,i,e)),n.map(r=>r._seg)}function GSt(t){let{eventRange:e}=t,n=e.def,r=e.instance?e.instance.range:e.range,i=r.start?r.start.valueOf():0,a=r.end?r.end.valueOf():0;return Object.assign(Object.assign(Object.assign({},n.extendedProps),n),{id:n.publicId,start:i,end:a,duration:a-i,allDay:Number(n.allDay),_seg:t})}function VSt(t,e){let{pluginHooks:n}=e,r=n.isDraggableTransformers,{def:i,ui:a}=t.eventRange,o=a.startEditable;for(let s of r)o=s(o,i,a,e);return o}function YSt(t,e){return t.isStart&&t.eventRange.ui.durationEditable&&e.options.eventResizableFromStart}function WSt(t,e){return t.isEnd&&t.eventRange.ui.durationEditable}function dy(t,e,n,r,i,a,o){let{dateEnv:s,options:l}=n,{displayEventTime:u,displayEventEnd:c}=l,f=t.eventRange.def,h=t.eventRange.instance;u==null&&(u=r!==!1),c==null&&(c=i!==!1);let m=h.range.start,b=h.range.end,_=a||t.start||t.eventRange.range.start,y=o||t.end||t.eventRange.range.end,x=gi(m).valueOf()===gi(_).valueOf(),C=gi(bh(b,-1)).valueOf()===gi(bh(y,-1)).valueOf();return u&&!f.allDay&&(x||C)?(_=x?m:_,y=C?b:y,c&&f.hasEnd?s.formatRange(_,y,e,{forcedStartTzo:a?null:h.forcedStartTzo,forcedEndTzo:o?null:h.forcedEndTzo}):s.format(_,e,{forcedTzo:a?null:h.forcedStartTzo})):""}function Tf(t,e,n){let r=t.eventRange.range;return{isPast:r.end<=(n||e.start),isFuture:r.start>=(n||e.end),isToday:e&&wf(e,r.start)}}function qSt(t){let e=["fc-event"];return t.isMirror&&e.push("fc-event-mirror"),t.isDraggable&&e.push("fc-event-draggable"),(t.isStartResizable||t.isEndResizable)&&e.push("fc-event-resizable"),t.isDragging&&e.push("fc-event-dragging"),t.isResizing&&e.push("fc-event-resizing"),t.isSelected&&e.push("fc-event-selected"),t.isStart&&e.push("fc-event-start"),t.isEnd&&e.push("fc-event-end"),t.isPast&&e.push("fc-event-past"),t.isToday&&e.push("fc-event-today"),t.isFuture&&e.push("fc-event-future"),e}function wme(t){return t.instance?t.instance.instanceId:`${t.def.defId}:${t.range.start.toISOString()}`}function pj(t,e){let{def:n,instance:r}=t.eventRange,{url:i}=n;if(i)return{href:i};let{emitter:a,options:o}=e,{eventInteractive:s}=o;return s==null&&(s=n.interactive,s==null&&(s=!!a.hasHandlers("eventClick"))),s?ime(l=>{a.trigger("eventClick",{el:l.target,event:new Mi(e,n,r),jsEvent:l,view:e.viewApi})}):{}}const KSt={start:He,end:He,allDay:Boolean};function XSt(t,e,n){let r=QSt(t,e),{range:i}=r;if(!i.start)return null;if(!i.end){if(n==null)return null;i.end=e.add(i.start,n)}return r}function QSt(t,e){let{refined:n,extra:r}=rO(t,KSt),i=n.start?e.createMarkerMeta(n.start):null,a=n.end?e.createMarkerMeta(n.end):null,{allDay:o}=n;return o==null&&(o=i&&i.isTimeUnspecified&&(!a||a.isTimeUnspecified)),Object.assign({range:{start:i?i.marker:null,end:a?a.marker:null},allDay:o},r)}function ZSt(t,e){return hSt(t.range,e.range)&&t.allDay===e.allDay&&JSt(t,e)}function JSt(t,e){for(let n in e)if(n!=="range"&&n!=="allDay"&&t[n]!==e[n])return!1;for(let n in t)if(!(n in e))return!1;return!0}function ext(t,e){return Object.assign(Object.assign({},Ame(t.range,e,t.allDay)),{allDay:t.allDay})}function Tme(t,e,n){return Object.assign(Object.assign({},Ame(t,e,n)),{timeZone:e.timeZone})}function Ame(t,e,n){return{start:e.toDate(t.start),end:e.toDate(t.end),startStr:e.formatIso(t.start,{omitTime:n}),endStr:e.formatIso(t.end,{omitTime:n})}}function txt(t,e,n){let r=oj({editable:!1},n),i=LT(r.refined,r.extra,"",t.allDay,!0,n);return{def:i,ui:Cme(i,e),instance:aO(i.defId,t.range),range:t.range,isStart:!0,isEnd:!0}}function nxt(t,e,n){let r=!1,i=function(s){r||(r=!0,e(s))},a=function(s){r||(r=!0,n(s))},o=t(i,a);o&&typeof o.then=="function"&&o.then(i,a)}class ore extends Error{constructor(e,n){super(e),this.response=n}}function rxt(t,e,n){t=t.toUpperCase();const r={method:t};return t==="GET"?e+=(e.indexOf("?")===-1?"?":"&")+new URLSearchParams(n):(r.body=new URLSearchParams(n),r.headers={"Content-Type":"application/x-www-form-urlencoded"}),fetch(e,r).then(i=>{if(i.ok)return i.json().then(a=>[a,i],()=>{throw new ore("Failure parsing JSON",i)});throw new ore("Request failed",i)})}let T6;function Rme(){return T6==null&&(T6=ixt()),T6}function ixt(){if(typeof document>"u")return!0;let t=document.createElement("div");t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.innerHTML="
",t.querySelector("table").style.height="100px",t.querySelector("div").style.height="100%",document.body.appendChild(t);let n=t.querySelector("div").offsetHeight>0;return document.body.removeChild(t),n}class axt extends Br{constructor(){super(...arguments),this.state={forPrint:!1},this.handleBeforePrint=()=>{kT(()=>{this.setState({forPrint:!0})})},this.handleAfterPrint=()=>{kT(()=>{this.setState({forPrint:!1})})}}render(){let{props:e}=this,{options:n}=e,{forPrint:r}=this.state,i=r||n.height==="auto"||n.contentHeight==="auto",a=!i&&n.height!=null?n.height:"",o=["fc",r?"fc-media-print":"fc-media-screen",`fc-direction-${n.direction}`,e.theme.getClass("root")];return Rme()||o.push("fc-liquid-hack"),e.children(o,a,i,r)}componentDidMount(){let{emitter:e}=this.props;e.on("_beforeprint",this.handleBeforePrint),e.on("_afterprint",this.handleAfterPrint)}componentWillUnmount(){let{emitter:e}=this.props;e.off("_beforeprint",this.handleBeforePrint),e.off("_afterprint",this.handleAfterPrint)}}class Y_{constructor(e){this.component=e.component,this.isHitComboAllowed=e.isHitComboAllowed||null}destroy(){}}function oxt(t,e){return{component:t,el:e.el,useEventCenter:e.useEventCenter!=null?e.useEventCenter:!0,isHitComboAllowed:e.isHitComboAllowed||null}}function hj(t){return{[t.component.uid]:t}}const UT={};class Wm extends Dl{constructor(e,n){super(e,n),this.handleRefresh=()=>{let r=this.computeTiming();r.state.nowDate.valueOf()!==this.state.nowDate.valueOf()&&this.setState(r.state),this.clearTimeout(),this.setTimeout(r.waitMs)},this.handleVisibilityChange=()=>{document.hidden||this.handleRefresh()},this.state=this.computeTiming().state}render(){let{props:e,state:n}=this;return e.children(n.nowDate,n.todayRange)}componentDidMount(){this.setTimeout(),this.context.nowManager.addResetListener(this.handleRefresh),document.addEventListener("visibilitychange",this.handleVisibilityChange)}componentDidUpdate(e){e.unit!==this.props.unit&&(this.clearTimeout(),this.setTimeout())}componentWillUnmount(){this.clearTimeout(),this.context.nowManager.removeResetListener(this.handleRefresh),document.removeEventListener("visibilitychange",this.handleVisibilityChange)}computeTiming(){let{props:e,context:n}=this,r=n.nowManager.getDateMarker(),{nowIndicatorSnap:i}=n.options;i==="auto"&&(i=/year|month|week|day/.test(e.unit)||(e.unitValue||1)===1);let a,o;return i?(a=n.dateEnv.startOf(r,e.unit),o=n.dateEnv.add(a,fr(1,e.unit)).valueOf()-r.valueOf()):(a=r,o=1e3*60),o=Math.min(1e3*60*60*24,o),{state:{nowDate:a,todayRange:sxt(a)},waitMs:o}}setTimeout(e=this.computeTiming().waitMs){this.timeoutId=setTimeout(()=>{const n=this.computeTiming();this.setState(n.state,()=>{this.setTimeout(n.waitMs)})},e)}clearTimeout(){this.timeoutId&&clearTimeout(this.timeoutId)}}Wm.contextType=Kf;function sxt(t){let e=gi(t),n=Ba(e,1);return{start:e,end:n}}class lxt{getCurrentData(){return this.currentDataManager.getCurrentData()}dispatch(e){this.currentDataManager.dispatch(e)}get view(){return this.getCurrentData().viewApi}batchRendering(e){e()}updateSize(){this.trigger("_resize",!0)}setOption(e,n){this.dispatch({type:"SET_OPTION",optionName:e,rawOptionValue:n})}getOption(e){return this.currentDataManager.currentCalendarOptionsInput[e]}getAvailableLocaleCodes(){return Object.keys(this.getCurrentData().availableRawLocales)}on(e,n){let{currentDataManager:r}=this;r.currentCalendarOptionsRefiners[e]?r.emitter.on(e,n):console.warn(`Unknown listener name '${e}'`)}off(e,n){this.currentDataManager.emitter.off(e,n)}trigger(e,...n){this.currentDataManager.emitter.trigger(e,...n)}changeView(e,n){this.batchRendering(()=>{if(this.unselect(),n)if(n.start&&n.end)this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e}),this.dispatch({type:"SET_OPTION",optionName:"visibleRange",rawOptionValue:n});else{let{dateEnv:r}=this.getCurrentData();this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e,dateMarker:r.createMarker(n)})}else this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:e})})}zoomTo(e,n){let r=this.getCurrentData(),i;n=n||"day",i=r.viewSpecs[n]||this.getUnitViewSpec(n),this.unselect(),i?this.dispatch({type:"CHANGE_VIEW_TYPE",viewType:i.type,dateMarker:e}):this.dispatch({type:"CHANGE_DATE",dateMarker:e})}getUnitViewSpec(e){let{viewSpecs:n,toolbarConfig:r}=this.getCurrentData(),i=[].concat(r.header?r.header.viewsWithButtons:[],r.footer?r.footer.viewsWithButtons:[]),a,o;for(let s in n)i.push(s);for(a=0;a{this.dispatch({type:"REMOVE_EVENTS",eventStore:Eme(e)})}})}getEventById(e){let n=this.getCurrentData(),{defs:r,instances:i}=n.eventStore;e=String(e);for(let a in r){let o=r[a];if(o.publicId===e){if(o.recurringDef)return new Mi(n,o,null);for(let s in i){let l=i[s];if(l.defId===o.defId)return new Mi(n,o,l)}}}return null}getEvents(){let e=this.getCurrentData();return um(e.eventStore,e)}removeAllEvents(){this.dispatch({type:"REMOVE_ALL_EVENTS"})}getEventSources(){let e=this.getCurrentData(),n=e.eventSources,r=[];for(let i in n)r.push(new fb(e,n[i]));return r}getEventSourceById(e){let n=this.getCurrentData(),r=n.eventSources;e=String(e);for(let i in r)if(r[i].publicId===e)return new fb(n,r[i]);return null}addEventSource(e){let n=this.getCurrentData();if(e instanceof fb)return n.eventSources[e.internalEventSource.sourceId]||this.dispatch({type:"ADD_EVENT_SOURCES",sources:[e.internalEventSource]}),e;let r=_me(e,n);return r?(this.dispatch({type:"ADD_EVENT_SOURCES",sources:[r]}),new fb(n,r)):null}removeAllEventSources(){this.dispatch({type:"REMOVE_ALL_EVENT_SOURCES"})}refetchEvents(){this.dispatch({type:"FETCH_EVENT_SOURCES",isRefetch:!0})}scrollToTime(e){let n=fr(e);n&&this.trigger("_scrollRequest",{time:n})}}function cxt(t,e){return t.left>=e.left&&t.left=e.top&&t.topthis.eventUiBuilders[f]||xn(hxt));for(let c in n){let f=n[c],h=o[c]||A6,m=this.eventUiBuilders[c];u[c]={businessHours:f.businessHours||e.businessHours,dateSelection:i[c]||null,eventStore:h,eventUiBases:m(e.eventUiBases[""],f.ui,a[c]),eventSelection:h.instances[e.eventSelection]?e.eventSelection:"",eventDrag:s[c]||null,eventResize:l[c]||null}}return u}_splitDateSpan(e){let n={};if(e){let r=this.getKeysForDateSpan(e);for(let i of r)n[i]=e}return n}_getKeysForEventDefs(e){return Ff(e.defs,n=>this.getKeysForEventDef(n))}_splitEventStore(e,n){let{defs:r,instances:i}=e,a={};for(let o in r)for(let s of n[o])a[s]||(a[s]=Qo()),a[s].defs[o]=r[o];for(let o in i){let s=i[o];for(let l of n[s.defId])a[l]&&(a[l].instances[o]=s)}return a}_splitIndividualUi(e,n){let r={};for(let i in e)if(i)for(let a of n[i])r[a]||(r[a]={}),r[a][i]=e[i];return r}_splitInteraction(e){let n={};if(e){let r=this._splitEventStore(e.affectedEvents,this._getKeysForEventDefs(e.affectedEvents)),i=this._getKeysForEventDefs(e.mutatedEvents),a=this._splitEventStore(e.mutatedEvents,i),o=s=>{n[s]||(n[s]={affectedEvents:r[s]||A6,mutatedEvents:a[s]||A6,isEvent:e.isEvent})};for(let s in r)o(s);for(let s in a)o(s)}return n}}function hxt(t,e,n){let r=[];t&&r.push(t),e&&r.push(e);let i={"":bme(r)};return n&&Object.assign(i,n),i}function gj(t,e,n,r){return{dow:t.getUTCDay(),isDisabled:!!(r&&(!r.activeRange||!wf(r.activeRange,t))),isOther:!!(r&&!wf(r.currentRange,t)),isToday:!!(e&&wf(e,t)),isPast:!!(n?tn:e&&t>=e.end)}}function lO(t,e){let n=["fc-day",`fc-day-${byt[t.dow]}`];return t.isDisabled?n.push("fc-day-disabled"):(t.isToday&&(n.push("fc-day-today"),n.push(e.getClass("today"))),t.isPast&&n.push("fc-day-past"),t.isFuture&&n.push("fc-day-future"),t.isOther&&n.push("fc-day-other")),n}const gxt=Ii({year:"numeric",month:"long",day:"numeric"}),mxt=Ii({week:"long"});function g_(t,e,n="day",r=!0){const{dateEnv:i,options:a,calendarApi:o}=t;let s=i.format(e,n==="week"?mxt:gxt);if(a.navLinks){let l=i.toDate(e);const u=c=>{let f=n==="day"?a.navLinkDayClick:n==="week"?a.navLinkWeekClick:null;typeof f=="function"?f.call(o,i.toDate(e),c):(typeof f=="string"&&(n=f),o.zoomTo(e,n))};return Object.assign({title:uy(a.navLinkHint,[s,l],s),"data-navlink":""},r?rme(u):{onClick:u})}return{"aria-label":s}}let R6=null;function bxt(){return R6===null&&(R6=_xt()),R6}function _xt(){let t=document.createElement("div");cy(t,{position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}),t.innerHTML="
",document.body.appendChild(t);let n=t.firstChild.getBoundingClientRect().left>t.getBoundingClientRect().left;return ZF(t),n}let O6;function vxt(){return O6||(O6=yxt()),O6}function yxt(){let t=document.createElement("div");t.style.overflow="scroll",t.style.position="absolute",t.style.top="-9999px",t.style.left="-9999px",document.body.appendChild(t);let e=Ime(t);return document.body.removeChild(t),e}function Ime(t){return{x:t.offsetHeight-t.clientHeight,y:t.offsetWidth-t.clientWidth}}function Sxt(t,e=!1){let n=window.getComputedStyle(t),r=parseInt(n.borderLeftWidth,10)||0,i=parseInt(n.borderRightWidth,10)||0,a=parseInt(n.borderTopWidth,10)||0,o=parseInt(n.borderBottomWidth,10)||0,s=Ime(t),l=s.y-r-i,u=s.x-a-o,c={borderLeft:r,borderRight:i,borderTop:a,borderBottom:o,scrollbarBottom:u,scrollbarLeft:0,scrollbarRight:0};return bxt()&&n.direction==="rtl"?c.scrollbarLeft=l:c.scrollbarRight=l,e&&(c.paddingLeft=parseInt(n.paddingLeft,10)||0,c.paddingRight=parseInt(n.paddingRight,10)||0,c.paddingTop=parseInt(n.paddingTop,10)||0,c.paddingBottom=parseInt(n.paddingBottom,10)||0),c}function xxt(t,e=!1,n){let r=mj(t),i=Sxt(t,e),a={left:r.left+i.borderLeft+i.scrollbarLeft,right:r.right-i.borderRight-i.scrollbarRight,top:r.top+i.borderTop,bottom:r.bottom-i.borderBottom-i.scrollbarBottom};return e&&(a.left+=i.paddingLeft,a.right-=i.paddingRight,a.top+=i.paddingTop,a.bottom-=i.paddingBottom),a}function mj(t){let e=t.getBoundingClientRect();return{left:e.left+window.scrollX,top:e.top+window.scrollY,right:e.right+window.scrollX,bottom:e.bottom+window.scrollY}}function Ext(t){let e=Nme(t),n=t.getBoundingClientRect();for(let r of e){let i=Ome(n,r.getBoundingClientRect());if(i)n=i;else return null}return n}function Nme(t){let e=[];for(;t instanceof HTMLElement;){let n=window.getComputedStyle(t);if(n.position==="fixed")break;/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&e.push(t),t=t.parentNode}return e}class m_{constructor(e,n,r,i){this.els=n;let a=this.originClientRect=e.getBoundingClientRect();r&&this.buildElHorizontals(a.left),i&&this.buildElVerticals(a.top)}buildElHorizontals(e){let n=[],r=[];for(let i of this.els){let a=i.getBoundingClientRect();n.push(a.left-e),r.push(a.right-e)}this.lefts=n,this.rights=r}buildElVerticals(e){let n=[],r=[];for(let i of this.els){let a=i.getBoundingClientRect();n.push(a.top-e),r.push(a.bottom-e)}this.tops=n,this.bottoms=r}leftToIndex(e){let{lefts:n,rights:r}=this,i=n.length,a;for(a=0;a=n[a]&&e=n[a]&&e0}canScrollHorizontally(){return this.getMaxScrollLeft()>0}canScrollUp(){return this.getScrollTop()>0}canScrollDown(){return this.getScrollTop()0}canScrollRight(){return this.getScrollLeft()n.thickness||1){this.getEntryThickness=e,this.strictOrder=!1,this.allowReslicing=!1,this.maxCoord=-1,this.maxStackCnt=-1,this.levelCoords=[],this.entriesByLevel=[],this.stackCnts={}}addSegs(e){let n=[];for(let r of e)this.insertEntry(r,n);return n}insertEntry(e,n){let r=this.findInsertion(e);this.isInsertionValid(r,e)?this.insertEntryAt(e,r):this.handleInvalidInsertion(r,e,n)}isInsertionValid(e,n){return(this.maxCoord===-1||e.levelCoord+this.getEntryThickness(n)<=this.maxCoord)&&(this.maxStackCnt===-1||e.stackCnta.end&&this.insertEntry({index:e.index,thickness:e.thickness,span:{start:a.end,end:i.end}},r)}insertEntryAt(e,n){let{entriesByLevel:r,levelCoords:i}=this;n.lateral===-1?(I6(i,n.level,n.levelCoord),I6(r,n.level,[e])):I6(r[n.level],n.lateral,e),this.stackCnts[dm(e)]=n.stackCnt}findInsertion(e){let{levelCoords:n,entriesByLevel:r,strictOrder:i,stackCnts:a}=this,o=n.length,s=0,l=-1,u=-1,c=null,f=0;for(let b=0;b=s+this.getEntryThickness(e))break;let y=r[b],x,C=y8(y,e.span.start,v8),A=C[0]+C[1];for(;(x=y[A])&&x.span.starts&&(s=R,c=x,l=b,u=A),R===s&&(f=Math.max(f,a[dm(x)]+1)),A+=1}}let h=0;if(c)for(h=l+1;hn(t[i-1]))return[i,0];for(;ro)r=a+1;else return[a,1]}return[r,0]}class Rxt{constructor(e,n){this.emitter=new sO}destroy(){}setMirrorIsVisible(e){}setMirrorNeedsRevert(e){}setAutoScrollEnabled(e){}}const cO={},Oxt={startTime:fr,duration:fr,create:Boolean,sourceId:String};function S8(t){let{refined:e,extra:n}=rO(t,Oxt);return{startTime:e.startTime||null,duration:e.duration||null,create:e.create!=null?e.create:!0,sourceId:e.sourceId,leftoverProps:n}}function Ixt(t,e){return!t||e>10?Ii({weekday:"short"}):e>1?Ii({weekday:"short",month:"numeric",day:"numeric",omitCommas:!0}):Ii({weekday:"long"})}const Dme="fc-col-header-cell";function Pme(t){return t.text}class Nxt extends Br{render(){let{dateEnv:e,options:n,theme:r,viewApi:i}=this.context,{props:a}=this,{date:o,dateProfile:s}=a,l=gj(o,a.todayRange,null,s),u=[Dme].concat(lO(l,r)),c=e.format(o,a.dayHeaderFormat),f=!l.isDisabled&&a.colCnt>1?g_(this.context,o):{},h=e.toDate(o);e.namedTimeZoneImpl&&(h=bh(h,36e5));let m=Object.assign(Object.assign(Object.assign({date:h,view:i},a.extraRenderProps),{text:c}),l);return he(es,{elTag:"th",elClasses:u,elAttrs:Object.assign({role:"columnheader",colSpan:a.colSpan,"data-date":l.isDisabled?void 0:hx(o)},a.extraDataAttrs),renderProps:m,generatorName:"dayHeaderContent",customGenerator:n.dayHeaderContent,defaultGenerator:Pme,classNameGenerator:n.dayHeaderClassNames,didMount:n.dayHeaderDidMount,willUnmount:n.dayHeaderWillUnmount},b=>he("div",{className:"fc-scrollgrid-sync-inner"},!l.isDisabled&&he(b,{elTag:"a",elAttrs:f,elClasses:["fc-col-header-cell-cushion",a.isSticky&&"fc-sticky"]})))}}const Mxt=Ii({weekday:"long"});class Dxt extends Br{render(){let{props:e}=this,{dateEnv:n,theme:r,viewApi:i,options:a}=this.context,o=Ba(new Date(2592e5),e.dow),s={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},l=n.format(o,e.dayHeaderFormat),u=Object.assign(Object.assign(Object.assign(Object.assign({date:o},s),{view:i}),e.extraRenderProps),{text:l});return he(es,{elTag:"th",elClasses:[Dme,...lO(s,r),...e.extraClassNames||[]],elAttrs:Object.assign({role:"columnheader",colSpan:e.colSpan},e.extraDataAttrs),renderProps:u,generatorName:"dayHeaderContent",customGenerator:a.dayHeaderContent,defaultGenerator:Pme,classNameGenerator:a.dayHeaderClassNames,didMount:a.dayHeaderDidMount,willUnmount:a.dayHeaderWillUnmount},c=>he("div",{className:"fc-scrollgrid-sync-inner"},he(c,{elTag:"a",elClasses:["fc-col-header-cell-cushion",e.isSticky&&"fc-sticky"],elAttrs:{"aria-label":n.format(o,Mxt)}})))}}class kme extends Br{constructor(){super(...arguments),this.createDayHeaderFormatter=xn(Pxt)}render(){let{context:e}=this,{dates:n,dateProfile:r,datesRepDistinctDays:i,renderIntro:a}=this.props,o=this.createDayHeaderFormatter(e.options.dayHeaderFormat,i,n.length);return he(Wm,{unit:"day"},(s,l)=>he("tr",{role:"row"},a&&a("day"),n.map(u=>i?he(Nxt,{key:u.toISOString(),date:u,dateProfile:r,todayRange:l,colCnt:n.length,dayHeaderFormat:o}):he(Dxt,{key:u.getUTCDay(),dow:u.getUTCDay(),dayHeaderFormat:o}))))}}function Pxt(t,e,n){return t||Ixt(e,n)}class Lme{constructor(e,n){let r=e.start,{end:i}=e,a=[],o=[],s=-1;for(;r=n.length?n[n.length-1]+1:n[r]}}class Bme{constructor(e,n){let{dates:r}=e,i,a,o;if(n){for(a=r[0].getUTCDay(),i=1;ia.groupId===t)):typeof t=="object"&&t?N6(Pm(t,e,i)):[]}function N6(t){let{instances:e}=t,n=[];for(let r in e)n.push(e[r].range);return n}function Uxt(t,e){for(let n of t)if(iO(n,e))return!0;return!1}const G2=/^(visible|hidden)$/;class zme extends Br{constructor(){super(...arguments),this.handleEl=e=>{this.el=e,wd(this.props.elRef,e)}}render(){let{props:e}=this,{liquid:n,liquidIsAbsolute:r}=e,i=n&&r,a=["fc-scroller"];return n&&(r?a.push("fc-scroller-liquid-absolute"):a.push("fc-scroller-liquid")),he("div",{ref:this.handleEl,className:a.join(" "),style:{overflowX:e.overflowX,overflowY:e.overflowY,left:i&&-(e.overcomeLeft||0)||"",right:i&&-(e.overcomeRight||0)||"",bottom:i&&-(e.overcomeBottom||0)||"",marginLeft:!i&&-(e.overcomeLeft||0)||"",marginRight:!i&&-(e.overcomeRight||0)||"",marginBottom:!i&&-(e.overcomeBottom||0)||"",maxHeight:e.maxHeight||""}},e.children)}needsXScrolling(){if(G2.test(this.props.overflowX))return!1;let{el:e}=this,n=this.el.getBoundingClientRect().width-this.getYScrollbarWidth(),{children:r}=e;for(let i=0;in)return!0;return!1}needsYScrolling(){if(G2.test(this.props.overflowY))return!1;let{el:e}=this,n=this.el.getBoundingClientRect().height-this.getXScrollbarWidth(),{children:r}=e;for(let i=0;in)return!0;return!1}getXScrollbarWidth(){return G2.test(this.props.overflowX)?0:this.el.offsetHeight-this.el.clientHeight}getYScrollbarWidth(){return G2.test(this.props.overflowY)?0:this.el.offsetWidth-this.el.clientWidth}}class bf{constructor(e){this.masterCallback=e,this.currentMap={},this.depths={},this.callbackMap={},this.handleValue=(n,r)=>{let{depths:i,currentMap:a}=this,o=!1,s=!1;n!==null?(o=r in a,a[r]=n,i[r]=(i[r]||0)+1,s=!0):(i[r]-=1,i[r]||(delete a[r],delete this.callbackMap[r],o=!0)),this.masterCallback&&(o&&this.masterCallback(null,String(r)),s&&this.masterCallback(n,String(r)))}}createRef(e){let n=this.callbackMap[e];return n||(n=this.callbackMap[e]=r=>{this.handleValue(r,String(e))}),n}collect(e,n,r){return Qyt(this.currentMap,e,n,r)}getAll(){return nj(this.currentMap)}}function zxt(t){let e=K0t(t,".fc-scrollgrid-shrink"),n=0;for(let r of e)n=Math.max(n,cyt(r));return Math.ceil(n)}function Hme(t,e){return t.liquid&&e.liquid}function Hxt(t,e){return e.maxHeight!=null||Hme(t,e)}function $xt(t,e,n,r){let{expandRows:i}=n;return typeof e.content=="function"?e.content(n):he("table",{role:"presentation",className:[e.tableClassName,t.syncRowHeights?"fc-scrollgrid-sync-table":""].join(" "),style:{minWidth:n.tableMinWidth,width:n.clientWidth,height:i?n.clientHeight:""}},n.tableColGroupNode,he(r?"thead":"tbody",{role:"presentation"},typeof e.rowContent=="function"?e.rowContent(n):e.rowContent))}function Gxt(t,e){return mh(t,e,vu)}function Vxt(t,e){let n=[];for(let r of t){let i=r.span||1;for(let a=0;ae,Gxt),this.renderMicroColGroup=xn(Vxt),this.scrollerRefs=new bf,this.scrollerElRefs=new bf(this._handleScrollerEl.bind(this)),this.state={shrinkWidth:null,forceYScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{}},this.handleSizing=()=>{this.safeSetState(Object.assign({shrinkWidth:this.computeShrinkWidth()},this.computeScrollerDims()))}}render(){let{props:e,state:n,context:r}=this,i=e.sections||[],a=this.processCols(e.cols),o=this.renderMicroColGroup(a,n.shrinkWidth),s=qxt(e.liquid,r);e.collapsibleWidth&&s.push("fc-scrollgrid-collapsible");let l=i.length,u=0,c,f=[],h=[],m=[];for(;u{}},i);return he(i?"th":"td",{ref:r.elRef,role:"presentation"},he("div",{className:`fc-scroller-harness${c?" fc-scroller-harness-liquid":""}`},he(zme,{ref:this.scrollerRefs.createRef(h),elRef:this.scrollerElRefs.createRef(h),overflowY:f,overflowX:a.liquid?"hidden":"visible",maxHeight:e.maxHeight,liquid:c,liquidIsAbsolute:!0},m)))}_handleScrollerEl(e,n){let r=Xxt(this.props.sections,n);r&&wd(r.chunk.scrollerElRef,e)}componentDidMount(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)}componentDidUpdate(){this.handleSizing()}componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing)}computeShrinkWidth(){return Wxt(this.props.cols)?zxt(this.scrollerElRefs.getAll()):0}computeScrollerDims(){let e=vxt(),{scrollerRefs:n,scrollerElRefs:r}=this,i=!1,a={},o={};for(let s in n.currentMap){let l=n.currentMap[s];if(l&&l.needsYScrolling()){i=!0;break}}for(let s of this.props.sections){let l=s.key,u=r.currentMap[l];if(u){let c=u.parentNode;a[l]=Math.floor(c.getBoundingClientRect().width-(i?e.y:0)),o[l]=Math.floor(c.getBoundingClientRect().height)}}return{forceYScrollbars:i,scrollerClientWidths:a,scrollerClientHeights:o}}}yj.addStateEquality({scrollerClientWidths:vu,scrollerClientHeights:vu});function Xxt(t,e){for(let n of t)if(n.key===e)return n;return null}class uO extends Br{constructor(){super(...arguments),this.buildPublicEvent=xn((e,n,r)=>new Mi(e,n,r)),this.handleEl=e=>{this.el=e,wd(this.props.elRef,e),e&&are(e,this.props.seg)}}render(){const{props:e,context:n}=this,{options:r}=n,{seg:i}=e,{eventRange:a}=i,{ui:o}=a,s={event:this.buildPublicEvent(n,a.def,a.instance),view:n.viewApi,timeText:e.timeText,textColor:o.textColor,backgroundColor:o.backgroundColor,borderColor:o.borderColor,isDraggable:!e.disableDragging&&VSt(i,n),isStartResizable:!e.disableResizing&&YSt(i,n),isEndResizable:!e.disableResizing&&WSt(i),isMirror:!!(e.isDragging||e.isResizing||e.isDateSelecting),isStart:!!i.isStart,isEnd:!!i.isEnd,isPast:!!e.isPast,isFuture:!!e.isFuture,isToday:!!e.isToday,isSelected:!!e.isSelected,isDragging:!!e.isDragging,isResizing:!!e.isResizing};return he(es,{elRef:this.handleEl,elTag:e.elTag,elAttrs:e.elAttrs,elClasses:[...qSt(s),...i.eventRange.ui.classNames,...e.elClasses||[]],elStyle:e.elStyle,renderProps:s,generatorName:"eventContent",customGenerator:r.eventContent,defaultGenerator:e.defaultGenerator,classNameGenerator:r.eventClassNames,didMount:r.eventDidMount,willUnmount:r.eventWillUnmount},e.children)}componentDidUpdate(e){this.el&&this.props.seg!==e.seg&&are(this.el,this.props.seg)}}class Sj extends Br{render(){let{props:e,context:n}=this,{options:r}=n,{seg:i}=e,{ui:a}=i.eventRange,o=r.eventTimeFormat||e.defaultTimeFormat,s=dy(i,o,n,e.defaultDisplayEventTime,e.defaultDisplayEventEnd);return he(uO,Object.assign({},e,{elTag:"a",elStyle:{borderColor:a.borderColor,backgroundColor:a.backgroundColor},elAttrs:pj(i,n),defaultGenerator:Qxt,timeText:s}),(l,u)=>he(ci,null,he(l,{elTag:"div",elClasses:["fc-event-main"],elStyle:{color:u.textColor}}),!!u.isStartResizable&&he("div",{className:"fc-event-resizer fc-event-resizer-start"}),!!u.isEndResizable&&he("div",{className:"fc-event-resizer fc-event-resizer-end"})))}}Sj.addPropsEquality({seg:vu});function Qxt(t){return he("div",{className:"fc-event-main-frame"},t.timeText&&he("div",{className:"fc-event-time"},t.timeText),he("div",{className:"fc-event-title-container"},he("div",{className:"fc-event-title fc-sticky"},t.event.title||he(ci,null," "))))}const xj=t=>he(Kf.Consumer,null,e=>{let{options:n}=e,r={isAxis:t.isAxis,date:e.dateEnv.toDate(t.date),view:e.viewApi};return he(es,{elRef:t.elRef,elTag:t.elTag||"div",elAttrs:t.elAttrs,elClasses:t.elClasses,elStyle:t.elStyle,renderProps:r,generatorName:"nowIndicatorContent",customGenerator:n.nowIndicatorContent,classNameGenerator:n.nowIndicatorClassNames,didMount:n.nowIndicatorDidMount,willUnmount:n.nowIndicatorWillUnmount},t.children)}),Zxt=Ii({day:"numeric"});class Ej extends Br{constructor(){super(...arguments),this.refineRenderProps=LC(Jxt)}render(){let{props:e,context:n}=this,{options:r}=n,i=this.refineRenderProps({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,isMonthStart:e.isMonthStart||!1,showDayNumber:e.showDayNumber,extraRenderProps:e.extraRenderProps,viewApi:n.viewApi,dateEnv:n.dateEnv,monthStartFormat:r.monthStartFormat});return he(es,{elRef:e.elRef,elTag:e.elTag,elAttrs:Object.assign(Object.assign({},e.elAttrs),i.isDisabled?{}:{"data-date":hx(e.date)}),elClasses:[...lO(i,n.theme),...e.elClasses||[]],elStyle:e.elStyle,renderProps:i,generatorName:"dayCellContent",customGenerator:r.dayCellContent,defaultGenerator:e.defaultGenerator,classNameGenerator:i.isDisabled?void 0:r.dayCellClassNames,didMount:r.dayCellDidMount,willUnmount:r.dayCellWillUnmount},e.children)}}function Cj(t){return!!(t.dayCellContent||m8("dayCellContent",t))}function Jxt(t){let{date:e,dateEnv:n,dateProfile:r,isMonthStart:i}=t,a=gj(e,t.todayRange,null,r),o=t.showDayNumber?n.format(e,i?t.monthStartFormat:Zxt):"";return Object.assign(Object.assign(Object.assign({date:n.toDate(e),view:t.viewApi},a),{isMonthStart:i,dayNumberText:o}),t.extraRenderProps)}class Gme extends Br{render(){let{props:e}=this,{seg:n}=e;return he(uO,{elTag:"div",elClasses:["fc-bg-event"],elStyle:{backgroundColor:n.eventRange.ui.backgroundColor},defaultGenerator:eEt,seg:n,timeText:"",isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,disableDragging:!0,disableResizing:!0})}}function eEt(t){let{title:e}=t.event;return e&&he("div",{className:"fc-event-title"},t.event.title)}function Vme(t){return he("div",{className:`fc-${t}`})}const Yme=t=>he(Kf.Consumer,null,e=>{let{dateEnv:n,options:r}=e,{date:i}=t,a=r.weekNumberFormat||t.defaultFormat,o=n.computeWeekNumber(i),s=n.format(i,a),l={num:o,text:s,date:i};return he(es,{elRef:t.elRef,elTag:t.elTag,elAttrs:t.elAttrs,elClasses:t.elClasses,elStyle:t.elStyle,renderProps:l,generatorName:"weekNumberContent",customGenerator:r.weekNumberContent,defaultGenerator:tEt,classNameGenerator:r.weekNumberClassNames,didMount:r.weekNumberDidMount,willUnmount:r.weekNumberWillUnmount},t.children)});function tEt(t){return t.text}const M6=10;class nEt extends Br{constructor(){super(...arguments),this.state={titleId:ih()},this.handleRootEl=e=>{this.rootEl=e,this.props.elRef&&wd(this.props.elRef,e)},this.handleDocumentMouseDown=e=>{const n=tme(e);this.rootEl.contains(n)||this.handleCloseClick()},this.handleDocumentKeyDown=e=>{e.key==="Escape"&&this.handleCloseClick()},this.handleCloseClick=()=>{let{onClose:e}=this.props;e&&e()}}render(){let{theme:e,options:n}=this.context,{props:r,state:i}=this,a=["fc-popover",e.getClass("popover")].concat(r.extraClassNames||[]);return L0t(he("div",Object.assign({},r.extraAttrs,{id:r.id,className:a.join(" "),"aria-labelledby":i.titleId,ref:this.handleRootEl}),he("div",{className:"fc-popover-header "+e.getClass("popoverHeader")},he("span",{className:"fc-popover-title",id:i.titleId},r.title),he("span",{className:"fc-popover-close "+e.getIconClass("close"),title:n.closeHint,onClick:this.handleCloseClick})),he("div",{className:"fc-popover-body "+e.getClass("popoverContent")},r.children)),r.parentEl)}componentDidMount(){document.addEventListener("mousedown",this.handleDocumentMouseDown),document.addEventListener("keydown",this.handleDocumentKeyDown),this.updateSize()}componentWillUnmount(){document.removeEventListener("mousedown",this.handleDocumentMouseDown),document.removeEventListener("keydown",this.handleDocumentKeyDown)}updateSize(){let{isRtl:e}=this.context,{alignmentEl:n,alignGridTop:r}=this.props,{rootEl:i}=this,a=Ext(n);if(a){let o=i.getBoundingClientRect(),s=r?Ko(n,".fc-scrollgrid").getBoundingClientRect().top:a.top,l=e?a.right-o.width:a.left;s=Math.max(s,M6),l=Math.min(l,document.documentElement.clientWidth-M6-o.width),l=Math.max(l,M6);let u=i.offsetParent.getBoundingClientRect();cy(i,{top:s-u.top,left:l-u.left})}}}class rEt extends Au{constructor(){super(...arguments),this.handleRootEl=e=>{this.rootEl=e,e?this.context.registerInteractiveComponent(this,{el:e,useEventCenter:!1}):this.context.unregisterInteractiveComponent(this)}}render(){let{options:e,dateEnv:n}=this.context,{props:r}=this,{startDate:i,todayRange:a,dateProfile:o}=r,s=n.format(i,e.dayPopoverFormat);return he(Ej,{elRef:this.handleRootEl,date:i,dateProfile:o,todayRange:a},(l,u,c)=>he(nEt,{elRef:c.ref,id:r.id,title:s,extraClassNames:["fc-more-popover"].concat(c.className||[]),extraAttrs:c,parentEl:r.parentEl,alignmentEl:r.alignmentEl,alignGridTop:r.alignGridTop,onClose:r.onClose},Cj(e)&&he(l,{elTag:"div",elClasses:["fc-more-popover-misc"]}),r.children))}queryHit(e,n,r,i){let{rootEl:a,props:o}=this;return e>=0&&e=0&&n{this.linkEl=e,this.props.elRef&&wd(this.props.elRef,e)},this.handleClick=e=>{let{props:n,context:r}=this,{moreLinkClick:i}=r.options,a=sre(n).start;function o(s){let{def:l,instance:u,range:c}=s.eventRange;return{event:new Mi(r,l,u),start:r.dateEnv.toDate(c.start),end:r.dateEnv.toDate(c.end),isStart:s.isStart,isEnd:s.isEnd}}typeof i=="function"&&(i=i({date:a,allDay:!!n.allDayDate,allSegs:n.allSegs.map(o),hiddenSegs:n.hiddenSegs.map(o),jsEvent:e,view:r.viewApi})),!i||i==="popover"?this.setState({isPopoverOpen:!0}):typeof i=="string"&&r.calendarApi.zoomTo(a,i)},this.handlePopoverClose=()=>{this.setState({isPopoverOpen:!1})}}render(){let{props:e,state:n}=this;return he(Kf.Consumer,null,r=>{let{viewApi:i,options:a,calendarApi:o}=r,{moreLinkText:s}=a,{moreCnt:l}=e,u=sre(e),c=typeof s=="function"?s.call(o,l):`+${l} ${s}`,f=uy(a.moreLinkHint,[l],c),h={num:l,shortText:`+${l}`,text:c,view:i};return he(ci,null,!!e.moreCnt&&he(es,{elTag:e.elTag||"a",elRef:this.handleLinkEl,elClasses:[...e.elClasses||[],"fc-more-link"],elStyle:e.elStyle,elAttrs:Object.assign(Object.assign(Object.assign({},e.elAttrs),rme(this.handleClick)),{title:f,"aria-expanded":n.isPopoverOpen,"aria-controls":n.isPopoverOpen?n.popoverId:""}),renderProps:h,generatorName:"moreLinkContent",customGenerator:a.moreLinkContent,defaultGenerator:e.defaultGenerator||iEt,classNameGenerator:a.moreLinkClassNames,didMount:a.moreLinkDidMount,willUnmount:a.moreLinkWillUnmount},e.children),n.isPopoverOpen&&he(rEt,{id:n.popoverId,startDate:u.start,endDate:u.end,dateProfile:e.dateProfile,todayRange:e.todayRange,extraDateSpan:e.extraDateSpan,parentEl:this.parentEl,alignmentEl:e.alignmentElRef?e.alignmentElRef.current:this.linkEl,alignGridTop:e.alignGridTop,forceTimed:e.forceTimed,onClose:this.handlePopoverClose},e.popoverContent()))})}componentDidMount(){this.updateParentEl()}componentDidUpdate(){this.updateParentEl()}updateParentEl(){this.linkEl&&(this.parentEl=Ko(this.linkEl,".fc-view-harness"))}}function iEt(t){return t.text}function sre(t){if(t.allDayDate)return{start:t.allDayDate,end:Ba(t.allDayDate,1)};let{hiddenSegs:e}=t;return{start:qme(e),end:oEt(e)}}function qme(t){return t.reduce(aEt).eventRange.range.start}function aEt(t,e){return t.eventRange.range.starte.eventRange.range.end?t:e}class lEt{constructor(){this.handlers=[]}set(e){this.currentValue=e;for(let n of this.handlers)n(e)}subscribe(e){this.handlers.push(e),this.currentValue!==void 0&&e(this.currentValue)}}class cEt extends lEt{constructor(){super(...arguments),this.map=new Map}handle(e){const{map:n}=this;let r=!1;e.isActive?(n.set(e.id,e),r=!0):n.has(e.id)&&(n.delete(e.id),r=!0),r&&this.set(n)}}const uEt=[],Kme={code:"en",week:{dow:0,doy:4},direction:"ltr",buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day",list:"list"},weekText:"W",weekTextLong:"Week",closeHint:"Close",timeHint:"Time",eventHint:"Event",allDayText:"all-day",moreLinkText:"more",noEventsText:"No events to display"},Xme=Object.assign(Object.assign({},Kme),{buttonHints:{prev:"Previous $0",next:"Next $0",today(t,e){return e==="day"?"Today":`This ${t}`}},viewHint:"$0 view",navLinkHint:"Go to $0",moreLinkHint(t){return`Show ${t} more event${t===1?"":"s"}`}});function dEt(t){let e=t.length>0?t[0].code:"en",n=uEt.concat(t),r={en:Xme};for(let i of n)r[i.code]=i;return{map:r,defaultCode:e}}function Qme(t,e){return typeof t=="object"&&!Array.isArray(t)?Zme(t.code,[t.code],t):fEt(t,e)}function fEt(t,e){let n=[].concat(t||[]),r=pEt(n,e)||Xme;return Zme(t,n,r)}function pEt(t,e){for(let n=0;n0;i-=1){let a=r.slice(0,i).join("-");if(e[a])return e[a]}}return null}function Zme(t,e,n){let r=tj([Kme,n],["buttonText"]);delete r.code;let{week:i}=r;return delete r.week,{codeArg:t,codes:e,week:i,simpleNumberFormat:new Intl.NumberFormat(t),options:r}}function Id(t){return{id:Vm(),name:t.name,premiumReleaseDate:t.premiumReleaseDate?new Date(t.premiumReleaseDate):void 0,deps:t.deps||[],reducers:t.reducers||[],isLoadingFuncs:t.isLoadingFuncs||[],contextInit:[].concat(t.contextInit||[]),eventRefiners:t.eventRefiners||{},eventDefMemberAdders:t.eventDefMemberAdders||[],eventSourceRefiners:t.eventSourceRefiners||{},isDraggableTransformers:t.isDraggableTransformers||[],eventDragMutationMassagers:t.eventDragMutationMassagers||[],eventDefMutationAppliers:t.eventDefMutationAppliers||[],dateSelectionTransformers:t.dateSelectionTransformers||[],datePointTransforms:t.datePointTransforms||[],dateSpanTransforms:t.dateSpanTransforms||[],views:t.views||{},viewPropsTransformers:t.viewPropsTransformers||[],isPropsValid:t.isPropsValid||null,externalDefTransforms:t.externalDefTransforms||[],viewContainerAppends:t.viewContainerAppends||[],eventDropTransformers:t.eventDropTransformers||[],componentInteractions:t.componentInteractions||[],calendarInteractions:t.calendarInteractions||[],themeClasses:t.themeClasses||{},eventSourceDefs:t.eventSourceDefs||[],cmdFormatter:t.cmdFormatter,recurringTypes:t.recurringTypes||[],namedTimeZonedImpl:t.namedTimeZonedImpl,initialView:t.initialView||"",elementDraggingImpl:t.elementDraggingImpl,optionChangeHandlers:t.optionChangeHandlers||{},scrollGridImpl:t.scrollGridImpl||null,listenerRefiners:t.listenerRefiners||{},optionRefiners:t.optionRefiners||{},propSetHandlers:t.propSetHandlers||{}}}function hEt(t,e){let n={},r={premiumReleaseDate:void 0,reducers:[],isLoadingFuncs:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:"",elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,listenerRefiners:{},optionRefiners:{},propSetHandlers:{}};function i(a){for(let o of a){const s=o.name,l=n[s];l===void 0?(n[s]=o.id,i(o.deps),r=mEt(r,o)):l!==o.id&&console.warn(`Duplicate plugin '${s}'`)}}return t&&i(t),i(e),r}function gEt(){let t=[],e=[],n;return(r,i)=>((!n||!mh(r,t)||!mh(i,e))&&(n=hEt(r,i)),t=r,e=i,n)}function mEt(t,e){return{premiumReleaseDate:bEt(t.premiumReleaseDate,e.premiumReleaseDate),reducers:t.reducers.concat(e.reducers),isLoadingFuncs:t.isLoadingFuncs.concat(e.isLoadingFuncs),contextInit:t.contextInit.concat(e.contextInit),eventRefiners:Object.assign(Object.assign({},t.eventRefiners),e.eventRefiners),eventDefMemberAdders:t.eventDefMemberAdders.concat(e.eventDefMemberAdders),eventSourceRefiners:Object.assign(Object.assign({},t.eventSourceRefiners),e.eventSourceRefiners),isDraggableTransformers:t.isDraggableTransformers.concat(e.isDraggableTransformers),eventDragMutationMassagers:t.eventDragMutationMassagers.concat(e.eventDragMutationMassagers),eventDefMutationAppliers:t.eventDefMutationAppliers.concat(e.eventDefMutationAppliers),dateSelectionTransformers:t.dateSelectionTransformers.concat(e.dateSelectionTransformers),datePointTransforms:t.datePointTransforms.concat(e.datePointTransforms),dateSpanTransforms:t.dateSpanTransforms.concat(e.dateSpanTransforms),views:Object.assign(Object.assign({},t.views),e.views),viewPropsTransformers:t.viewPropsTransformers.concat(e.viewPropsTransformers),isPropsValid:e.isPropsValid||t.isPropsValid,externalDefTransforms:t.externalDefTransforms.concat(e.externalDefTransforms),viewContainerAppends:t.viewContainerAppends.concat(e.viewContainerAppends),eventDropTransformers:t.eventDropTransformers.concat(e.eventDropTransformers),calendarInteractions:t.calendarInteractions.concat(e.calendarInteractions),componentInteractions:t.componentInteractions.concat(e.componentInteractions),themeClasses:Object.assign(Object.assign({},t.themeClasses),e.themeClasses),eventSourceDefs:t.eventSourceDefs.concat(e.eventSourceDefs),cmdFormatter:e.cmdFormatter||t.cmdFormatter,recurringTypes:t.recurringTypes.concat(e.recurringTypes),namedTimeZonedImpl:e.namedTimeZonedImpl||t.namedTimeZonedImpl,initialView:t.initialView||e.initialView,elementDraggingImpl:t.elementDraggingImpl||e.elementDraggingImpl,optionChangeHandlers:Object.assign(Object.assign({},t.optionChangeHandlers),e.optionChangeHandlers),scrollGridImpl:e.scrollGridImpl||t.scrollGridImpl,listenerRefiners:Object.assign(Object.assign({},t.listenerRefiners),e.listenerRefiners),optionRefiners:Object.assign(Object.assign({},t.optionRefiners),e.optionRefiners),propSetHandlers:Object.assign(Object.assign({},t.propSetHandlers),e.propSetHandlers)}}function bEt(t,e){return t===void 0?e:e===void 0?t:new Date(Math.max(t.valueOf(),e.valueOf()))}class Dh extends gx{}Dh.prototype.classes={root:"fc-theme-standard",tableCellShaded:"fc-cell-shaded",buttonGroup:"fc-button-group",button:"fc-button fc-button-primary",buttonActive:"fc-button-active"};Dh.prototype.baseIconClass="fc-icon";Dh.prototype.iconClasses={close:"fc-icon-x",prev:"fc-icon-chevron-left",next:"fc-icon-chevron-right",prevYear:"fc-icon-chevrons-left",nextYear:"fc-icon-chevrons-right"};Dh.prototype.rtlIconClasses={prev:"fc-icon-chevron-right",next:"fc-icon-chevron-left",prevYear:"fc-icon-chevrons-right",nextYear:"fc-icon-chevrons-left"};Dh.prototype.iconOverrideOption="buttonIcons";Dh.prototype.iconOverrideCustomButtonOption="icon";Dh.prototype.iconOverridePrefix="fc-icon-";function _Et(t,e){let n={},r;for(r in t)E8(r,n,t,e);for(r in e)E8(r,n,t,e);return n}function E8(t,e,n,r){if(e[t])return e[t];let i=vEt(t,e,n,r);return i&&(e[t]=i),i}function vEt(t,e,n,r){let i=n[t],a=r[t],o=c=>i&&i[c]!==null?i[c]:a&&a[c]!==null?a[c]:null,s=o("component"),l=o("superType"),u=null;if(l){if(l===t)throw new Error("Can't have a custom view type that references itself");u=E8(l,e,n,r)}return!s&&u&&(s=u.component),s?{type:t,component:s,defaults:Object.assign(Object.assign({},u?u.defaults:{}),i?i.rawOptions:{}),overrides:Object.assign(Object.assign({},u?u.overrides:{}),a?a.rawOptions:{})}:null}function lre(t){return Ff(t,yEt)}function yEt(t){let e=typeof t=="function"?{component:t}:t,{component:n}=e;return e.content?n=cre(e):n&&!(n.prototype instanceof Br)&&(n=cre(Object.assign(Object.assign({},e),{content:n}))),{superType:e.type,component:n,rawOptions:e}}function cre(t){return e=>he(Kf.Consumer,null,n=>he(es,{elTag:"div",elClasses:fme(n.viewSpec),renderProps:Object.assign(Object.assign({},e),{nextDayThreshold:n.options.nextDayThreshold}),generatorName:void 0,customGenerator:t.content,classNameGenerator:t.classNames,didMount:t.didMount,willUnmount:t.willUnmount}))}function SEt(t,e,n,r){let i=lre(t),a=lre(e.views),o=_Et(i,a);return Ff(o,s=>xEt(s,a,e,n,r))}function xEt(t,e,n,r,i){let a=t.overrides.duration||t.defaults.duration||r.duration||n.duration,o=null,s="",l="",u={};if(a&&(o=EEt(a),o)){let h=g8(o);s=h.unit,h.value===1&&(l=s,u=e[s]?e[s].rawOptions:{})}let c=h=>{let m=h.buttonText||{},b=t.defaults.buttonTextKey;return b!=null&&m[b]!=null?m[b]:m[t.type]!=null?m[t.type]:m[l]!=null?m[l]:null},f=h=>{let m=h.buttonHints||{},b=t.defaults.buttonTextKey;return b!=null&&m[b]!=null?m[b]:m[t.type]!=null?m[t.type]:m[l]!=null?m[l]:null};return{type:t.type,component:t.component,duration:o,durationUnit:s,singleUnit:l,optionDefaults:t.defaults,optionOverrides:Object.assign(Object.assign({},u),t.overrides),buttonTextOverride:c(r)||c(n)||t.overrides.buttonText,buttonTextDefault:c(i)||t.defaults.buttonText||c(cm)||t.type,buttonTitleOverride:f(r)||f(n)||t.overrides.buttonHint,buttonTitleDefault:f(i)||t.defaults.buttonHint||f(cm)}}let ure={};function EEt(t){let e=JSON.stringify(t),n=ure[e];return n===void 0&&(n=fr(t),ure[e]=n),n}function CEt(t,e){return e.type==="CHANGE_VIEW_TYPE"&&(t=e.viewType),t}function wEt(t,e){return e.type==="CHANGE_DATE"?e.dateMarker:t}function TEt(t,e,n){let r=t.initialDate;return r!=null?e.createMarker(r):n.getDateMarker()}function AEt(t,e){return e.type==="SET_OPTION"?Object.assign(Object.assign({},t),{[e.optionName]:e.rawOptionValue}):t}function REt(t,e,n,r){let i;switch(e.type){case"CHANGE_VIEW_TYPE":return r.build(e.dateMarker||n);case"CHANGE_DATE":return r.build(e.dateMarker);case"PREV":if(i=r.buildPrev(t,n),i.isValid)return i;break;case"NEXT":if(i=r.buildNext(t,n),i.isValid)return i;break}return t}function OEt(t,e,n){let r=e?e.activeRange:null;return e1e({},LEt(t,n),r,n)}function IEt(t,e,n,r){let i=n?n.activeRange:null;switch(e.type){case"ADD_EVENT_SOURCES":return e1e(t,e.sources,i,r);case"REMOVE_EVENT_SOURCE":return MEt(t,e.sourceId);case"PREV":case"NEXT":case"CHANGE_DATE":case"CHANGE_VIEW_TYPE":return n?t1e(t,i,r):t;case"FETCH_EVENT_SOURCES":return wj(t,e.sourceIds?sme(e.sourceIds):n1e(t,r),i,e.isRefetch||!1,r);case"RECEIVE_EVENTS":case"RECEIVE_EVENT_ERROR":return kEt(t,e.sourceId,e.fetchId,e.fetchRange);case"REMOVE_ALL_EVENT_SOURCES":return{};default:return t}}function NEt(t,e,n){let r=e?e.activeRange:null;return wj(t,n1e(t,n),r,!0,n)}function Jme(t){for(let e in t)if(t[e].isFetching)return!0;return!1}function e1e(t,e,n,r){let i={};for(let a of e)i[a.sourceId]=a;return n&&(i=t1e(i,n,r)),Object.assign(Object.assign({},t),i)}function MEt(t,e){return Dm(t,n=>n.sourceId!==e)}function t1e(t,e,n){return wj(t,Dm(t,r=>DEt(r,e,n)),e,!1,n)}function DEt(t,e,n){return r1e(t,n)?!n.options.lazyFetching||!t.fetchRange||t.isFetching||e.startt.fetchRange.end:!t.latestFetchId}function wj(t,e,n,r,i){let a={};for(let o in t){let s=t[o];e[o]?a[o]=PEt(s,n,r,i):a[o]=s}return a}function PEt(t,e,n,r){let{options:i,calendarApi:a}=r,o=r.pluginHooks.eventSourceDefs[t.sourceDefId],s=Vm();return o.fetch({eventSource:t,range:e,isRefetch:n,context:r},l=>{let{rawEvents:u}=l;i.eventSourceSuccess&&(u=i.eventSourceSuccess.call(a,u,l.response)||u),t.success&&(u=t.success.call(a,u,l.response)||u),r.dispatch({type:"RECEIVE_EVENTS",sourceId:t.sourceId,fetchId:s,fetchRange:e,rawEvents:u})},l=>{let u=!1;i.eventSourceFailure&&(i.eventSourceFailure.call(a,l),u=!0),t.failure&&(t.failure(l),u=!0),u||console.warn(l.message,l),r.dispatch({type:"RECEIVE_EVENT_ERROR",sourceId:t.sourceId,fetchId:s,fetchRange:e,error:l})}),Object.assign(Object.assign({},t),{isFetching:!0,latestFetchId:s})}function kEt(t,e,n,r){let i=t[e];return i&&n===i.latestFetchId?Object.assign(Object.assign({},t),{[e]:Object.assign(Object.assign({},i),{isFetching:!1,fetchRange:r})}):t}function n1e(t,e){return Dm(t,n=>r1e(n,e))}function LEt(t,e){let n=vme(e),r=[].concat(t.eventSources||[]),i=[];t.initialEvents&&r.unshift(t.initialEvents),t.events&&r.unshift(t.events);for(let a of r){let o=_me(a,e,n);o&&i.push(o)}return i}function r1e(t,e){return!e.pluginHooks.eventSourceDefs[t.sourceDefId].ignoreRange}function BEt(t,e){switch(e.type){case"UNSELECT_DATES":return null;case"SELECT_DATES":return e.selection;default:return t}}function FEt(t,e){switch(e.type){case"UNSELECT_EVENT":return"";case"SELECT_EVENT":return e.eventInstanceId;default:return t}}function jEt(t,e){let n;switch(e.type){case"UNSET_EVENT_DRAG":return null;case"SET_EVENT_DRAG":return n=e.state,{affectedEvents:n.affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return t}}function UEt(t,e){let n;switch(e.type){case"UNSET_EVENT_RESIZE":return null;case"SET_EVENT_RESIZE":return n=e.state,{affectedEvents:n.affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return t}}function zEt(t,e,n,r,i){let a=t.headerToolbar?dre(t.headerToolbar,t,e,n,r,i):null,o=t.footerToolbar?dre(t.footerToolbar,t,e,n,r,i):null;return{header:a,footer:o}}function dre(t,e,n,r,i,a){let o={},s=[],l=!1;for(let u in t){let c=t[u],f=HEt(c,e,n,r,i,a);o[u]=f.widgets,s.push(...f.viewsWithButtons),l=l||f.hasTitle}return{sectionWidgets:o,viewsWithButtons:s,hasTitle:l}}function HEt(t,e,n,r,i,a){let o=e.direction==="rtl",s=e.customButtons||{},l=n.buttonText||{},u=e.buttonText||{},c=n.buttonHints||{},f=e.buttonHints||{},h=t?t.split(" "):[],m=[],b=!1;return{widgets:h.map(y=>y.split(",").map(x=>{if(x==="title")return b=!0,{buttonName:x};let C,A,R,I,O,N;if(C=s[x])R=k=>{C.click&&C.click.call(k.target,k,k.target)},(I=r.getCustomButtonIconClass(C))||(I=r.getIconClass(x,o))||(O=C.text),N=C.hint||C.text;else if(A=i[x]){m.push(x),R=()=>{a.changeView(x)},(O=A.buttonTextOverride)||(I=r.getIconClass(x,o))||(O=A.buttonTextDefault);let k=A.buttonTextOverride||A.buttonTextDefault;N=uy(A.buttonTitleOverride||A.buttonTitleDefault||e.viewHint,[k,x],k)}else if(a[x])if(R=()=>{a[x]()},(O=l[x])||(I=r.getIconClass(x,o))||(O=u[x]),x==="prevYear"||x==="nextYear"){let k=x==="prevYear"?"prev":"next";N=uy(c[k]||f[k],[u.year||"year","year"],u[x])}else N=k=>uy(c[x]||f[x],[u[k]||k,k],u[x]);return{buttonName:x,buttonClick:R,buttonIcon:I,buttonText:O,buttonHint:N}})),viewsWithButtons:m,hasTitle:b}}class $Et{constructor(e,n,r){this.type=e,this.getCurrentData=n,this.dateEnv=r}get calendar(){return this.getCurrentData().calendarApi}get title(){return this.getCurrentData().viewTitle}get activeStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)}get activeEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)}get currentStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)}get currentEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)}getOption(e){return this.getCurrentData().options[e]}}let GEt={ignoreRange:!0,parseMeta(t){return Array.isArray(t.events)?t.events:null},fetch(t,e){e({rawEvents:t.eventSource.meta})}};const VEt=Id({name:"array-event-source",eventSourceDefs:[GEt]});let YEt={parseMeta(t){return typeof t.events=="function"?t.events:null},fetch(t,e,n){const{dateEnv:r}=t.context,i=t.eventSource.meta;nxt(i.bind(null,Tme(t.range,r)),a=>e({rawEvents:a}),n)}};const WEt=Id({name:"func-event-source",eventSourceDefs:[YEt]}),qEt={method:String,extraParams:He,startParam:String,endParam:String,timeZoneParam:String};let KEt={parseMeta(t){return t.url&&(t.format==="json"||!t.format)?{url:t.url,format:"json",method:(t.method||"GET").toUpperCase(),extraParams:t.extraParams,startParam:t.startParam,endParam:t.endParam,timeZoneParam:t.timeZoneParam}:null},fetch(t,e,n){const{meta:r}=t.eventSource,i=QEt(r,t.range,t.context);rxt(r.method,r.url,i).then(([a,o])=>{e({rawEvents:a,response:o})},n)}};const XEt=Id({name:"json-event-source",eventSourceRefiners:qEt,eventSourceDefs:[KEt]});function QEt(t,e,n){let{dateEnv:r,options:i}=n,a,o,s,l,u={};return a=t.startParam,a==null&&(a=i.startParam),o=t.endParam,o==null&&(o=i.endParam),s=t.timeZoneParam,s==null&&(s=i.timeZoneParam),typeof t.extraParams=="function"?l=t.extraParams():l=t.extraParams||{},Object.assign(u,l),u[a]=r.formatIso(e.start),u[o]=r.formatIso(e.end),r.timeZone!=="local"&&(u[s]=r.timeZone),u}const ZEt={daysOfWeek:He,startTime:fr,endTime:fr,duration:fr,startRecur:He,endRecur:He};let JEt={parse(t,e){if(t.daysOfWeek||t.startTime||t.endTime||t.startRecur||t.endRecur){let n={daysOfWeek:t.daysOfWeek||null,startTime:t.startTime||null,endTime:t.endTime||null,startRecur:t.startRecur?e.createMarker(t.startRecur):null,endRecur:t.endRecur?e.createMarker(t.endRecur):null,dateEnv:e},r;return t.duration&&(r=t.duration),!r&&t.startTime&&t.endTime&&(r=pyt(t.endTime,t.startTime)),{allDayGuess:!t.startTime&&!t.endTime,duration:r,typeData:n}}return null},expand(t,e,n){let r=_h(e,{start:t.startRecur,end:t.endRecur});return r?t2t(t.daysOfWeek,t.startTime,t.dateEnv,n,r):[]}};const e2t=Id({name:"simple-recurring-event",recurringTypes:[JEt],eventRefiners:ZEt});function t2t(t,e,n,r,i){let a=t?sme(t):null,o=gi(i.start),s=i.end,l=[];for(e&&(e.milliseconds<0?s=Ba(s,1):e.milliseconds>=1e3*60*60*24&&(o=Ba(o,-1)));oJme(t.eventSources)],propSetHandlers:{dateProfile:r2t,eventStore:i2t}})];class o2t{constructor(e,n){this.runTaskOption=e,this.drainedOption=n,this.queue=[],this.delayedRunner=new QF(this.drain.bind(this))}request(e,n){this.queue.push(e),this.delayedRunner.request(n)}pause(e){this.delayedRunner.pause(e)}resume(e,n){this.delayedRunner.resume(e,n)}drain(){let{queue:e}=this;for(;e.length;){let n=[],r;for(;r=e.shift();)this.runTask(r),n.push(r);this.drained(n)}}runTask(e){this.runTaskOption&&this.runTaskOption(e)}drained(e){this.drainedOption&&this.drainedOption(e)}}function s2t(t,e,n){let r;return/^(year|month)$/.test(t.currentRangeUnit)?r=t.currentRange:r=t.activeRange,n.formatRange(r.start,r.end,Ii(e.titleFormat||l2t(t)),{isEndExclusive:t.isRangeAllDay,defaultSeparator:e.titleRangeSeparator})}function l2t(t){let{currentRangeUnit:e}=t;if(e==="year")return{year:"numeric"};if(e==="month")return{year:"numeric",month:"long"};let n=NT(t.currentRange.start,t.currentRange.end);return n!==null&&n>1?{year:"numeric",month:"short",day:"numeric"}:{year:"numeric",month:"long",day:"numeric"}}class pre{constructor(){this.resetListeners=new Set}handleInput(e,n){const r=this.dateEnv;if(e!==r&&(typeof n=="function"?this.nowFn=n:r||(this.nowAnchorDate=e.toDate(n?e.createMarker(n):e.createNowMarker()),this.nowAnchorQueried=Date.now()),this.dateEnv=e,r))for(const i of this.resetListeners.values())i()}getDateMarker(){return this.nowAnchorDate?this.dateEnv.timestampToMarker(this.nowAnchorDate.valueOf()+(Date.now()-this.nowAnchorQueried)):this.dateEnv.createMarker(this.nowFn())}addResetListener(e){this.resetListeners.add(e)}removeResetListener(e){this.resetListeners.delete(e)}}class c2t{constructor(e){this.computeCurrentViewData=xn(this._computeCurrentViewData),this.organizeRawLocales=xn(dEt),this.buildLocale=xn(Qme),this.buildPluginHooks=gEt(),this.buildDateEnv=xn(u2t),this.buildTheme=xn(d2t),this.parseToolbars=xn(zEt),this.buildViewSpecs=xn(SEt),this.buildDateProfileGenerator=LC(f2t),this.buildViewApi=xn(p2t),this.buildViewUiProps=LC(m2t),this.buildEventUiBySource=xn(h2t,vu),this.buildEventUiBases=xn(g2t),this.parseContextBusinessHours=LC(b2t),this.buildTitle=xn(s2t),this.nowManager=new pre,this.emitter=new sO,this.actionRunner=new o2t(this._handleAction.bind(this),this.updateData.bind(this)),this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.currentCalendarOptionsRefiners={},this.optionsForRefining=[],this.optionsForHandling=[],this.getCurrentData=()=>this.data,this.dispatch=h=>{this.actionRunner.request(h)},this.props=e,this.actionRunner.pause(),this.nowManager=new pre;let n={},r=this.computeOptionsData(e.optionOverrides,n,e.calendarApi),i=r.calendarOptions.initialView||r.pluginHooks.initialView,a=this.computeCurrentViewData(i,r,e.optionOverrides,n);e.calendarApi.currentDataManager=this,this.emitter.setThisContext(e.calendarApi),this.emitter.setOptions(a.options);let o={nowManager:this.nowManager,dateEnv:r.dateEnv,options:r.calendarOptions,pluginHooks:r.pluginHooks,calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},s=TEt(r.calendarOptions,r.dateEnv,this.nowManager),l=a.dateProfileGenerator.build(s);wf(l.activeRange,s)||(s=l.currentRange.start);for(let h of r.pluginHooks.contextInit)h(o);let u=OEt(r.calendarOptions,l,o),c={dynamicOptionOverrides:n,currentViewType:i,currentDate:s,dateProfile:l,businessHours:this.parseContextBusinessHours(o),eventSources:u,eventUiBases:{},eventStore:Qo(),renderableEventStore:Qo(),dateSelection:null,eventSelection:"",eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(o).selectionConfig},f=Object.assign(Object.assign({},o),c);for(let h of r.pluginHooks.reducers)Object.assign(c,h(null,null,f));D6(c,o)&&this.emitter.trigger("loading",!0),this.state=c,this.updateData(),this.actionRunner.resume()}resetOptions(e,n){let{props:r}=this;n===void 0?r.optionOverrides=e:(r.optionOverrides=Object.assign(Object.assign({},r.optionOverrides||{}),e),this.optionsForRefining.push(...n)),(n===void 0||n.length)&&this.actionRunner.request({type:"NOTHING"})}_handleAction(e){let{props:n,state:r,emitter:i}=this,a=AEt(r.dynamicOptionOverrides,e),o=this.computeOptionsData(n.optionOverrides,a,n.calendarApi),s=CEt(r.currentViewType,e),l=this.computeCurrentViewData(s,o,n.optionOverrides,a);n.calendarApi.currentDataManager=this,i.setThisContext(n.calendarApi),i.setOptions(l.options);let u={nowManager:this.nowManager,dateEnv:o.dateEnv,options:o.calendarOptions,pluginHooks:o.pluginHooks,calendarApi:n.calendarApi,dispatch:this.dispatch,emitter:i,getCurrentData:this.getCurrentData},{currentDate:c,dateProfile:f}=r;this.data&&this.data.dateProfileGenerator!==l.dateProfileGenerator&&(f=l.dateProfileGenerator.build(c)),c=wEt(c,e),f=REt(f,e,c,l.dateProfileGenerator),(e.type==="PREV"||e.type==="NEXT"||!wf(f.currentRange,c))&&(c=f.currentRange.start);let h=IEt(r.eventSources,e,f,u),m=OSt(r.eventStore,e,h,f,u),_=Jme(h)&&!l.options.progressiveEventRendering&&r.renderableEventStore||m,{eventUiSingleBase:y,selectionConfig:x}=this.buildViewUiProps(u),C=this.buildEventUiBySource(h),A=this.buildEventUiBases(_.defs,y,C),R={dynamicOptionOverrides:a,currentViewType:s,currentDate:c,dateProfile:f,eventSources:h,eventStore:m,renderableEventStore:_,selectionConfig:x,eventUiBases:A,businessHours:this.parseContextBusinessHours(u),dateSelection:BEt(r.dateSelection,e),eventSelection:FEt(r.eventSelection,e),eventDrag:jEt(r.eventDrag,e),eventResize:UEt(r.eventResize,e)},I=Object.assign(Object.assign({},u),R);for(let k of o.pluginHooks.reducers)Object.assign(R,k(r,e,I));let O=D6(r,u),N=D6(R,u);!O&&N?i.trigger("loading",!0):O&&!N&&i.trigger("loading",!1),this.state=R,n.onAction&&n.onAction(e)}updateData(){let{props:e,state:n}=this,r=this.data,i=this.computeOptionsData(e.optionOverrides,n.dynamicOptionOverrides,e.calendarApi),a=this.computeCurrentViewData(n.currentViewType,i,e.optionOverrides,n.dynamicOptionOverrides),o=this.data=Object.assign(Object.assign(Object.assign({nowManager:this.nowManager,viewTitle:this.buildTitle(n.dateProfile,a.options,i.dateEnv),calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},i),a),n),s=i.pluginHooks.optionChangeHandlers,l=r&&r.calendarOptions,u=i.calendarOptions;if(l&&l!==u){l.timeZone!==u.timeZone&&(n.eventSources=o.eventSources=NEt(o.eventSources,n.dateProfile,o),n.eventStore=o.eventStore=ire(o.eventStore,r.dateEnv,o.dateEnv),n.renderableEventStore=o.renderableEventStore=ire(o.renderableEventStore,r.dateEnv,o.dateEnv));for(let c in s)(this.optionsForHandling.indexOf(c)!==-1||l[c]!==u[c])&&s[c](u[c],o)}this.optionsForHandling=[],e.onData&&e.onData(o)}computeOptionsData(e,n,r){if(!this.optionsForRefining.length&&e===this.stableOptionOverrides&&n===this.stableDynamicOptionOverrides)return this.stableCalendarOptionsData;let{refinedOptions:i,pluginHooks:a,localeDefaults:o,availableLocaleData:s,extra:l}=this.processRawCalendarOptions(e,n);hre(l);let u=this.buildDateEnv(i.timeZone,i.locale,i.weekNumberCalculation,i.firstDay,i.weekText,a,s,i.defaultRangeSeparator),c=this.buildViewSpecs(a.views,this.stableOptionOverrides,this.stableDynamicOptionOverrides,o),f=this.buildTheme(i,a),h=this.parseToolbars(i,this.stableOptionOverrides,f,c,r);return this.stableCalendarOptionsData={calendarOptions:i,pluginHooks:a,dateEnv:u,viewSpecs:c,theme:f,toolbarConfig:h,localeDefaults:o,availableRawLocales:s.map}}processRawCalendarOptions(e,n){let{locales:r,locale:i}=C6([cm,e,n]),a=this.organizeRawLocales(r),o=a.map,s=this.buildLocale(i||a.defaultCode,o).options,l=this.buildPluginHooks(e.plugins||[],a2t),u=this.currentCalendarOptionsRefiners=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Zne),Jne),ere),l.listenerRefiners),l.optionRefiners),c={},f=C6([cm,s,e,n]),h={},m=this.currentCalendarOptionsInput,b=this.currentCalendarOptionsRefined,_=!1;for(let y in f)this.optionsForRefining.indexOf(y)===-1&&(f[y]===m[y]||Ig[y]&&y in m&&Ig[y](m[y],f[y]))?h[y]=b[y]:u[y]?(h[y]=u[y](f[y]),_=!0):c[y]=m[y];return _&&(this.currentCalendarOptionsInput=f,this.currentCalendarOptionsRefined=h,this.stableOptionOverrides=e,this.stableDynamicOptionOverrides=n),this.optionsForHandling.push(...this.optionsForRefining),this.optionsForRefining=[],{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks:l,availableLocaleData:a,localeDefaults:s,extra:c}}_computeCurrentViewData(e,n,r,i){let a=n.viewSpecs[e];if(!a)throw new Error(`viewType "${e}" is not available. Please make sure you've loaded all neccessary plugins`);let{refinedOptions:o,extra:s}=this.processRawViewOptions(a,n.pluginHooks,n.localeDefaults,r,i);hre(s),this.nowManager.handleInput(n.dateEnv,o.now);let l=this.buildDateProfileGenerator({dateProfileGeneratorClass:a.optionDefaults.dateProfileGeneratorClass,nowManager:this.nowManager,duration:a.duration,durationUnit:a.durationUnit,usesMinMaxTime:a.optionDefaults.usesMinMaxTime,dateEnv:n.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:o.slotMinTime,slotMaxTime:o.slotMaxTime,showNonCurrentDates:o.showNonCurrentDates,dayCount:o.dayCount,dateAlignment:o.dateAlignment,dateIncrement:o.dateIncrement,hiddenDays:o.hiddenDays,weekends:o.weekends,validRangeInput:o.validRange,visibleRangeInput:o.visibleRange,fixedWeekCount:o.fixedWeekCount}),u=this.buildViewApi(e,this.getCurrentData,n.dateEnv);return{viewSpec:a,options:o,dateProfileGenerator:l,viewApi:u}}processRawViewOptions(e,n,r,i,a){let o=C6([cm,e.optionDefaults,r,i,e.optionOverrides,a]),s=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},Zne),Jne),ere),Yyt),n.listenerRefiners),n.optionRefiners),l={},u=this.currentViewOptionsInput,c=this.currentViewOptionsRefined,f=!1,h={};for(let m in o)o[m]===u[m]||Ig[m]&&Ig[m](o[m],u[m])?l[m]=c[m]:(o[m]===this.currentCalendarOptionsInput[m]||Ig[m]&&Ig[m](o[m],this.currentCalendarOptionsInput[m])?m in this.currentCalendarOptionsRefined&&(l[m]=this.currentCalendarOptionsRefined[m]):s[m]?l[m]=s[m](o[m]):h[m]=o[m],f=!0);return f&&(this.currentViewOptionsInput=o,this.currentViewOptionsRefined=l),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra:h}}}function u2t(t,e,n,r,i,a,o,s){let l=Qme(e||o.defaultCode,o.map);return new rSt({calendarSystem:"gregory",timeZone:t,namedTimeZoneImpl:a.namedTimeZonedImpl,locale:l,weekNumberCalculation:n,firstDay:r,weekText:i,cmdFormatter:a.cmdFormatter,defaultSeparator:s})}function d2t(t,e){let n=e.themeClasses[t.themeSystem]||Dh;return new n(t)}function f2t(t){let e=t.dateProfileGeneratorClass||hme;return new e(t)}function p2t(t,e,n){return new $Et(t,e,n)}function h2t(t){return Ff(t,e=>e.ui)}function g2t(t,e,n){let r={"":e};for(let i in t){let a=t[i];a.sourceId&&n[a.sourceId]&&(r[i]=n[a.sourceId])}return r}function m2t(t){let{options:e}=t;return{eventUiSingleBase:FT({display:e.eventDisplay,editable:e.editable,startEditable:e.eventStartEditable,durationEditable:e.eventDurationEditable,constraint:e.eventConstraint,overlap:typeof e.eventOverlap=="boolean"?e.eventOverlap:void 0,allow:e.eventAllow,backgroundColor:e.eventBackgroundColor,borderColor:e.eventBorderColor,textColor:e.eventTextColor,color:e.eventColor},t),selectionConfig:FT({constraint:e.selectConstraint,overlap:typeof e.selectOverlap=="boolean"?e.selectOverlap:void 0,allow:e.selectAllow},t)}}function D6(t,e){for(let n of e.pluginHooks.isLoadingFuncs)if(n(t))return!0;return!1}function b2t(t){return FSt(t.options.businessHours,t)}function hre(t,e){for(let n in t)console.warn(`Unknown option '${n}'`)}class _2t extends Br{render(){let e=this.props.widgetGroups.map(n=>this.renderWidgetGroup(n));return he("div",{className:"fc-toolbar-chunk"},...e)}renderWidgetGroup(e){let{props:n}=this,{theme:r}=this.context,i=[],a=!0;for(let o of e){let{buttonName:s,buttonClick:l,buttonText:u,buttonIcon:c,buttonHint:f}=o;if(s==="title")a=!1,i.push(he("h2",{className:"fc-toolbar-title",id:n.titleId},n.title));else{let h=s===n.activeButton,m=!n.isTodayEnabled&&s==="today"||!n.isPrevEnabled&&s==="prev"||!n.isNextEnabled&&s==="next",b=[`fc-${s}-button`,r.getClass("button")];h&&b.push(r.getClass("buttonActive")),i.push(he("button",{type:"button",title:typeof f=="function"?f(n.navUnit):f,disabled:m,"aria-pressed":h,className:b.join(" "),onClick:l},u||(c?he("span",{className:c,role:"img"}):"")))}}if(i.length>1){let o=a&&r.getClass("buttonGroup")||"";return he("div",{className:o},...i)}return i[0]}}class gre extends Br{render(){let{model:e,extraClassName:n}=this.props,r=!1,i,a,o=e.sectionWidgets,s=o.center;return o.left?(r=!0,i=o.left):i=o.start,o.right?(r=!0,a=o.right):a=o.end,he("div",{className:[n||"","fc-toolbar",r?"fc-toolbar-ltr":""].join(" ")},this.renderSection("start",i||[]),this.renderSection("center",s||[]),this.renderSection("end",a||[]))}renderSection(e,n){let{props:r}=this;return he(_2t,{key:e,widgetGroups:n,title:r.title,navUnit:r.navUnit,activeButton:r.activeButton,isTodayEnabled:r.isTodayEnabled,isPrevEnabled:r.isPrevEnabled,isNextEnabled:r.isNextEnabled,titleId:r.titleId})}}class v2t extends Br{constructor(){super(...arguments),this.state={availableWidth:null},this.handleEl=e=>{this.el=e,wd(this.props.elRef,e),this.updateAvailableWidth()},this.handleResize=()=>{this.updateAvailableWidth()}}render(){let{props:e,state:n}=this,{aspectRatio:r}=e,i=["fc-view-harness",r||e.liquid||e.height?"fc-view-harness-active":"fc-view-harness-passive"],a="",o="";return r?n.availableWidth!==null?a=n.availableWidth/r:o=`${1/r*100}%`:a=e.height||"",he("div",{"aria-labelledby":e.labeledById,ref:this.handleEl,className:i.join(" "),style:{height:a,paddingBottom:o}},e.children)}componentDidMount(){this.context.addResizeHandler(this.handleResize)}componentWillUnmount(){this.context.removeResizeHandler(this.handleResize)}updateAvailableWidth(){this.el&&this.props.aspectRatio&&this.setState({availableWidth:this.el.offsetWidth})}}class y2t extends Y_{constructor(e){super(e),this.handleSegClick=(n,r)=>{let{component:i}=this,{context:a}=i,o=h_(r);if(o&&i.isValidSegDownEl(n.target)){let s=Ko(n.target,".fc-event-forced-url"),l=s?s.querySelector("a[href]").href:"";a.emitter.trigger("eventClick",{el:r,event:new Mi(i.context,o.eventRange.def,o.eventRange.instance),jsEvent:n,view:a.viewApi}),l&&!n.defaultPrevented&&(window.location.href=l)}},this.destroy=nme(e.el,"click",".fc-event",this.handleSegClick)}}class S2t extends Y_{constructor(e){super(e),this.handleEventElRemove=n=>{n===this.currentSegEl&&this.handleSegLeave(null,this.currentSegEl)},this.handleSegEnter=(n,r)=>{h_(r)&&(this.currentSegEl=r,this.triggerEvent("eventMouseEnter",n,r))},this.handleSegLeave=(n,r)=>{this.currentSegEl&&(this.currentSegEl=null,this.triggerEvent("eventMouseLeave",n,r))},this.removeHoverListeners=Z0t(e.el,".fc-event",this.handleSegEnter,this.handleSegLeave)}destroy(){this.removeHoverListeners()}triggerEvent(e,n,r){let{component:i}=this,{context:a}=i,o=h_(r);(!n||i.isValidSegDownEl(n.target))&&a.emitter.trigger(e,{el:r,event:new Mi(a,o.eventRange.def,o.eventRange.instance),jsEvent:n,view:a.viewApi})}}class x2t extends Ym{constructor(){super(...arguments),this.buildViewContext=xn(oSt),this.buildViewPropTransformers=xn(C2t),this.buildToolbarProps=xn(E2t),this.headerRef=Es(),this.footerRef=Es(),this.interactionsStore={},this.state={viewLabelId:ih()},this.registerInteractiveComponent=(e,n)=>{let r=oxt(e,n),o=[y2t,S2t].concat(this.props.pluginHooks.componentInteractions).map(s=>new s(r));this.interactionsStore[e.uid]=o,UT[e.uid]=r},this.unregisterInteractiveComponent=e=>{let n=this.interactionsStore[e.uid];if(n){for(let r of n)r.destroy();delete this.interactionsStore[e.uid]}delete UT[e.uid]},this.resizeRunner=new QF(()=>{this.props.emitter.trigger("_resize",!0),this.props.emitter.trigger("windowResize",{view:this.props.viewApi})}),this.handleWindowResize=e=>{let{options:n}=this.props;n.handleWindowResize&&e.target===window&&this.resizeRunner.request(n.windowResizeDelay)}}render(){let{props:e}=this,{toolbarConfig:n,options:r}=e,i=!1,a="",o;e.isHeightAuto||e.forPrint?a="":r.height!=null?i=!0:r.contentHeight!=null?a=r.contentHeight:o=Math.max(r.aspectRatio,.5);let s=this.buildViewContext(e.viewSpec,e.viewApi,e.options,e.dateProfileGenerator,e.dateEnv,e.nowManager,e.theme,e.pluginHooks,e.dispatch,e.getCurrentData,e.emitter,e.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent),l=n.header&&n.header.hasTitle?this.state.viewLabelId:void 0;return he(Kf.Provider,{value:s},he(Wm,{unit:"day"},u=>{let c=this.buildToolbarProps(e.viewSpec,e.dateProfile,e.dateProfileGenerator,e.currentDate,u,e.viewTitle);return he(ci,null,n.header&&he(gre,Object.assign({ref:this.headerRef,extraClassName:"fc-header-toolbar",model:n.header,titleId:l},c)),he(v2t,{liquid:i,height:a,aspectRatio:o,labeledById:l},this.renderView(e),this.buildAppendContent()),n.footer&&he(gre,Object.assign({ref:this.footerRef,extraClassName:"fc-footer-toolbar",model:n.footer,titleId:""},c)))}))}componentDidMount(){let{props:e}=this;this.calendarInteractions=e.pluginHooks.calendarInteractions.map(r=>new r(e)),window.addEventListener("resize",this.handleWindowResize);let{propSetHandlers:n}=e.pluginHooks;for(let r in n)n[r](e[r],e)}componentDidUpdate(e){let{props:n}=this,{propSetHandlers:r}=n.pluginHooks;for(let i in r)n[i]!==e[i]&&r[i](n[i],n)}componentWillUnmount(){window.removeEventListener("resize",this.handleWindowResize),this.resizeRunner.clear();for(let e of this.calendarInteractions)e.destroy();this.props.emitter.trigger("_unmount")}buildAppendContent(){let{props:e}=this,n=e.pluginHooks.viewContainerAppends.map(r=>r(e));return he(ci,{},...n)}renderView(e){let{pluginHooks:n}=e,{viewSpec:r}=e,i={dateProfile:e.dateProfile,businessHours:e.businessHours,eventStore:e.renderableEventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,isHeightAuto:e.isHeightAuto,forPrint:e.forPrint},a=this.buildViewPropTransformers(n.viewPropsTransformers);for(let s of a)Object.assign(i,s.transform(i,e));let o=r.component;return he(o,Object.assign({},i))}}function E2t(t,e,n,r,i,a){let o=n.build(i,void 0,!1),s=n.buildPrev(e,r,!1),l=n.buildNext(e,r,!1);return{title:a,activeButton:t.type,navUnit:t.singleUnit,isTodayEnabled:o.isValid&&!wf(e.currentRange,i),isPrevEnabled:s.isValid,isNextEnabled:l.isValid}}function C2t(t){return t.map(e=>new e)}let w2t=class extends lxt{constructor(e,n={}){super(),this.isRendering=!1,this.isRendered=!1,this.currentClassNames=[],this.customContentRenderId=0,this.handleAction=r=>{switch(r.type){case"SET_EVENT_DRAG":case"SET_EVENT_RESIZE":this.renderRunner.tryDrain()}},this.handleData=r=>{this.currentData=r,this.renderRunner.request(r.calendarOptions.rerenderDelay)},this.handleRenderRequest=()=>{if(this.isRendering){this.isRendered=!0;let{currentData:r}=this;kT(()=>{iS(he(axt,{options:r.calendarOptions,theme:r.theme,emitter:r.emitter},(i,a,o,s)=>(this.setClassNames(i),this.setHeight(a),he(dme.Provider,{value:this.customContentRenderId},he(x2t,Object.assign({isHeightAuto:o,forPrint:s},r))))),this.el)})}else this.isRendered&&(this.isRendered=!1,iS(null,this.el),this.setClassNames([]),this.setHeight(""))},G0t(e),this.el=e,this.renderRunner=new QF(this.handleRenderRequest),new c2t({optionOverrides:n,calendarApi:this,onAction:this.handleAction,onData:this.handleData})}render(){let e=this.isRendering;e?this.customContentRenderId+=1:this.isRendering=!0,this.renderRunner.request(),e&&this.updateSize()}destroy(){this.isRendering&&(this.isRendering=!1,this.renderRunner.request())}updateSize(){kT(()=>{super.updateSize()})}batchRendering(e){this.renderRunner.pause("batchRendering"),e(),this.renderRunner.resume("batchRendering")}pauseRendering(){this.renderRunner.pause("pauseRendering")}resumeRendering(){this.renderRunner.resume("pauseRendering",!0)}resetOptions(e,n){this.currentDataManager.resetOptions(e,n)}setClassNames(e){if(!mh(e,this.currentClassNames)){let{classList:n}=this.el;for(let r of this.currentClassNames)n.remove(r);for(let r of e)n.add(r);this.currentClassNames=e}}setHeight(e){eme(this.el,"height",e)}};const T2t=parseInt(String(Ue.version).split(".")[0]),A2t=T2t<18;class i1e extends E.Component{constructor(){super(...arguments),this.elRef=E.createRef(),this.isUpdating=!1,this.isUnmounting=!1,this.state={customRenderingMap:new Map},this.requestResize=()=>{this.isUnmounting||(this.cancelResize(),this.resizeId=requestAnimationFrame(()=>{this.doResize()}))}}render(){const e=[];for(const n of this.state.customRenderingMap.values())e.push(Ue.createElement(R2t,{key:n.id,customRendering:n}));return Ue.createElement("div",{ref:this.elRef},e)}componentDidMount(){this.isUnmounting=!1;const e=new cEt;this.handleCustomRendering=e.handle.bind(e),this.calendar=new w2t(this.elRef.current,Object.assign(Object.assign({},this.props),{handleCustomRendering:this.handleCustomRendering})),this.calendar.render(),this.calendar.on("_beforeprint",()=>{md.flushSync(()=>{})});let n;e.subscribe(r=>{const i=Date.now(),a=!n;(A2t||a||this.isUpdating||this.isUnmounting||i-n<100?a1e:md.flushSync)(()=>{this.setState({customRenderingMap:r},()=>{n=i,a?this.doResize():this.requestResize()})})})}componentDidUpdate(){this.isUpdating=!0,this.calendar.resetOptions(Object.assign(Object.assign({},this.props),{handleCustomRendering:this.handleCustomRendering})),this.isUpdating=!1}componentWillUnmount(){this.isUnmounting=!0,this.cancelResize(),this.calendar.destroy()}doResize(){this.calendar.updateSize()}cancelResize(){this.resizeId!==void 0&&(cancelAnimationFrame(this.resizeId),this.resizeId=void 0)}getApi(){return this.calendar}}i1e.act=a1e;class R2t extends E.PureComponent{render(){const{customRendering:e}=this.props,{generatorMeta:n}=e,r=typeof n=="function"?n(e.renderProps):n;return md.createPortal(r,e.containerEl)}}function a1e(t){t()}class O2t extends Au{constructor(){super(...arguments),this.headerElRef=Es()}renderSimpleLayout(e,n){let{props:r,context:i}=this,a=[],o=zT(i.options);return e&&a.push({type:"header",key:"header",isSticky:o,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),a.push({type:"body",key:"body",liquid:!0,chunk:{content:n}}),he(aS,{elClasses:["fc-daygrid"],viewSpec:i.viewSpec},he(yj,{liquid:!r.isHeightAuto&&!r.forPrint,collapsibleWidth:r.forPrint,cols:[],sections:a}))}renderHScrollLayout(e,n,r,i){let a=this.context.pluginHooks.scrollGridImpl;if(!a)throw new Error("No ScrollGrid implementation");let{props:o,context:s}=this,l=!o.forPrint&&zT(s.options),u=!o.forPrint&&$me(s.options),c=[];return e&&c.push({type:"header",key:"header",isSticky:l,chunks:[{key:"main",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),c.push({type:"body",key:"body",liquid:!0,chunks:[{key:"main",content:n}]}),u&&c.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"main",content:x8}]}),he(aS,{elClasses:["fc-daygrid"],viewSpec:s.viewSpec},he(a,{liquid:!o.isHeightAuto&&!o.forPrint,forPrint:o.forPrint,collapsibleWidth:o.forPrint,colGroups:[{cols:[{span:r,minWidth:i}]}],sections:c}))}}function FC(t,e){let n=[];for(let r=0;r{let i=(e.eventDrag?e.eventDrag.affectedInstances:null)||(e.eventResize?e.eventResize.affectedInstances:null)||{};return he(ci,null,n.map(a=>{let o=a.eventRange.instance.instanceId;return he("div",{className:"fc-daygrid-event-harness",key:o,style:{visibility:i[o]?"hidden":""}},s1e(a)?he(c1e,Object.assign({seg:a,isDragging:!1,isSelected:o===e.eventSelection,defaultDisplayEventEnd:!1},Tf(a,e.todayRange))):he(l1e,Object.assign({seg:a,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:o===e.eventSelection,defaultDisplayEventEnd:!1},Tf(a,e.todayRange))))}))}})}}function M2t(t){let e=[],n=[];for(let r of t)e.push(r.seg),r.isVisible||n.push(r.seg);return{allSegs:e,invisibleSegs:n}}const D2t=Ii({week:"narrow"});class P2t extends Au{constructor(){super(...arguments),this.rootElRef=Es(),this.state={dayNumberId:ih()},this.handleRootEl=e=>{wd(this.rootElRef,e),wd(this.props.elRef,e)}}render(){let{context:e,props:n,state:r,rootElRef:i}=this,{options:a,dateEnv:o}=e,{date:s,dateProfile:l}=n;const u=n.showDayNumber&&L2t(s,l.currentRange,o);return he(Ej,{elTag:"td",elRef:this.handleRootEl,elClasses:["fc-daygrid-day",...n.extraClassNames||[]],elAttrs:Object.assign(Object.assign(Object.assign({},n.extraDataAttrs),n.showDayNumber?{"aria-labelledby":r.dayNumberId}:{}),{role:"gridcell"}),defaultGenerator:k2t,date:s,dateProfile:l,todayRange:n.todayRange,showDayNumber:n.showDayNumber,isMonthStart:u,extraRenderProps:n.extraRenderProps},(c,f)=>he("div",{ref:n.innerElRef,className:"fc-daygrid-day-frame fc-scrollgrid-sync-inner",style:{minHeight:n.minHeight}},n.showWeekNumber&&he(Yme,{elTag:"a",elClasses:["fc-daygrid-week-number"],elAttrs:g_(e,s,"week"),date:s,defaultFormat:D2t}),!f.isDisabled&&(n.showDayNumber||Cj(a)||n.forceDayTop)?he("div",{className:"fc-daygrid-day-top"},he(c,{elTag:"a",elClasses:["fc-daygrid-day-number",u&&"fc-daygrid-month-start"],elAttrs:Object.assign(Object.assign({},g_(e,s)),{id:r.dayNumberId})})):n.showDayNumber?he("div",{className:"fc-daygrid-day-top",style:{visibility:"hidden"}},he("a",{className:"fc-daygrid-day-number"}," ")):void 0,he("div",{className:"fc-daygrid-day-events",ref:n.fgContentElRef},n.fgContent,he("div",{className:"fc-daygrid-day-bottom",style:{marginTop:n.moreMarginTop}},he(N2t,{allDayDate:s,singlePlacements:n.singlePlacements,moreCnt:n.moreCnt,alignmentElRef:i,alignGridTop:!n.showDayNumber,extraDateSpan:n.extraDateSpan,dateProfile:n.dateProfile,eventSelection:n.eventSelection,eventDrag:n.eventDrag,eventResize:n.eventResize,todayRange:n.todayRange}))),he("div",{className:"fc-daygrid-day-bg"},n.bgContent)))}}function k2t(t){return t.dayNumberText||he(ci,null," ")}function L2t(t,e,n){const{start:r,end:i}=e,a=bh(i,-1),o=n.getYear(r),s=n.getMonth(r),l=n.getYear(a),u=n.getMonth(a);return!(o===l&&s===u)&&(t.valueOf()===r.valueOf()||n.getDay(t)===1&&t.valueOf(){let C=t[x.index].eventRange.instance.instanceId+":"+x.span.start+":"+(x.span.end-1);return i[C]||1});s.allowReslicing=!0,s.strictOrder=r,e===!0||n===!0?(s.maxCoord=a,s.hiddenConsumes=!0):typeof e=="number"?s.maxStackCnt=e:typeof n=="number"&&(s.maxStackCnt=n,s.hiddenConsumes=!0);let l=[],u=[];for(let x=0;x1,y=m.span.start===s;f+=m.levelCoord-c,c=m.levelCoord+m.thickness,_?(f+=m.thickness,y&&h.push({seg:zb(b,m.span.start,m.span.end,n),isVisible:!0,isAbsolute:!0,absoluteTop:m.levelCoord,marginTop:0})):y&&(h.push({seg:zb(b,m.span.start,m.span.end,n),isVisible:!0,isAbsolute:!1,absoluteTop:m.levelCoord,marginTop:f}),f=0)}i.push(u),a.push(h),o.push(f)}return{singleColPlacements:i,multiColPlacements:a,leftoverMargins:o}}function j2t(t,e){let n=[];for(let r=0;r!this.forceHidden[dm(a)];for(let a=0;a{e&&this.updateSizing(!0)}}render(){let{props:e,state:n,context:r}=this,{options:i}=r,a=e.cells.length,o=V2(e.businessHourSegs,a),s=V2(e.bgEventSegs,a),l=V2(this.getHighlightSegs(),a),u=V2(this.getMirrorSegs(),a),{singleColPlacements:c,multiColPlacements:f,moreCnts:h,moreMarginTops:m}=B2t(fj(e.fgEventSegs,i.eventOrder),e.dayMaxEvents,e.dayMaxEventRows,i.eventOrderStrict,n.segHeights,n.maxContentHeight,e.cells),b=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{};return he("tr",{ref:this.rootElRef,role:"row"},e.renderIntro&&e.renderIntro(),e.cells.map((_,y)=>{let x=this.renderFgSegs(y,e.forPrint?c[y]:f[y],e.todayRange,b),C=this.renderFgSegs(y,z2t(u[y],f),e.todayRange,{},!!e.eventDrag,!!e.eventResize,!1);return he(P2t,{key:_.key,elRef:this.cellElRefs.createRef(_.key),innerElRef:this.frameElRefs.createRef(_.key),dateProfile:e.dateProfile,date:_.date,showDayNumber:e.showDayNumbers,showWeekNumber:e.showWeekNumbers&&y===0,forceDayTop:e.showWeekNumbers,todayRange:e.todayRange,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,extraRenderProps:_.extraRenderProps,extraDataAttrs:_.extraDataAttrs,extraClassNames:_.extraClassNames,extraDateSpan:_.extraDateSpan,moreCnt:h[y],moreMarginTop:m[y],singlePlacements:c[y],fgContentElRef:this.fgElRefs.createRef(_.key),fgContent:he(ci,null,he(ci,null,x),he(ci,null,C)),bgContent:he(ci,null,this.renderFillSegs(l[y],"highlight"),this.renderFillSegs(o[y],"non-business"),this.renderFillSegs(s[y],"bg-event")),minHeight:e.cellMinHeight})}))}componentDidMount(){this.updateSizing(!0),this.context.addResizeHandler(this.handleResize)}componentDidUpdate(e,n){let r=this.props;this.updateSizing(!vu(e,r))}componentWillUnmount(){this.context.removeResizeHandler(this.handleResize)}getHighlightSegs(){let{props:e}=this;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs}getMirrorSegs(){let{props:e}=this;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]}renderFgSegs(e,n,r,i,a,o,s){let{context:l}=this,{eventSelection:u}=this.props,{framePositions:c}=this.state,f=this.props.cells.length===1,h=a||o||s,m=[];if(c)for(let b of n){let{seg:_}=b,{instanceId:y}=_.eventRange.instance,x=b.isVisible&&!i[y],C=b.isAbsolute,A="",R="";C&&(l.isRtl?(R=0,A=c.lefts[_.lastCol]-c.lefts[_.firstCol]):(A=0,R=c.rights[_.firstCol]-c.rights[_.lastCol])),m.push(he("div",{className:"fc-daygrid-event-harness"+(C?" fc-daygrid-event-harness-abs":""),key:u1e(_),ref:h?null:this.segHarnessRefs.createRef(d1e(_)),style:{visibility:x?"":"hidden",marginTop:C?"":b.marginTop,top:C?b.absoluteTop:"",left:A,right:R}},s1e(_)?he(c1e,Object.assign({seg:_,isDragging:a,isSelected:y===u,defaultDisplayEventEnd:f},Tf(_,r))):he(l1e,Object.assign({seg:_,isDragging:a,isResizing:o,isDateSelecting:s,isSelected:y===u,defaultDisplayEventEnd:f},Tf(_,r)))))}return m}renderFillSegs(e,n){let{isRtl:r}=this.context,{todayRange:i}=this.props,{framePositions:a}=this.state,o=[];if(a)for(let s of e){let l=r?{right:0,left:a.lefts[s.lastCol]-a.lefts[s.firstCol]}:{left:0,right:a.rights[s.firstCol]-a.rights[s.lastCol]};o.push(he("div",{key:wme(s.eventRange),className:"fc-daygrid-bg-harness",style:l},n==="bg-event"?he(Gme,Object.assign({seg:s},Tf(s,i))):Vme(n)))}return he(ci,{},...o)}updateSizing(e){let{props:n,state:r,frameElRefs:i}=this;if(!n.forPrint&&n.clientWidth!==null){if(e){let l=n.cells.map(u=>i.currentMap[u.key]);if(l.length){let u=this.rootElRef.current,c=new m_(u,l,!0,!1);(!r.framePositions||!r.framePositions.similarTo(c))&&this.setState({framePositions:new m_(u,l,!0,!1)})}}const a=this.state.segHeights,o=this.querySegHeights(),s=n.dayMaxEvents===!0||n.dayMaxEventRows===!0;this.safeSetState({segHeights:Object.assign(Object.assign({},a),o),maxContentHeight:s?this.computeMaxContentHeight():null})}}querySegHeights(){let e=this.segHarnessRefs.currentMap,n={};for(let r in e){let i=Math.round(e[r].getBoundingClientRect().height);n[r]=Math.max(n[r]||0,i)}return n}computeMaxContentHeight(){let e=this.props.cells[0].key,n=this.cellElRefs.currentMap[e],r=this.fgElRefs.currentMap[e];return n.getBoundingClientRect().bottom-r.getBoundingClientRect().top}getCellEls(){let e=this.cellElRefs.currentMap;return this.props.cells.map(n=>e[n.key])}}f1e.addStateEquality({segHeights:vu});function z2t(t,e){if(!t.length)return[];let n=H2t(e);return t.map(r=>({seg:r,isVisible:!0,isAbsolute:!0,absoluteTop:n[r.eventRange.instance.instanceId],marginTop:0}))}function H2t(t){let e={};for(let n of t)for(let r of n)e[r.seg.eventRange.instance.instanceId]=r.absoluteTop;return e}class $2t extends Au{constructor(){super(...arguments),this.splitBusinessHourSegs=xn(FC),this.splitBgEventSegs=xn(G2t),this.splitFgEventSegs=xn(FC),this.splitDateSelectionSegs=xn(FC),this.splitEventDrag=xn(mre),this.splitEventResize=xn(mre),this.rowRefs=new bf}render(){let{props:e,context:n}=this,r=e.cells.length,i=this.splitBusinessHourSegs(e.businessHourSegs,r),a=this.splitBgEventSegs(e.bgEventSegs,r),o=this.splitFgEventSegs(e.fgEventSegs,r),s=this.splitDateSelectionSegs(e.dateSelectionSegs,r),l=this.splitEventDrag(e.eventDrag,r),u=this.splitEventResize(e.eventResize,r),c=r>=7&&e.clientWidth?e.clientWidth/n.options.aspectRatio/6:null;return he(Wm,{unit:"day"},(f,h)=>he(ci,null,e.cells.map((m,b)=>he(f1e,{ref:this.rowRefs.createRef(b),key:m.length?m[0].date.toISOString():b,showDayNumbers:r>1,showWeekNumbers:e.showWeekNumbers,todayRange:h,dateProfile:e.dateProfile,cells:m,renderIntro:e.renderRowIntro,businessHourSegs:i[b],eventSelection:e.eventSelection,bgEventSegs:a[b],fgEventSegs:o[b],dateSelectionSegs:s[b],eventDrag:l[b],eventResize:u[b],dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,clientWidth:e.clientWidth,clientHeight:e.clientHeight,cellMinHeight:c,forPrint:e.forPrint}))))}componentDidMount(){this.registerInteractiveComponent()}componentDidUpdate(){this.registerInteractiveComponent()}registerInteractiveComponent(){if(!this.rootEl){const e=this.rowRefs.currentMap[0].getCellEls()[0],n=e?e.closest(".fc-daygrid-body"):null;n&&(this.rootEl=n,this.context.registerInteractiveComponent(this,{el:n,isHitComboAllowed:this.props.isHitComboAllowed}))}}componentWillUnmount(){this.rootEl&&(this.context.unregisterInteractiveComponent(this),this.rootEl=null)}prepareHits(){this.rowPositions=new m_(this.rootEl,this.rowRefs.collect().map(e=>e.getCellEls()[0]),!1,!0),this.colPositions=new m_(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)}queryHit(e,n){let{colPositions:r,rowPositions:i}=this,a=r.leftToIndex(e),o=i.topToIndex(n);if(o!=null&&a!=null){let s=this.props.cells[o][a];return{dateProfile:this.props.dateProfile,dateSpan:Object.assign({range:this.getCellRange(o,a),allDay:!0},s.extraDateSpan),dayEl:this.getCellEl(o,a),rect:{left:r.lefts[a],right:r.rights[a],top:i.tops[o],bottom:i.bottoms[o]},layer:0}}return null}getCellEl(e,n){return this.rowRefs.currentMap[e].getCellEls()[n]}getCellRange(e,n){let r=this.props.cells[e][n].date,i=Ba(r,1);return{start:r,end:i}}}function G2t(t,e){return FC(t.filter(V2t),e)}function V2t(t){return t.eventRange.def.allDay}class Y2t extends Au{constructor(){super(...arguments),this.elRef=Es(),this.needsScrollReset=!1}render(){let{props:e}=this,{dayMaxEventRows:n,dayMaxEvents:r,expandRows:i}=e,a=r===!0||n===!0;a&&!i&&(a=!1,n=null,r=null);let o=["fc-daygrid-body",a?"fc-daygrid-body-balanced":"fc-daygrid-body-unbalanced",i?"":"fc-daygrid-body-natural"];return he("div",{ref:this.elRef,className:o.join(" "),style:{width:e.clientWidth,minWidth:e.tableMinWidth}},he("table",{role:"presentation",className:"fc-scrollgrid-sync-table",style:{width:e.clientWidth,minWidth:e.tableMinWidth,height:i?e.clientHeight:""}},e.colGroupNode,he("tbody",{role:"presentation"},he($2t,{dateProfile:e.dateProfile,cells:e.cells,renderRowIntro:e.renderRowIntro,showWeekNumbers:e.showWeekNumbers,clientWidth:e.clientWidth,clientHeight:e.clientHeight,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,dayMaxEvents:r,dayMaxEventRows:n,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed}))))}componentDidMount(){this.requestScrollReset()}componentDidUpdate(e){e.dateProfile!==this.props.dateProfile?this.requestScrollReset():this.flushScrollReset()}requestScrollReset(){this.needsScrollReset=!0,this.flushScrollReset()}flushScrollReset(){if(this.needsScrollReset&&this.props.clientWidth){const e=W2t(this.elRef.current,this.props.dateProfile);if(e){const n=e.closest(".fc-daygrid-body"),r=n.closest(".fc-scroller"),i=e.getBoundingClientRect().top-n.getBoundingClientRect().top;r.scrollTop=i?i+1:0}this.needsScrollReset=!1}}}function W2t(t,e){let n;return e.currentRangeUnit.match(/year|month/)&&(n=t.querySelector(`[data-date="${Oyt(e.currentDate)}-01"]`)),n||(n=t.querySelector(`[data-date="${hx(e.currentDate)}"]`)),n}class q2t extends Fme{constructor(){super(...arguments),this.forceDayIfListItem=!0}sliceRange(e,n){return n.sliceRange(e)}}class p1e extends Au{constructor(){super(...arguments),this.slicer=new q2t,this.tableRef=Es()}render(){let{props:e,context:n}=this;return he(Y2t,Object.assign({ref:this.tableRef},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,n,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))}}class K2t extends O2t{constructor(){super(...arguments),this.buildDayTableModel=xn(X2t),this.headerRef=Es(),this.tableRef=Es()}render(){let{options:e,dateProfileGenerator:n}=this.context,{props:r}=this,i=this.buildDayTableModel(r.dateProfile,n),a=e.dayHeaders&&he(kme,{ref:this.headerRef,dateProfile:r.dateProfile,dates:i.headerDates,datesRepDistinctDays:i.rowCnt===1}),o=s=>he(p1e,{ref:this.tableRef,dateProfile:r.dateProfile,dayTableModel:i,businessHours:r.businessHours,dateSelection:r.dateSelection,eventStore:r.eventStore,eventUiBases:r.eventUiBases,eventSelection:r.eventSelection,eventDrag:r.eventDrag,eventResize:r.eventResize,nextDayThreshold:e.nextDayThreshold,colGroupNode:s.tableColGroupNode,tableMinWidth:s.tableMinWidth,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.weekNumbers,expandRows:!r.isHeightAuto,headerAlignElRef:this.headerElRef,clientWidth:s.clientWidth,clientHeight:s.clientHeight,forPrint:r.forPrint});return e.dayMinWidth?this.renderHScrollLayout(a,o,i.colCnt,e.dayMinWidth):this.renderSimpleLayout(a,o)}}function X2t(t,e){let n=new Lme(t.renderRange,e);return new Bme(n,/year|month|week/.test(t.currentRangeUnit))}class Q2t extends hme{buildRenderRange(e,n,r){let i=super.buildRenderRange(e,n,r),{props:a}=this;return Z2t({currentRange:i,snapToWeek:/^(year|month)$/.test(n),fixedWeekCount:a.fixedWeekCount,dateEnv:a.dateEnv})}}function Z2t(t){let{dateEnv:e,currentRange:n}=t,{start:r,end:i}=n,a;if(t.snapToWeek&&(r=e.startOfWeek(r),a=e.startOfWeek(i),a.valueOf()!==i.valueOf()&&(i=Wne(a,1))),t.fixedWeekCount){let o=e.startOfWeek(e.startOfMonth(Ba(n.end,-1))),s=Math.ceil(_yt(o,i));i=Wne(i,6-s)}return{start:r,end:i}}var J2t=':root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:"";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:"";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}';JR(J2t);var eCt=Id({name:"@fullcalendar/daygrid",initialView:"dayGridMonth",views:{dayGrid:{component:K2t,dateProfileGeneratorClass:Q2t},dayGridDay:{type:"dayGrid",duration:{days:1}},dayGridWeek:{type:"dayGrid",duration:{weeks:1}},dayGridMonth:{type:"dayGrid",duration:{months:1},fixedWeekCount:!0},dayGridYear:{type:"dayGrid",duration:{years:1}}}});class tCt extends pxt{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(e){return e.allDay?["allDay"]:["timed"]}getKeysForEventDef(e){return e.allDay?$St(e)?["timed","allDay"]:["allDay"]:["timed"]}}const nCt=Ii({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});function h1e(t){let e=["fc-timegrid-slot","fc-timegrid-slot-label",t.isLabeled?"fc-scrollgrid-shrink":"fc-timegrid-slot-minor"];return he(Kf.Consumer,null,n=>{if(!t.isLabeled)return he("td",{className:e.join(" "),"data-time":t.isoTimeStr});let{dateEnv:r,options:i,viewApi:a}=n,o=i.slotLabelFormat==null?nCt:Array.isArray(i.slotLabelFormat)?Ii(i.slotLabelFormat[0]):Ii(i.slotLabelFormat),s={level:0,time:t.time,date:r.toDate(t.date),view:a,text:r.format(t.date,o)};return he(es,{elTag:"td",elClasses:e,elAttrs:{"data-time":t.isoTimeStr},renderProps:s,generatorName:"slotLabelContent",customGenerator:i.slotLabelContent,defaultGenerator:rCt,classNameGenerator:i.slotLabelClassNames,didMount:i.slotLabelDidMount,willUnmount:i.slotLabelWillUnmount},l=>he("div",{className:"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame"},he(l,{elTag:"div",elClasses:["fc-timegrid-slot-label-cushion","fc-scrollgrid-shrink-cushion"]})))})}function rCt(t){return t.text}class iCt extends Br{render(){return this.props.slatMetas.map(e=>he("tr",{key:e.key},he(h1e,Object.assign({},e))))}}const aCt=Ii({week:"short"}),oCt=5;class sCt extends Au{constructor(){super(...arguments),this.allDaySplitter=new tCt,this.headerElRef=Es(),this.rootElRef=Es(),this.scrollerElRef=Es(),this.state={slatCoords:null},this.handleScrollTopRequest=e=>{let n=this.scrollerElRef.current;n&&(n.scrollTop=e)},this.renderHeadAxis=(e,n="")=>{let{options:r}=this.context,{dateProfile:i}=this.props,a=i.renderRange,s=Mh(a.start,a.end)===1?g_(this.context,a.start,"week"):{};return r.weekNumbers&&e==="day"?he(Yme,{elTag:"th",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},date:a.start,defaultFormat:aCt},l=>he("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame","fc-timegrid-axis-frame-liquid"].join(" "),style:{height:n}},he(l,{elTag:"a",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"],elAttrs:s}))):he("th",{"aria-hidden":!0,className:"fc-timegrid-axis"},he("div",{className:"fc-timegrid-axis-frame",style:{height:n}}))},this.renderTableRowAxis=e=>{let{options:n,viewApi:r}=this.context,i={text:n.allDayText,view:r};return he(es,{elTag:"td",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},renderProps:i,generatorName:"allDayContent",customGenerator:n.allDayContent,defaultGenerator:lCt,classNameGenerator:n.allDayClassNames,didMount:n.allDayDidMount,willUnmount:n.allDayWillUnmount},a=>he("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame",e==null?" fc-timegrid-axis-frame-liquid":""].join(" "),style:{height:e}},he(a,{elTag:"span",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"]})))},this.handleSlatCoords=e=>{this.setState({slatCoords:e})}}renderSimpleLayout(e,n,r){let{context:i,props:a}=this,o=[],s=zT(i.options);return e&&o.push({type:"header",key:"header",isSticky:s,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),n&&(o.push({type:"body",key:"all-day",chunk:{content:n}}),o.push({type:"body",key:"all-day-divider",outerContent:he("tr",{role:"presentation",className:"fc-scrollgrid-section"},he("td",{className:"fc-timegrid-divider "+i.theme.getClass("tableCellShaded")}))})),o.push({type:"body",key:"body",liquid:!0,expandRows:!!i.options.expandRows,chunk:{scrollerElRef:this.scrollerElRef,content:r}}),he(aS,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:i.viewSpec},he(yj,{liquid:!a.isHeightAuto&&!a.forPrint,collapsibleWidth:a.forPrint,cols:[{width:"shrink"}],sections:o}))}renderHScrollLayout(e,n,r,i,a,o,s){let l=this.context.pluginHooks.scrollGridImpl;if(!l)throw new Error("No ScrollGrid implementation");let{context:u,props:c}=this,f=!c.forPrint&&zT(u.options),h=!c.forPrint&&$me(u.options),m=[];e&&m.push({type:"header",key:"header",isSticky:f,syncRowHeights:!0,chunks:[{key:"axis",rowContent:_=>he("tr",{role:"presentation"},this.renderHeadAxis("day",_.rowSyncHeights[0]))},{key:"cols",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),n&&(m.push({type:"body",key:"all-day",syncRowHeights:!0,chunks:[{key:"axis",rowContent:_=>he("tr",{role:"presentation"},this.renderTableRowAxis(_.rowSyncHeights[0]))},{key:"cols",content:n}]}),m.push({key:"all-day-divider",type:"body",outerContent:he("tr",{role:"presentation",className:"fc-scrollgrid-section"},he("td",{colSpan:2,className:"fc-timegrid-divider "+u.theme.getClass("tableCellShaded")}))}));let b=u.options.nowIndicator;return m.push({type:"body",key:"body",liquid:!0,expandRows:!!u.options.expandRows,chunks:[{key:"axis",content:_=>he("div",{className:"fc-timegrid-axis-chunk"},he("table",{"aria-hidden":!0,style:{height:_.expandRows?_.clientHeight:""}},_.tableColGroupNode,he("tbody",null,he(iCt,{slatMetas:o}))),he("div",{className:"fc-timegrid-now-indicator-container"},he(Wm,{unit:b?"minute":"day"},y=>{let x=b&&s&&s.safeComputeTop(y);return typeof x=="number"?he(xj,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:x},isAxis:!0,date:y}):null})))},{key:"cols",scrollerElRef:this.scrollerElRef,content:r}]}),h&&m.push({key:"footer",type:"footer",isSticky:!0,chunks:[{key:"axis",content:x8},{key:"cols",content:x8}]}),he(aS,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:u.viewSpec},he(l,{liquid:!c.isHeightAuto&&!c.forPrint,forPrint:c.forPrint,collapsibleWidth:!1,colGroups:[{width:"shrink",cols:[{width:"shrink"}]},{cols:[{span:i,minWidth:a}]}],sections:m}))}getAllDayMaxEventProps(){let{dayMaxEvents:e,dayMaxEventRows:n}=this.context.options;return(e===!0||n===!0)&&(e=void 0,n=oCt),{dayMaxEvents:e,dayMaxEventRows:n}}}function lCt(t){return t.text}class cCt{constructor(e,n,r){this.positions=e,this.dateProfile=n,this.slotDuration=r}safeComputeTop(e){let{dateProfile:n}=this;if(wf(n.currentRange,e)){let r=gi(e),i=e.valueOf()-r.valueOf();if(i>=ou(n.slotMinTime)&&i{let s={time:a.time,date:n.dateEnv.toDate(a.date),view:n.viewApi};return he("tr",{key:a.key,ref:i.createRef(a.key)},e.axis&&he(h1e,Object.assign({},a)),he(es,{elTag:"td",elClasses:["fc-timegrid-slot","fc-timegrid-slot-lane",!a.isLabeled&&"fc-timegrid-slot-minor"],elAttrs:{"data-time":a.isoTimeStr},renderProps:s,generatorName:"slotLaneContent",customGenerator:r.slotLaneContent,classNameGenerator:r.slotLaneClassNames,didMount:r.slotLaneDidMount,willUnmount:r.slotLaneWillUnmount}))}))}}class dCt extends Br{constructor(){super(...arguments),this.rootElRef=Es(),this.slatElRefs=new bf}render(){let{props:e,context:n}=this;return he("div",{ref:this.rootElRef,className:"fc-timegrid-slots"},he("table",{"aria-hidden":!0,className:n.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,he(uCt,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))}componentDidMount(){this.updateSizing()}componentDidUpdate(){this.updateSizing()}componentWillUnmount(){this.props.onCoords&&this.props.onCoords(null)}updateSizing(){let{context:e,props:n}=this;n.onCoords&&n.clientWidth!==null&&this.rootElRef.current.offsetHeight&&n.onCoords(new cCt(new m_(this.rootElRef.current,fCt(this.slatElRefs.currentMap,n.slatMetas),!1,!0),this.props.dateProfile,e.options.slotDuration))}}function fCt(t,e){return e.map(n=>t[n.key])}function w0(t,e){let n=[],r;for(r=0;rm1e(e.hiddenSegs,e),defaultGenerator:hCt,forceTimed:!0},n=>he(n,{elTag:"div",elClasses:["fc-timegrid-more-link-inner","fc-sticky"]}))}}function hCt(t){return t.shortText}function gCt(t,e,n){let r=new Mme;e!=null&&(r.strictOrder=e),n!=null&&(r.maxStackCnt=n);let i=r.addSegs(t),a=Txt(i),o=mCt(r);return o=yCt(o,1),{segRects:SCt(o),hiddenGroups:a}}function mCt(t){const{entriesByLevel:e}=t,n=Tj((r,i)=>r+":"+i,(r,i)=>{let a=vCt(t,r,i),o=_re(a,n),s=e[r][i];return[Object.assign(Object.assign({},s),{nextLevelNodes:o[0]}),s.thickness+o[1]]});return _re(e.length?{level:0,lateralStart:0,lateralEnd:e[0].length}:null,n)[0]}function _re(t,e){if(!t)return[[],0];let{level:n,lateralStart:r,lateralEnd:i}=t,a=r,o=[];for(;adm(r),(r,i,a)=>{let{nextLevelNodes:o,thickness:s}=r,l=s+a,u=s/l,c,f=[];if(!o.length)c=e;else for(let m of o)if(c===void 0){let b=n(m,i,l);c=b[0],f.push(b[1])}else{let b=n(m,c,0);f.push(b[1])}let h=(c-i)*u;return[c-h,Object.assign(Object.assign({},r),{thickness:h,nextLevelNodes:f})]});return t.map(r=>n(r,0,0)[1])}function SCt(t){let e=[];const n=Tj((i,a,o)=>dm(i),(i,a,o)=>{let s=Object.assign(Object.assign({},i),{levelCoord:a,stackDepth:o,stackForward:0});return e.push(s),s.stackForward=r(i.nextLevelNodes,a+i.thickness,o+1)+1});function r(i,a,o){let s=0;for(let l of i)s=Math.max(n(l,a,o),s);return s}return r(t,0,0),e}function Tj(t,e){const n={};return(...r)=>{let i=t(...r);return i in n?n[i]:n[i]=e(...r)}}function vre(t,e,n=null,r=0){let i=[];if(n)for(let a=0;ahe("div",{className:"fc-timegrid-col-frame"},he("div",{className:"fc-timegrid-col-bg"},this.renderFillSegs(e.businessHourSegs,"non-business"),this.renderFillSegs(e.bgEventSegs,"bg-event"),this.renderFillSegs(e.dateSelectionSegs,"highlight")),he("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(s,o,!1,!1,!1)),he("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(a,{},!!e.eventDrag,!!e.eventResize,!!i,"mirror")),he("div",{className:"fc-timegrid-now-indicator-container"},this.renderNowIndicator(e.nowIndicatorSegs)),Cj(r)&&he(l,{elTag:"div",elClasses:["fc-timegrid-col-misc"]})))}renderFgSegs(e,n,r,i,a,o){let{props:s}=this;return s.forPrint?m1e(e,s):this.renderPositionedFgSegs(e,n,r,i,a,o)}renderPositionedFgSegs(e,n,r,i,a,o){let{eventMaxStack:s,eventShortHeight:l,eventOrderStrict:u,eventMinHeight:c}=this.context.options,{date:f,slatCoords:h,eventSelection:m,todayRange:b,nowDate:_}=this.props,y=r||i||a,x=vre(e,f,h,c),{segPlacements:C,hiddenGroups:A}=xCt(e,x,u,s);return he(ci,null,this.renderHiddenGroups(A,e),C.map(R=>{let{seg:I,rect:O}=R,N=I.eventRange.instance.instanceId,k=y||!!(!n[N]&&O),D=P6(O&&O.span),P=!y&&O?this.computeSegHStyle(O):{left:0,right:0},j=!!O&&O.stackForward>0,M=!!O&&O.span.end-O.span.start{let f=P6(c.span),h=wCt(c.entries,n);return he(pCt,{key:ome(qme(h)),hiddenSegs:h,top:f.top,bottom:f.bottom,extraDateSpan:r,dateProfile:i,todayRange:a,nowDate:o,eventSelection:s,eventDrag:l,eventResize:u})}))}renderFillSegs(e,n){let{props:r,context:i}=this,o=vre(e,r.date,r.slatCoords,i.options.eventMinHeight).map((s,l)=>{let u=e[l];return he("div",{key:wme(u.eventRange),className:"fc-timegrid-bg-harness",style:P6(s)},n==="bg-event"?he(Gme,Object.assign({seg:u},Tf(u,r.todayRange,r.nowDate))):Vme(n))});return he(ci,null,o)}renderNowIndicator(e){let{slatCoords:n,date:r}=this.props;return n?e.map((i,a)=>he(xj,{key:a,elClasses:["fc-timegrid-now-indicator-line"],elStyle:{top:n.computeDateTop(i.start,r)},isAxis:!1,date:r})):null}computeSegHStyle(e){let{isRtl:n,options:r}=this.context,i=r.slotEventOverlap,a=e.levelCoord,o=e.levelCoord+e.thickness,s,l;i&&(o=Math.min(1,a+(o-a)*2)),n?(s=1-o,l=a):(s=a,l=1-o);let u={zIndex:e.stackDepth+1,left:s*100+"%",right:l*100+"%"};return i&&!e.stackForward&&(u[n?"marginLeft":"marginRight"]=20),u}}function m1e(t,{todayRange:e,nowDate:n,eventSelection:r,eventDrag:i,eventResize:a}){let o=(i?i.affectedInstances:null)||(a?a.affectedInstances:null)||{};return he(ci,null,t.map(s=>{let l=s.eventRange.instance.instanceId;return he("div",{key:l,style:{visibility:o[l]?"hidden":""}},he(g1e,Object.assign({seg:s,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:l===r,isShort:!1},Tf(s,e,n))))}))}function P6(t){return t?{top:t.start,bottom:-t.end}:{top:"",bottom:""}}function wCt(t,e){return t.map(n=>e[n.index])}class TCt extends Br{constructor(){super(...arguments),this.splitFgEventSegs=xn(w0),this.splitBgEventSegs=xn(w0),this.splitBusinessHourSegs=xn(w0),this.splitNowIndicatorSegs=xn(w0),this.splitDateSelectionSegs=xn(w0),this.splitEventDrag=xn(bre),this.splitEventResize=xn(bre),this.rootElRef=Es(),this.cellElRefs=new bf}render(){let{props:e,context:n}=this,r=n.options.nowIndicator&&e.slatCoords&&e.slatCoords.safeComputeTop(e.nowDate),i=e.cells.length,a=this.splitFgEventSegs(e.fgEventSegs,i),o=this.splitBgEventSegs(e.bgEventSegs,i),s=this.splitBusinessHourSegs(e.businessHourSegs,i),l=this.splitNowIndicatorSegs(e.nowIndicatorSegs,i),u=this.splitDateSelectionSegs(e.dateSelectionSegs,i),c=this.splitEventDrag(e.eventDrag,i),f=this.splitEventResize(e.eventResize,i);return he("div",{className:"fc-timegrid-cols",ref:this.rootElRef},he("table",{role:"presentation",style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,he("tbody",{role:"presentation"},he("tr",{role:"row"},e.axis&&he("td",{"aria-hidden":!0,className:"fc-timegrid-col fc-timegrid-axis"},he("div",{className:"fc-timegrid-col-frame"},he("div",{className:"fc-timegrid-now-indicator-container"},typeof r=="number"&&he(xj,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:r},isAxis:!0,date:e.nowDate})))),e.cells.map((h,m)=>he(CCt,{key:h.key,elRef:this.cellElRefs.createRef(h.key),dateProfile:e.dateProfile,date:h.date,nowDate:e.nowDate,todayRange:e.todayRange,extraRenderProps:h.extraRenderProps,extraDataAttrs:h.extraDataAttrs,extraClassNames:h.extraClassNames,extraDateSpan:h.extraDateSpan,fgEventSegs:a[m],bgEventSegs:o[m],businessHourSegs:s[m],nowIndicatorSegs:l[m],dateSelectionSegs:u[m],eventDrag:c[m],eventResize:f[m],slatCoords:e.slatCoords,eventSelection:e.eventSelection,forPrint:e.forPrint}))))))}componentDidMount(){this.updateCoords()}componentDidUpdate(){this.updateCoords()}updateCoords(){let{props:e}=this;e.onColCoords&&e.clientWidth!==null&&e.onColCoords(new m_(this.rootElRef.current,ACt(this.cellElRefs.currentMap,e.cells),!0,!1))}}function ACt(t,e){return e.map(n=>t[n.key])}class RCt extends Au{constructor(){super(...arguments),this.processSlotOptions=xn(OCt),this.state={slatCoords:null},this.handleRootEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)},this.handleScrollRequest=e=>{let{onScrollTopRequest:n}=this.props,{slatCoords:r}=this.state;if(n&&r){if(e.time){let i=r.computeTimeTop(e.time);i=Math.ceil(i),i&&(i+=1),n(i)}return!0}return!1},this.handleColCoords=e=>{this.colCoords=e},this.handleSlatCoords=e=>{this.setState({slatCoords:e}),this.props.onSlatCoords&&this.props.onSlatCoords(e)}}render(){let{props:e,state:n}=this;return he("div",{className:"fc-timegrid-body",ref:this.handleRootEl,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},he(dCt,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:"",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),he(TCt,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:n.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))}componentDidMount(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)}componentDidUpdate(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)}componentWillUnmount(){this.scrollResponder.detach()}queryHit(e,n){let{dateEnv:r,options:i}=this.context,{colCoords:a}=this,{dateProfile:o}=this.props,{slatCoords:s}=this.state,{snapDuration:l,snapsPerSlot:u}=this.processSlotOptions(this.props.slotDuration,i.snapDuration),c=a.leftToIndex(e),f=s.positions.topToIndex(n);if(c!=null&&f!=null){let h=this.props.cells[c],m=s.positions.tops[f],b=s.positions.getHeight(f),_=(n-m)/b,y=Math.floor(_*u),x=f*u+y,C=this.props.cells[c].date,A=h8(o.slotMinTime,hyt(l,x)),R=r.add(C,A),I=r.add(R,l);return{dateProfile:o,dateSpan:Object.assign({range:{start:R,end:I},allDay:!1},h.extraDateSpan),dayEl:a.els[c],rect:{left:a.lefts[c],right:a.rights[c],top:m,bottom:m+b},layer:0}}return null}}function OCt(t,e){let n=e||t,r=JF(t,n);return r===null&&(n=t,r=1),{snapDuration:n,snapsPerSlot:r}}class ICt extends Fme{sliceRange(e,n){let r=[];for(let i=0;ihe(RCt,Object.assign({ref:this.timeColsRef},this.slicer.sliceProps(e,r,null,n,s),{forPrint:e.forPrint,axis:e.axis,dateProfile:r,slatMetas:e.slatMetas,slotDuration:e.slotDuration,cells:i.cells[0],tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight,expandRows:e.expandRows,nowDate:l,nowIndicatorSegs:a&&this.slicer.sliceNowDate(l,r,o,n,s),todayRange:u,onScrollTopRequest:e.onScrollTopRequest,onSlatCoords:e.onSlatCoords})))}}function MCt(t,e,n){let r=[];for(let i of t.headerDates)r.push({start:n.add(i,e.slotMinTime),end:n.add(i,e.slotMaxTime)});return r}const yre=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function DCt(t,e,n,r,i){let a=new Date(0),o=t,s=fr(0),l=n||PCt(r),u=[];for(;ou(o)=0;e-=1)if(n=fr(yre[e]),r=JF(n,t),r!==null&&r>1)return n;return t}class kCt extends sCt{constructor(){super(...arguments),this.buildTimeColsModel=xn(LCt),this.buildSlatMetas=xn(DCt)}render(){let{options:e,dateEnv:n,dateProfileGenerator:r}=this.context,{props:i}=this,{dateProfile:a}=i,o=this.buildTimeColsModel(a,r),s=this.allDaySplitter.splitProps(i),l=this.buildSlatMetas(a.slotMinTime,a.slotMaxTime,e.slotLabelInterval,e.slotDuration,n),{dayMinWidth:u}=e,c=!u,f=u,h=e.dayHeaders&&he(kme,{dates:o.headerDates,dateProfile:a,datesRepDistinctDays:!0,renderIntro:c?this.renderHeadAxis:null}),m=e.allDaySlot!==!1&&(_=>he(p1e,Object.assign({},s.allDay,{dateProfile:a,dayTableModel:o,nextDayThreshold:e.nextDayThreshold,tableMinWidth:_.tableMinWidth,colGroupNode:_.tableColGroupNode,renderRowIntro:c?this.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:this.headerElRef,clientWidth:_.clientWidth,clientHeight:_.clientHeight,forPrint:i.forPrint},this.getAllDayMaxEventProps()))),b=_=>he(NCt,Object.assign({},s.timed,{dayTableModel:o,dateProfile:a,axis:c,slotDuration:e.slotDuration,slatMetas:l,forPrint:i.forPrint,tableColGroupNode:_.tableColGroupNode,tableMinWidth:_.tableMinWidth,clientWidth:_.clientWidth,clientHeight:_.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:_.expandRows,onScrollTopRequest:this.handleScrollTopRequest}));return f?this.renderHScrollLayout(h,m,b,o.colCnt,u,l,this.state.slatCoords):this.renderSimpleLayout(h,m,b)}}function LCt(t,e){let n=new Lme(t.renderRange,e);return new Bme(n,!1)}var BCt='.fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:"\\00a0"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:"\\00a0-\\00a0"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-arrow,.fc .fc-timegrid-now-indicator-line{pointer-events:none}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}';JR(BCt);const FCt={allDaySlot:Boolean};var jCt=Id({name:"@fullcalendar/timegrid",initialView:"timeGridWeek",optionRefiners:FCt,views:{timeGrid:{component:kCt,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}});class UCt extends Br{constructor(){super(...arguments),this.state={textId:ih()}}render(){let{theme:e,dateEnv:n,options:r,viewApi:i}=this.context,{cellId:a,dayDate:o,todayRange:s}=this.props,{textId:l}=this.state,u=gj(o,s),c=r.listDayFormat?n.format(o,r.listDayFormat):"",f=r.listDaySideFormat?n.format(o,r.listDaySideFormat):"",h=Object.assign({date:n.toDate(o),view:i,textId:l,text:c,sideText:f,navLinkAttrs:g_(this.context,o),sideNavLinkAttrs:g_(this.context,o,"day",!1)},u);return he(es,{elTag:"tr",elClasses:["fc-list-day",...lO(u,e)],elAttrs:{"data-date":hx(o)},renderProps:h,generatorName:"dayHeaderContent",customGenerator:r.dayHeaderContent,defaultGenerator:zCt,classNameGenerator:r.dayHeaderClassNames,didMount:r.dayHeaderDidMount,willUnmount:r.dayHeaderWillUnmount},m=>he("th",{scope:"colgroup",colSpan:3,id:a,"aria-labelledby":l},he(m,{elTag:"div",elClasses:["fc-list-day-cushion",e.getClass("tableCellShaded")]})))}}function zCt(t){return he(ci,null,t.text&&he("a",Object.assign({id:t.textId,className:"fc-list-day-text"},t.navLinkAttrs),t.text),t.sideText&&he("a",Object.assign({"aria-hidden":!0,className:"fc-list-day-side-text"},t.sideNavLinkAttrs),t.sideText))}const HCt=Ii({hour:"numeric",minute:"2-digit",meridiem:"short"});class $Ct extends Br{render(){let{props:e,context:n}=this,{options:r}=n,{seg:i,timeHeaderId:a,eventHeaderId:o,dateHeaderId:s}=e,l=r.eventTimeFormat||HCt;return he(uO,Object.assign({},e,{elTag:"tr",elClasses:["fc-list-event",i.eventRange.def.url&&"fc-event-forced-url"],defaultGenerator:()=>GCt(i,n),seg:i,timeText:"",disableDragging:!0,disableResizing:!0}),(u,c)=>he(ci,null,VCt(i,l,n,a,s),he("td",{"aria-hidden":!0,className:"fc-list-event-graphic"},he("span",{className:"fc-list-event-dot",style:{borderColor:c.borderColor||c.backgroundColor}})),he(u,{elTag:"td",elClasses:["fc-list-event-title"],elAttrs:{headers:`${o} ${s}`}})))}}function GCt(t,e){let n=pj(t,e);return he("a",Object.assign({},n),t.eventRange.def.title)}function VCt(t,e,n,r,i){let{options:a}=n;if(a.displayEventTime!==!1){let o=t.eventRange.def,s=t.eventRange.instance,l=!1,u;if(o.allDay?l=!0:mSt(t.eventRange.range)?t.isStart?u=dy(t,e,n,null,null,s.range.start,t.end):t.isEnd?u=dy(t,e,n,null,null,t.start,s.range.end):l=!0:u=dy(t,e,n),l){let c={text:n.options.allDayText,view:n.viewApi};return he(es,{elTag:"td",elClasses:["fc-list-event-time"],elAttrs:{headers:`${r} ${i}`},renderProps:c,generatorName:"allDayContent",customGenerator:a.allDayContent,defaultGenerator:YCt,classNameGenerator:a.allDayClassNames,didMount:a.allDayDidMount,willUnmount:a.allDayWillUnmount})}return he("td",{className:"fc-list-event-time"},u)}return null}function YCt(t){return t.text}class WCt extends Au{constructor(){super(...arguments),this.computeDateVars=xn(KCt),this.eventStoreToSegs=xn(this._eventStoreToSegs),this.state={timeHeaderId:ih(),eventHeaderId:ih(),dateHeaderIdRoot:ih()},this.setRootEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e}):this.context.unregisterInteractiveComponent(this)}}render(){let{props:e,context:n}=this,{dayDates:r,dayRanges:i}=this.computeDateVars(e.dateProfile),a=this.eventStoreToSegs(e.eventStore,e.eventUiBases,i);return he(aS,{elRef:this.setRootEl,elClasses:["fc-list",n.theme.getClass("table"),n.options.stickyHeaderDates!==!1?"fc-list-sticky":""],viewSpec:n.viewSpec},he(zme,{liquid:!e.isHeightAuto,overflowX:e.isHeightAuto?"visible":"hidden",overflowY:e.isHeightAuto?"visible":"auto"},a.length>0?this.renderSegList(a,r):this.renderEmptyMessage()))}renderEmptyMessage(){let{options:e,viewApi:n}=this.context,r={text:e.noEventsText,view:n};return he(es,{elTag:"div",elClasses:["fc-list-empty"],renderProps:r,generatorName:"noEventsContent",customGenerator:e.noEventsContent,defaultGenerator:qCt,classNameGenerator:e.noEventsClassNames,didMount:e.noEventsDidMount,willUnmount:e.noEventsWillUnmount},i=>he(i,{elTag:"div",elClasses:["fc-list-empty-cushion"]}))}renderSegList(e,n){let{theme:r,options:i}=this.context,{timeHeaderId:a,eventHeaderId:o,dateHeaderIdRoot:s}=this.state,l=XCt(e);return he(Wm,{unit:"day"},(u,c)=>{let f=[];for(let h=0;h{if(!this.shouldIgnoreMouse()&&ewt(n)&&this.tryStart(n)){let r=this.createEventFromMouse(n,!0);this.emitter.trigger("pointerdown",r),this.initScrollWatch(r),this.shouldIgnoreMove||document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp)}},this.handleMouseMove=n=>{let r=this.createEventFromMouse(n);this.recordCoords(r),this.emitter.trigger("pointermove",r)},this.handleMouseUp=n=>{document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),this.emitter.trigger("pointerup",this.createEventFromMouse(n)),this.cleanup()},this.handleTouchStart=n=>{if(this.tryStart(n)){this.isTouchDragging=!0;let r=this.createEventFromTouch(n,!0);this.emitter.trigger("pointerdown",r),this.initScrollWatch(r);let i=n.target;this.shouldIgnoreMove||i.addEventListener("touchmove",this.handleTouchMove),i.addEventListener("touchend",this.handleTouchEnd),i.addEventListener("touchcancel",this.handleTouchEnd),window.addEventListener("scroll",this.handleTouchScroll,!0)}},this.handleTouchMove=n=>{let r=this.createEventFromTouch(n);this.recordCoords(r),this.emitter.trigger("pointermove",r)},this.handleTouchEnd=n=>{if(this.isDragging){let r=n.target;r.removeEventListener("touchmove",this.handleTouchMove),r.removeEventListener("touchend",this.handleTouchEnd),r.removeEventListener("touchcancel",this.handleTouchEnd),window.removeEventListener("scroll",this.handleTouchScroll,!0),this.emitter.trigger("pointerup",this.createEventFromTouch(n)),this.cleanup(),this.isTouchDragging=!1,twt()}},this.handleTouchScroll=()=>{this.wasTouchScroll=!0},this.handleScroll=n=>{if(!this.shouldIgnoreMove){let r=window.scrollX-this.prevScrollX+this.prevPageX,i=window.scrollY-this.prevScrollY+this.prevPageY;this.emitter.trigger("pointermove",{origEvent:n,isTouch:this.isTouchDragging,subjectEl:this.subjectEl,pageX:r,pageY:i,deltaX:r-this.origPageX,deltaY:i-this.origPageY})}},this.containerEl=e,this.emitter=new sO,e.addEventListener("mousedown",this.handleMouseDown),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),nwt()}destroy(){this.containerEl.removeEventListener("mousedown",this.handleMouseDown),this.containerEl.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),rwt()}tryStart(e){let n=this.querySubjectEl(e),r=e.target;return n&&(!this.handleSelector||Ko(r,this.handleSelector))?(this.subjectEl=n,this.isDragging=!0,this.wasTouchScroll=!1,!0):!1}cleanup(){w8=!1,this.isDragging=!1,this.subjectEl=null,this.destroyScrollWatch()}querySubjectEl(e){return this.selector?Ko(e.target,this.selector):this.containerEl}shouldIgnoreMouse(){return C8||this.isTouchDragging}cancelTouchScroll(){this.isDragging&&(w8=!0)}initScrollWatch(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener("scroll",this.handleScroll,!0))}recordCoords(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.scrollX,this.prevScrollY=window.scrollY)}destroyScrollWatch(){this.shouldWatchScroll&&window.removeEventListener("scroll",this.handleScroll,!0)}createEventFromMouse(e,n){let r=0,i=0;return n?(this.origPageX=e.pageX,this.origPageY=e.pageY):(r=e.pageX-this.origPageX,i=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:r,deltaY:i}}createEventFromTouch(e,n){let r=e.touches,i,a,o=0,s=0;return r&&r.length?(i=r[0].pageX,a=r[0].pageY):(i=e.pageX,a=e.pageY),n?(this.origPageX=i,this.origPageY=a):(o=i-this.origPageX,s=a-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:i,pageY:a,deltaX:o,deltaY:s}}}function ewt(t){return t.button===0&&!t.ctrlKey}function twt(){C8+=1,setTimeout(()=>{C8-=1},cO.touchMouseIgnoreWait)}function nwt(){HT+=1,HT===1&&window.addEventListener("touchmove",_1e,{passive:!1})}function rwt(){HT-=1,HT||window.removeEventListener("touchmove",_1e,{passive:!1})}function _1e(t){w8&&t.preventDefault()}class iwt{constructor(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}start(e,n,r){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=n-window.scrollX,this.origScreenY=r-window.scrollY,this.deltaX=0,this.deltaY=0,this.updateElPosition()}handleMove(e,n){this.deltaX=e-window.scrollX-this.origScreenX,this.deltaY=n-window.scrollY-this.origScreenY,this.updateElPosition()}setIsVisible(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=""),this.isVisible=e,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&(this.mirrorEl.style.display="none"),this.isVisible=e)}stop(e,n){let r=()=>{this.cleanup(),n()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(r,this.revertDuration):setTimeout(r,0)}doRevertAnimation(e,n){let r=this.mirrorEl,i=this.sourceEl.getBoundingClientRect();r.style.transition="top "+n+"ms,left "+n+"ms",cy(r,{left:i.left,top:i.top}),J0t(r,()=>{r.style.transition="",e()})}cleanup(){this.mirrorEl&&(ZF(this.mirrorEl),this.mirrorEl=null),this.sourceEl=null}updateElPosition(){this.sourceEl&&this.isVisible&&cy(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})}getMirrorEl(){let e=this.sourceElRect,n=this.mirrorEl;return n||(n=this.mirrorEl=this.sourceEl.cloneNode(!0),n.style.userSelect="none",n.style.webkitUserSelect="none",n.style.pointerEvents="none",n.classList.add("fc-event-dragging"),cy(n,{position:"fixed",zIndex:this.zIndex,visibility:"",boxSizing:"border-box",width:e.right-e.left,height:e.bottom-e.top,right:"auto",bottom:"auto",margin:0}),this.parentNode.appendChild(n)),n}}class v1e extends bj{constructor(e,n){super(),this.handleScroll=()=>{this.scrollTop=this.scrollController.getScrollTop(),this.scrollLeft=this.scrollController.getScrollLeft(),this.handleScrollChange()},this.scrollController=e,this.doesListening=n,this.scrollTop=this.origScrollTop=e.getScrollTop(),this.scrollLeft=this.origScrollLeft=e.getScrollLeft(),this.scrollWidth=e.getScrollWidth(),this.scrollHeight=e.getScrollHeight(),this.clientWidth=e.getClientWidth(),this.clientHeight=e.getClientHeight(),this.clientRect=this.computeClientRect(),this.doesListening&&this.getEventTarget().addEventListener("scroll",this.handleScroll)}destroy(){this.doesListening&&this.getEventTarget().removeEventListener("scroll",this.handleScroll)}getScrollTop(){return this.scrollTop}getScrollLeft(){return this.scrollLeft}setScrollTop(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())}setScrollLeft(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())}getClientWidth(){return this.clientWidth}getClientHeight(){return this.clientHeight}getScrollWidth(){return this.scrollWidth}getScrollHeight(){return this.scrollHeight}handleScrollChange(){}}class y1e extends v1e{constructor(e,n){super(new Cxt(e),n)}getEventTarget(){return this.scrollController.el}computeClientRect(){return xxt(this.scrollController.el)}}class awt extends v1e{constructor(e){super(new wxt,e)}getEventTarget(){return window}computeClientRect(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}}handleScrollChange(){this.clientRect=this.computeClientRect()}}const xre=typeof performance=="function"?performance.now:Date.now;class owt{constructor(){this.isEnabled=!0,this.scrollQuery=[window,".fc-scroller"],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=()=>{if(this.isAnimating){let e=this.computeBestEdge(this.pointerScreenX+window.scrollX,this.pointerScreenY+window.scrollY);if(e){let n=xre();this.handleSide(e,(n-this.msSinceRequest)/1e3),this.requestAnimation(n)}else this.isAnimating=!1}}}start(e,n,r){this.isEnabled&&(this.scrollCaches=this.buildCaches(r),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,n))}handleMove(e,n){if(this.isEnabled){let r=e-window.scrollX,i=n-window.scrollY,a=this.pointerScreenY===null?0:i-this.pointerScreenY,o=this.pointerScreenX===null?0:r-this.pointerScreenX;a<0?this.everMovedUp=!0:a>0&&(this.everMovedDown=!0),o<0?this.everMovedLeft=!0:o>0&&(this.everMovedRight=!0),this.pointerScreenX=r,this.pointerScreenY=i,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(xre()))}}stop(){if(this.isEnabled){this.isAnimating=!1;for(let e of this.scrollCaches)e.destroy();this.scrollCaches=null}}requestAnimation(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)}handleSide(e,n){let{scrollCache:r}=e,{edgeThreshold:i}=this,a=i-e.distance,o=a*a/(i*i)*this.maxVelocity*n,s=1;switch(e.name){case"left":s=-1;case"right":r.setScrollLeft(r.getScrollLeft()+o*s);break;case"top":s=-1;case"bottom":r.setScrollTop(r.getScrollTop()+o*s);break}}computeBestEdge(e,n){let{edgeThreshold:r}=this,i=null,a=this.scrollCaches||[];for(let o of a){let s=o.clientRect,l=e-s.left,u=s.right-e,c=n-s.top,f=s.bottom-n;l>=0&&u>=0&&c>=0&&f>=0&&(c<=r&&this.everMovedUp&&o.canScrollUp()&&(!i||i.distance>c)&&(i={scrollCache:o,name:"top",distance:c}),f<=r&&this.everMovedDown&&o.canScrollDown()&&(!i||i.distance>f)&&(i={scrollCache:o,name:"bottom",distance:f}),l<=r&&this.everMovedLeft&&o.canScrollLeft()&&(!i||i.distance>l)&&(i={scrollCache:o,name:"left",distance:l}),u<=r&&this.everMovedRight&&o.canScrollRight()&&(!i||i.distance>u)&&(i={scrollCache:o,name:"right",distance:u}))}return i}buildCaches(e){return this.queryScrollEls(e).map(n=>n===window?new awt(!1):new y1e(n,!1))}queryScrollEls(e){let n=[];for(let r of this.scrollQuery)typeof r=="object"?n.push(r):n.push(...Array.prototype.slice.call(e.getRootNode().querySelectorAll(r)));return n}}class W_ extends Rxt{constructor(e,n){super(e),this.containerEl=e,this.delay=null,this.minDistance=0,this.touchScrollAllowed=!0,this.mirrorNeedsRevert=!1,this.isInteracting=!1,this.isDragging=!1,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.delayTimeoutId=null,this.onPointerDown=i=>{this.isDragging||(this.isInteracting=!0,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,eyt(document.body),nyt(document.body),i.isTouch||i.origEvent.preventDefault(),this.emitter.trigger("pointerdown",i),this.isInteracting&&!this.pointer.shouldIgnoreMove&&(this.mirror.setIsVisible(!1),this.mirror.start(i.subjectEl,i.pageX,i.pageY),this.startDelay(i),this.minDistance||this.handleDistanceSurpassed(i)))},this.onPointerMove=i=>{if(this.isInteracting){if(this.emitter.trigger("pointermove",i),!this.isDistanceSurpassed){let a=this.minDistance,o,{deltaX:s,deltaY:l}=i;o=s*s+l*l,o>=a*a&&this.handleDistanceSurpassed(i)}this.isDragging&&(i.origEvent.type!=="scroll"&&(this.mirror.handleMove(i.pageX,i.pageY),this.autoScroller.handleMove(i.pageX,i.pageY)),this.emitter.trigger("dragmove",i))}},this.onPointerUp=i=>{this.isInteracting&&(this.isInteracting=!1,tyt(document.body),ryt(document.body),this.emitter.trigger("pointerup",i),this.isDragging&&(this.autoScroller.stop(),this.tryStopDrag(i)),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null))};let r=this.pointer=new b1e(e);r.emitter.on("pointerdown",this.onPointerDown),r.emitter.on("pointermove",this.onPointerMove),r.emitter.on("pointerup",this.onPointerUp),n&&(r.selector=n),this.mirror=new iwt,this.autoScroller=new owt}destroy(){this.pointer.destroy(),this.onPointerUp({})}startDelay(e){typeof this.delay=="number"?this.delayTimeoutId=setTimeout(()=>{this.delayTimeoutId=null,this.handleDelayEnd(e)},this.delay):this.handleDelayEnd(e)}handleDelayEnd(e){this.isDelayEnded=!0,this.tryStartDrag(e)}handleDistanceSurpassed(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)}tryStartDrag(e){this.isDelayEnded&&this.isDistanceSurpassed&&(!this.pointer.wasTouchScroll||this.touchScrollAllowed)&&(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY,this.containerEl),this.emitter.trigger("dragstart",e),this.touchScrollAllowed===!1&&this.pointer.cancelTouchScroll())}tryStopDrag(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))}stopDrag(e){this.isDragging=!1,this.emitter.trigger("dragend",e)}setIgnoreMove(e){this.pointer.shouldIgnoreMove=e}setMirrorIsVisible(e){this.mirror.setIsVisible(e)}setMirrorNeedsRevert(e){this.mirrorNeedsRevert=e}setAutoScrollEnabled(e){this.autoScroller.isEnabled=e}}class swt{constructor(e){this.el=e,this.origRect=mj(e),this.scrollCaches=Nme(e).map(n=>new y1e(n,!0))}destroy(){for(let e of this.scrollCaches)e.destroy()}computeLeft(){let e=this.origRect.left;for(let n of this.scrollCaches)e+=n.origScrollLeft-n.getScrollLeft();return e}computeTop(){let e=this.origRect.top;for(let n of this.scrollCaches)e+=n.origScrollTop-n.getScrollTop();return e}isWithinClipping(e,n){let r={left:e,top:n};for(let i of this.scrollCaches)if(!lwt(i.getEventTarget())&&!cxt(r,i.clientRect))return!1;return!0}}function lwt(t){let e=t.tagName;return e==="HTML"||e==="BODY"}class mx{constructor(e,n){this.useSubjectCenter=!1,this.requireInitial=!0,this.disablePointCheck=!1,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=r=>{let{dragging:i}=this;this.initialHit=null,this.movingHit=null,this.finalHit=null,this.prepareHits(),this.processFirstCoord(r),this.initialHit||!this.requireInitial?(i.setIgnoreMove(!1),this.emitter.trigger("pointerdown",r)):i.setIgnoreMove(!0)},this.handleDragStart=r=>{this.emitter.trigger("dragstart",r),this.handleMove(r,!0)},this.handleDragMove=r=>{this.emitter.trigger("dragmove",r),this.handleMove(r)},this.handlePointerUp=r=>{this.releaseHits(),this.emitter.trigger("pointerup",r)},this.handleDragEnd=r=>{this.movingHit&&this.emitter.trigger("hitupdate",null,!0,r),this.finalHit=this.movingHit,this.movingHit=null,this.emitter.trigger("dragend",r)},this.droppableStore=n,e.emitter.on("pointerdown",this.handlePointerDown),e.emitter.on("dragstart",this.handleDragStart),e.emitter.on("dragmove",this.handleDragMove),e.emitter.on("pointerup",this.handlePointerUp),e.emitter.on("dragend",this.handleDragEnd),this.dragging=e,this.emitter=new sO}processFirstCoord(e){let n={left:e.pageX,top:e.pageY},r=n,i=e.subjectEl,a;i instanceof HTMLElement&&(a=mj(i),r=uxt(r,a));let o=this.initialHit=this.queryHitForOffset(r.left,r.top);if(o){if(this.useSubjectCenter&&a){let s=Ome(a,o.rect);s&&(r=dxt(s))}this.coordAdjust=fxt(r,n)}else this.coordAdjust={left:0,top:0}}handleMove(e,n){let r=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);(n||!dO(this.movingHit,r))&&(this.movingHit=r,this.emitter.trigger("hitupdate",r,!1,e))}prepareHits(){this.offsetTrackers=Ff(this.droppableStore,e=>(e.component.prepareHits(),new swt(e.el)))}releaseHits(){let{offsetTrackers:e}=this;for(let n in e)e[n].destroy();this.offsetTrackers={}}queryHitForOffset(e,n){let{droppableStore:r,offsetTrackers:i}=this,a=null;for(let o in r){let s=r[o].component,l=i[o];if(l&&l.isWithinClipping(e,n)){let u=l.computeLeft(),c=l.computeTop(),f=e-u,h=n-c,{origRect:m}=l,b=m.right-m.left,_=m.bottom-m.top;if(f>=0&&f=0&&h<_){let y=s.queryHit(f,h,b,_);y&&iO(y.dateProfile.activeRange,y.dateSpan.range)&&(this.disablePointCheck||l.el.contains(l.el.getRootNode().elementFromPoint(f+u-window.scrollX,h+c-window.scrollY)))&&(!a||y.layer>a.layer)&&(y.componentId=o,y.context=s.context,y.rect.left+=u,y.rect.right+=u,y.rect.top+=c,y.rect.bottom+=c,a=y)}}}return a}}function dO(t,e){return!t&&!e?!0:!!t!=!!e?!1:ZSt(t.dateSpan,e.dateSpan)}function Aj(t,e){let n={};for(let r of e.pluginHooks.datePointTransforms)Object.assign(n,r(t,e));return Object.assign(n,cwt(t,e.dateEnv)),n}function cwt(t,e){return{date:e.toDate(t.range.start),dateStr:e.formatIso(t.range.start,{omitTime:t.allDay}),allDay:t.allDay}}class uwt extends Y_{constructor(e){super(e),this.handlePointerDown=r=>{let{dragging:i}=this,a=r.origEvent.target;i.setIgnoreMove(!this.component.isValidDateDownEl(a))},this.handleDragEnd=r=>{let{component:i}=this,{pointer:a}=this.dragging;if(!a.wasTouchScroll){let{initialHit:o,finalHit:s}=this.hitDragging;if(o&&s&&dO(o,s)){let{context:l}=i,u=Object.assign(Object.assign({},Aj(o.dateSpan,l)),{dayEl:o.dayEl,jsEvent:r.origEvent,view:l.viewApi||l.calendarApi.view});l.emitter.trigger("dateClick",u)}}},this.dragging=new W_(e.el),this.dragging.autoScroller.isEnabled=!1;let n=this.hitDragging=new mx(this.dragging,hj(e));n.emitter.on("pointerdown",this.handlePointerDown),n.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}}class dwt extends Y_{constructor(e){super(e),this.dragSelection=null,this.handlePointerDown=o=>{let{component:s,dragging:l}=this,{options:u}=s.context,c=u.selectable&&s.isValidDateDownEl(o.origEvent.target);l.setIgnoreMove(!c),l.delay=o.isTouch?fwt(s):null},this.handleDragStart=o=>{this.component.context.calendarApi.unselect(o)},this.handleHitUpdate=(o,s)=>{let{context:l}=this.component,u=null,c=!1;if(o){let f=this.hitDragging.initialHit;o.componentId===f.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(f,o)||(u=pwt(f,o,l.pluginHooks.dateSelectionTransformers)),(!u||!kxt(u,o.dateProfile,l))&&(c=!0,u=null)}u?l.dispatch({type:"SELECT_DATES",selection:u}):s||l.dispatch({type:"UNSELECT_DATES"}),c?tO():nO(),s||(this.dragSelection=u)},this.handlePointerUp=o=>{this.dragSelection&&(xme(this.dragSelection,o,this.component.context),this.dragSelection=null)};let{component:n}=e,{options:r}=n.context,i=this.dragging=new W_(e.el);i.touchScrollAllowed=!1,i.minDistance=r.selectMinDistance||0,i.autoScroller.isEnabled=r.dragScroll;let a=this.hitDragging=new mx(this.dragging,hj(e));a.emitter.on("pointerdown",this.handlePointerDown),a.emitter.on("dragstart",this.handleDragStart),a.emitter.on("hitupdate",this.handleHitUpdate),a.emitter.on("pointerup",this.handlePointerUp)}destroy(){this.dragging.destroy()}}function fwt(t){let{options:e}=t.context,n=e.selectLongPressDelay;return n==null&&(n=e.longPressDelay),n}function pwt(t,e,n){let r=t.dateSpan,i=e.dateSpan,a=[r.range.start,r.range.end,i.range.start,i.range.end];a.sort(lyt);let o={};for(let s of n){let l=s(t,e);if(l===!1)return null;l&&Object.assign(o,l)}return o.range={start:a[0],end:a[3]},o.allDay=r.allDay,o}class bx extends Y_{constructor(e){super(e),this.subjectEl=null,this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=o=>{let s=o.origEvent.target,{component:l,dragging:u}=this,{mirror:c}=u,{options:f}=l.context,h=l.context;this.subjectEl=o.subjectEl;let m=this.subjectSeg=h_(o.subjectEl),_=(this.eventRange=m.eventRange).instance.instanceId;this.relevantEvents=lj(h.getCurrentData().eventStore,_),u.minDistance=o.isTouch?0:f.eventDragMinDistance,u.delay=o.isTouch&&_!==l.props.eventSelection?gwt(l):null,f.fixedMirrorParent?c.parentNode=f.fixedMirrorParent:c.parentNode=Ko(s,".fc"),c.revertDuration=f.dragRevertDuration;let y=l.isValidSegDownEl(s)&&!Ko(s,".fc-event-resizer");u.setIgnoreMove(!y),this.isDragging=y&&o.subjectEl.classList.contains("fc-event-draggable")},this.handleDragStart=o=>{let s=this.component.context,l=this.eventRange,u=l.instance.instanceId;o.isTouch?u!==this.component.props.eventSelection&&s.dispatch({type:"SELECT_EVENT",eventInstanceId:u}):s.dispatch({type:"UNSELECT_EVENT"}),this.isDragging&&(s.calendarApi.unselect(o),s.emitter.trigger("eventDragStart",{el:this.subjectEl,event:new Mi(s,l.def,l.instance),jsEvent:o.origEvent,view:s.viewApi}))},this.handleHitUpdate=(o,s)=>{if(!this.isDragging)return;let l=this.relevantEvents,u=this.hitDragging.initialHit,c=this.component.context,f=null,h=null,m=null,b=!1,_={affectedEvents:l,mutatedEvents:Qo(),isEvent:!0};if(o){f=o.context;let y=f.options;c===f||y.editable&&y.droppable?(h=hwt(u,o,this.eventRange.instance.range.start,f.getCurrentData().pluginHooks.eventDragMutationMassagers),h&&(m=dj(l,f.getCurrentData().eventUiBases,h,f),_.mutatedEvents=m,vj(_,o.dateProfile,f)||(b=!0,h=null,m=null,_.mutatedEvents=Qo()))):f=null}this.displayDrag(f,_),b?tO():nO(),s||(c===f&&dO(u,o)&&(h=null),this.dragging.setMirrorNeedsRevert(!h),this.dragging.setMirrorIsVisible(!o||!this.subjectEl.getRootNode().querySelector(".fc-event-mirror")),this.receivingContext=f,this.validMutation=h,this.mutatedRelevantEvents=m)},this.handlePointerUp=()=>{this.isDragging||this.cleanup()},this.handleDragEnd=o=>{if(this.isDragging){let s=this.component.context,l=s.viewApi,{receivingContext:u,validMutation:c}=this,f=this.eventRange.def,h=this.eventRange.instance,m=new Mi(s,f,h),b=this.relevantEvents,_=this.mutatedRelevantEvents,{finalHit:y}=this.hitDragging;if(this.clearDrag(),s.emitter.trigger("eventDragStop",{el:this.subjectEl,event:m,jsEvent:o.origEvent,view:l}),c){if(u===s){let x=new Mi(s,_.defs[f.defId],h?_.instances[h.instanceId]:null);s.dispatch({type:"MERGE_EVENTS",eventStore:_});let C={oldEvent:m,event:x,relatedEvents:um(_,s,h),revert(){s.dispatch({type:"MERGE_EVENTS",eventStore:b})}},A={};for(let R of s.getCurrentData().pluginHooks.eventDropTransformers)Object.assign(A,R(c,s));s.emitter.trigger("eventDrop",Object.assign(Object.assign(Object.assign({},C),A),{el:o.subjectEl,delta:c.datesDelta,jsEvent:o.origEvent,view:l})),s.emitter.trigger("eventChange",C)}else if(u){let x={event:m,relatedEvents:um(b,s,h),revert(){s.dispatch({type:"MERGE_EVENTS",eventStore:b})}};s.emitter.trigger("eventLeave",Object.assign(Object.assign({},x),{draggedEl:o.subjectEl,view:l})),s.dispatch({type:"REMOVE_EVENTS",eventStore:b}),s.emitter.trigger("eventRemove",x);let C=_.defs[f.defId],A=_.instances[h.instanceId],R=new Mi(u,C,A);u.dispatch({type:"MERGE_EVENTS",eventStore:_});let I={event:R,relatedEvents:um(_,u,A),revert(){u.dispatch({type:"REMOVE_EVENTS",eventStore:_})}};u.emitter.trigger("eventAdd",I),o.isTouch&&u.dispatch({type:"SELECT_EVENT",eventInstanceId:h.instanceId}),u.emitter.trigger("drop",Object.assign(Object.assign({},Aj(y.dateSpan,u)),{draggedEl:o.subjectEl,jsEvent:o.origEvent,view:y.context.viewApi})),u.emitter.trigger("eventReceive",Object.assign(Object.assign({},I),{draggedEl:o.subjectEl,view:y.context.viewApi}))}}else s.emitter.trigger("_noEventDrop")}this.cleanup()};let{component:n}=this,{options:r}=n.context,i=this.dragging=new W_(e.el);i.pointer.selector=bx.SELECTOR,i.touchScrollAllowed=!1,i.autoScroller.isEnabled=r.dragScroll;let a=this.hitDragging=new mx(this.dragging,UT);a.useSubjectCenter=e.useEventCenter,a.emitter.on("pointerdown",this.handlePointerDown),a.emitter.on("dragstart",this.handleDragStart),a.emitter.on("hitupdate",this.handleHitUpdate),a.emitter.on("pointerup",this.handlePointerUp),a.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}displayDrag(e,n){let r=this.component.context,i=this.receivingContext;i&&i!==e&&(i===r?i.dispatch({type:"SET_EVENT_DRAG",state:{affectedEvents:n.affectedEvents,mutatedEvents:Qo(),isEvent:!0}}):i.dispatch({type:"UNSET_EVENT_DRAG"})),e&&e.dispatch({type:"SET_EVENT_DRAG",state:n})}clearDrag(){let e=this.component.context,{receivingContext:n}=this;n&&n.dispatch({type:"UNSET_EVENT_DRAG"}),e!==n&&e.dispatch({type:"UNSET_EVENT_DRAG"})}cleanup(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null}}bx.SELECTOR=".fc-event-draggable, .fc-event-resizable";function hwt(t,e,n,r){let i=t.dateSpan,a=e.dateSpan,o=i.range.start,s=a.range.start,l={};i.allDay!==a.allDay&&(l.allDay=a.allDay,l.hasEnd=e.context.options.allDayMaintainDuration,a.allDay?o=gi(n):o=n);let u=Tb(o,s,t.context.dateEnv,t.componentId===e.componentId?t.largeUnit:null);u.milliseconds&&(l.allDay=!1);let c={datesDelta:u,standardProps:l};for(let f of r)f(c,t,e);return c}function gwt(t){let{options:e}=t.context,n=e.eventLongPressDelay;return n==null&&(n=e.longPressDelay),n}class mwt extends Y_{constructor(e){super(e),this.draggingSegEl=null,this.draggingSeg=null,this.eventRange=null,this.relevantEvents=null,this.validMutation=null,this.mutatedRelevantEvents=null,this.handlePointerDown=a=>{let{component:o}=this,s=this.querySegEl(a),l=h_(s),u=this.eventRange=l.eventRange;this.dragging.minDistance=o.context.options.eventDragMinDistance,this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(a.origEvent.target)||a.isTouch&&this.component.props.eventSelection!==u.instance.instanceId)},this.handleDragStart=a=>{let{context:o}=this.component,s=this.eventRange;this.relevantEvents=lj(o.getCurrentData().eventStore,this.eventRange.instance.instanceId);let l=this.querySegEl(a);this.draggingSegEl=l,this.draggingSeg=h_(l),o.calendarApi.unselect(),o.emitter.trigger("eventResizeStart",{el:l,event:new Mi(o,s.def,s.instance),jsEvent:a.origEvent,view:o.viewApi})},this.handleHitUpdate=(a,o,s)=>{let{context:l}=this.component,u=this.relevantEvents,c=this.hitDragging.initialHit,f=this.eventRange.instance,h=null,m=null,b=!1,_={affectedEvents:u,mutatedEvents:Qo(),isEvent:!0};a&&(a.componentId===c.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(c,a)||(h=bwt(c,a,s.subjectEl.classList.contains("fc-event-resizer-start"),f.range))),h&&(m=dj(u,l.getCurrentData().eventUiBases,h,l),_.mutatedEvents=m,vj(_,a.dateProfile,l)||(b=!0,h=null,m=null,_.mutatedEvents=null)),m?l.dispatch({type:"SET_EVENT_RESIZE",state:_}):l.dispatch({type:"UNSET_EVENT_RESIZE"}),b?tO():nO(),o||(h&&dO(c,a)&&(h=null),this.validMutation=h,this.mutatedRelevantEvents=m)},this.handleDragEnd=a=>{let{context:o}=this.component,s=this.eventRange.def,l=this.eventRange.instance,u=new Mi(o,s,l),c=this.relevantEvents,f=this.mutatedRelevantEvents;if(o.emitter.trigger("eventResizeStop",{el:this.draggingSegEl,event:u,jsEvent:a.origEvent,view:o.viewApi}),this.validMutation){let h=new Mi(o,f.defs[s.defId],l?f.instances[l.instanceId]:null);o.dispatch({type:"MERGE_EVENTS",eventStore:f});let m={oldEvent:u,event:h,relatedEvents:um(f,o,l),revert(){o.dispatch({type:"MERGE_EVENTS",eventStore:c})}};o.emitter.trigger("eventResize",Object.assign(Object.assign({},m),{el:this.draggingSegEl,startDelta:this.validMutation.startDelta||fr(0),endDelta:this.validMutation.endDelta||fr(0),jsEvent:a.origEvent,view:o.viewApi})),o.emitter.trigger("eventChange",m)}else o.emitter.trigger("_noEventResize");this.draggingSeg=null,this.relevantEvents=null,this.validMutation=null};let{component:n}=e,r=this.dragging=new W_(e.el);r.pointer.selector=".fc-event-resizer",r.touchScrollAllowed=!1,r.autoScroller.isEnabled=n.context.options.dragScroll;let i=this.hitDragging=new mx(this.dragging,hj(e));i.emitter.on("pointerdown",this.handlePointerDown),i.emitter.on("dragstart",this.handleDragStart),i.emitter.on("hitupdate",this.handleHitUpdate),i.emitter.on("dragend",this.handleDragEnd)}destroy(){this.dragging.destroy()}querySegEl(e){return Ko(e.subjectEl,".fc-event")}}function bwt(t,e,n,r){let i=t.context.dateEnv,a=t.dateSpan.range.start,o=e.dateSpan.range.start,s=Tb(a,o,i,t.largeUnit);if(n){if(i.add(r.start,s)r.start)return{endDelta:s};return null}class _wt{constructor(e){this.context=e,this.isRecentPointerDateSelect=!1,this.matchesCancel=!1,this.matchesEvent=!1,this.onSelect=r=>{r.jsEvent&&(this.isRecentPointerDateSelect=!0)},this.onDocumentPointerDown=r=>{let i=this.context.options.unselectCancel,a=tme(r.origEvent);this.matchesCancel=!!Ko(a,i),this.matchesEvent=!!Ko(a,bx.SELECTOR)},this.onDocumentPointerUp=r=>{let{context:i}=this,{documentPointer:a}=this,o=i.getCurrentData();if(!a.wasTouchScroll){if(o.dateSelection&&!this.isRecentPointerDateSelect){let s=i.options.unselectAuto;s&&(!s||!this.matchesCancel)&&i.calendarApi.unselect(r)}o.eventSelection&&!this.matchesEvent&&i.dispatch({type:"UNSELECT_EVENT"})}this.isRecentPointerDateSelect=!1};let n=this.documentPointer=new b1e(document);n.shouldIgnoreMove=!0,n.shouldWatchScroll=!1,n.emitter.on("pointerdown",this.onDocumentPointerDown),n.emitter.on("pointerup",this.onDocumentPointerUp),e.emitter.on("select",this.onSelect)}destroy(){this.context.emitter.off("select",this.onSelect),this.documentPointer.destroy()}}const vwt={fixedMirrorParent:He},ywt={dateClick:He,eventDragStart:He,eventDragStop:He,eventDrop:He,eventResizeStart:He,eventResizeStop:He,eventResize:He,drop:He,eventReceive:He,eventLeave:He};class Swt{constructor(e,n){this.receivingContext=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=i=>{this.dragMeta=this.buildDragMeta(i.subjectEl)},this.handleHitUpdate=(i,a,o)=>{let{dragging:s}=this.hitDragging,l=null,u=null,c=!1,f={affectedEvents:Qo(),mutatedEvents:Qo(),isEvent:this.dragMeta.create};i&&(l=i.context,this.canDropElOnCalendar(o.subjectEl,l)&&(u=xwt(i.dateSpan,this.dragMeta,l),f.mutatedEvents=sS(u),c=!vj(f,i.dateProfile,l),c&&(f.mutatedEvents=Qo(),u=null))),this.displayDrag(l,f),s.setMirrorIsVisible(a||!u||!document.querySelector(".fc-event-mirror")),c?tO():nO(),a||(s.setMirrorNeedsRevert(!u),this.receivingContext=l,this.droppableEvent=u)},this.handleDragEnd=i=>{let{receivingContext:a,droppableEvent:o}=this;if(this.clearDrag(),a&&o){let s=this.hitDragging.finalHit,l=s.context.viewApi,u=this.dragMeta;if(a.emitter.trigger("drop",Object.assign(Object.assign({},Aj(s.dateSpan,a)),{draggedEl:i.subjectEl,jsEvent:i.origEvent,view:l})),u.create){let c=sS(o);a.dispatch({type:"MERGE_EVENTS",eventStore:c}),i.isTouch&&a.dispatch({type:"SELECT_EVENT",eventInstanceId:o.instance.instanceId}),a.emitter.trigger("eventReceive",{event:new Mi(a,o.def,o.instance),relatedEvents:[],revert(){a.dispatch({type:"REMOVE_EVENTS",eventStore:c})},draggedEl:i.subjectEl,view:l})}}this.receivingContext=null,this.droppableEvent=null};let r=this.hitDragging=new mx(e,UT);r.requireInitial=!1,r.emitter.on("dragstart",this.handleDragStart),r.emitter.on("hitupdate",this.handleHitUpdate),r.emitter.on("dragend",this.handleDragEnd),this.suppliedDragMeta=n}buildDragMeta(e){return typeof this.suppliedDragMeta=="object"?S8(this.suppliedDragMeta):typeof this.suppliedDragMeta=="function"?S8(this.suppliedDragMeta(e)):Ewt(e)}displayDrag(e,n){let r=this.receivingContext;r&&r!==e&&r.dispatch({type:"UNSET_EVENT_DRAG"}),e&&e.dispatch({type:"SET_EVENT_DRAG",state:n})}clearDrag(){this.receivingContext&&this.receivingContext.dispatch({type:"UNSET_EVENT_DRAG"})}canDropElOnCalendar(e,n){let r=n.options.dropAccept;return typeof r=="function"?r.call(n.calendarApi,e):typeof r=="string"&&r?!!Jge(e,r):!0}}function xwt(t,e,n){let r=Object.assign({},e.leftoverProps);for(let c of n.pluginHooks.externalDefTransforms)Object.assign(r,c(t,e));let{refined:i,extra:a}=oj(r,n),o=LT(i,a,e.sourceId,t.allDay,n.options.forceEventDuration||!!e.duration,n),s=t.range.start;t.allDay&&e.startTime&&(s=n.dateEnv.add(s,e.startTime));let l=e.duration?n.dateEnv.add(s,e.duration):b8(t.allDay,s,n),u=aO(o.defId,{start:s,end:l});return{def:o,instance:u}}function Ewt(t){let e=Cwt(t,"event"),n=e?JSON.parse(e):{create:!1};return S8(n)}cO.dataAttrPrefix="";function Cwt(t,e){let n=cO.dataAttrPrefix,r=(n?n+"-":"")+e;return t.getAttribute("data-"+r)||""}class wwt{constructor(e,n={}){this.handlePointerDown=i=>{let{dragging:a}=this,{minDistance:o,longPressDelay:s}=this.settings;a.minDistance=o??(i.isTouch?0:cm.eventDragMinDistance),a.delay=i.isTouch?s??cm.longPressDelay:0},this.handleDragStart=i=>{i.isTouch&&this.dragging.delay&&i.subjectEl.classList.contains("fc-event")&&this.dragging.mirror.getMirrorEl().classList.add("fc-event-selected")},this.settings=n;let r=this.dragging=new W_(e);r.touchScrollAllowed=!1,n.itemSelector!=null&&(r.pointer.selector=n.itemSelector),n.appendTo!=null&&(r.mirror.parentNode=n.appendTo),r.emitter.on("pointerdown",this.handlePointerDown),r.emitter.on("dragstart",this.handleDragStart),new Swt(r,n.eventData)}destroy(){this.dragging.destroy()}}var Twt=Id({name:"@fullcalendar/interaction",componentInteractions:[uwt,dwt,bx,mwt],calendarInteractions:[_wt],elementDraggingImpl:W_,optionRefiners:vwt,listenerRefiners:ywt});const Awt="_widget_1xxz4_1",Y2={widget:Awt};function Rwt(){const t=new Date,e=t.getDate(),n=t.getMonth(),r=t.getFullYear();return{headerToolbar:{left:"",center:"title",right:""},events:[{title:"All Day Event",start:new Date(r,n,1),backgroundColor:"#79A5F0",textColor:"#fff",description:"Will be busy throughout the whole day"},{title:"Long Event",start:new Date(r,n,e+5),end:new Date(r,n,e+7),textColor:"#fff",description:"This conference should be worse visiting"},{id:999,title:"Blah Blah Car",start:new Date(r,n,e-3,16,0),allDay:!1,textColor:"#333",description:"Agree with this guy on arrival time"},{id:1e3,title:"Buy this template",start:new Date(r,n,e+3,12,0),allDay:!1,backgroundColor:"#555",textColor:"#fff",description:"Make sure everything is consistent first"},{title:"Got to school",start:new Date(r,n,e+16,12,0),end:new Date(r,n,e+16,13,0),backgroundColor:"#64bd63",textColor:"#fff",description:"Time to go back"},{title:"Study some Node",start:new Date(r,n,e+18,12,0),end:new Date(r,n,e+18,13,0),backgroundColor:"#79A5F0",textColor:"#fff",description:"Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices."},{title:"Click for Flatlogic",start:new Date(r,n,28),end:new Date(r,n,29),url:"http://flatlogic.com/",backgroundColor:"#e5603b",textColor:"#fff",description:"Creative solutions"}],selectable:!0,selectHelper:!0,editable:!0,droppable:!0}}function Owt(){const[t,e]=Ue.useState({}),[n,r]=Ue.useState(!1),[i,a]=Ue.useState(!1),[o,s]=Ue.useState("dayGridMonth"),l=Ue.useMemo(()=>Rwt(),[]),u=Ue.useMemo(()=>[eCt,jCt,Twt,JCt],[]),c=Ue.useRef(null),f=Ue.useRef(null);Ue.useEffect(()=>{if(!c.current)return;const D=new wwt(c.current,{itemSelector:".external-event"});return()=>{D.destroy()}},[]);const h=()=>f.current?.getApi(),m=D=>{D.draggedEl?.parentNode&&D.draggedEl.parentNode.removeChild(D.draggedEl)},b=D=>{e(P=>({...P,title:D.target.value}))},_=()=>{r(D=>!D)},y=()=>{a(D=>!D)},x=()=>{const D=h();D&&(D.addEvent(t),D.unselect(),_())},C=({start:D,end:P,allDay:j})=>{e({start:D,end:P,allDay:j,backgroundColor:"#64bd63",textColor:"#fff",editable:!0}),_()},A=D=>{e(D.event),y()},R=()=>{h()?.prev()},I=()=>{h()?.next()},O=()=>{h()?.today()},N=D=>{s(D),h()?.changeView(D)},k=D=>qr(D).format("YYYY-MM-DD");return d.jsxs(d.Fragment,{children:[d.jsxs(re,{container:!0,spacing:3,children:[d.jsxs(re,{size:{xs:12,md:4},children:[d.jsx(oe,{variant:"h3",style:{marginBottom:8},children:"Draggable Events"}),d.jsx(oe,{variant:"body2",children:"Just drap and drop events from there directly into the calendar."}),d.jsxs("div",{ref:c,children:[d.jsx("div",{"data-event":'{ "classNames": ["bg-success", "text-white"], "title": "Make a tea" }',className:Nt("d-flex","align-items-center","draggable","external-event",Y2.widget),children:d.jsxs(ce,{display:"flex",children:[d.jsx(ua,{color:"success",size:"large"}),d.jsx(oe,{variant:"body2",style:{marginLeft:8,color:"#000"},children:"Make a tea"})]})}),d.jsx("div",{"data-event":'{ "classNames": ["bg-warning", "text-white"], "title": "Open windows" }',className:Nt("d-flex","align-items-center","draggable","external-event",Y2.widget),children:d.jsxs(ce,{display:"flex",children:[d.jsx(ua,{color:"warning",size:"large"}),d.jsx(oe,{variant:"body2",style:{marginLeft:8,color:"#000"},children:"Open windows"})]})}),d.jsx("div",{"data-event":'{ "classNames": ["bg-purple", "text-white"], "title": "Some stuff" }',className:Nt("d-flex","align-items-center","draggable","external-event",Y2.widget),children:d.jsxs(ce,{display:"flex",children:[d.jsx(ua,{color:"info",size:"large"}),d.jsx(oe,{variant:"body2",style:{marginLeft:8,color:"#000"},children:"Some stuff"})]})})]})]}),d.jsx(re,{size:{xs:12,md:8},children:d.jsxs(et,{disableWidgetMenu:!0,children:[d.jsxs(re,{container:!0,direction:"row",justify:"space-between",alignItems:"center",children:[d.jsxs(re,{children:[d.jsx(pn,{onClick:R,"aria-label":"previous page",children:d.jsx(Xu,{})}),d.jsx(pn,{onClick:I,"aria-label":"next page",children:d.jsx(Qu,{})}),d.jsx(gt,{onClick:O,children:"Today"})]}),d.jsxs(re,{children:[d.jsx(gt,{onClick:()=>N("dayGridMonth"),color:o==="dayGridMonth"?"primary":"none",variant:o==="dayGridMonth"?"contained":"text",children:"Month"}),d.jsx(gt,{onClick:()=>N("timeGridWeek"),color:o==="timeGridWeek"?"primary":"none",variant:o==="timeGridWeek"?"contained":"text",style:{marginLeft:8},children:"Week"}),d.jsx(gt,{onClick:()=>N("timeGridDay"),color:o==="timeGridDay"?"primary":"none",variant:o==="timeGridDay"?"contained":"text",style:{marginLeft:8},children:"Day"}),d.jsx(gt,{onClick:()=>N("list"),color:o==="list"?"primary":"none",variant:o==="list"?"contained":"text",style:{marginLeft:8},children:"List"})]})]}),d.jsx(i1e,{ref:f,initialView:"dayGridMonth",plugins:u,select:C,eventClick:A,drop:m,...l})]})})]}),d.jsxs(Ku,{open:n,onClose:_,id:"news-close-modal",children:[d.jsx(of,{id:"news-close-modal-label",children:"Create New Event"}),d.jsxs(ce,{m:3,flexDirection:"column",children:[d.jsx(oe,{variant:"body2",style:{marginBottom:16},children:"Just enter event name to create a new one"}),d.jsx(wn,{onChange:b,className:Y2.calendarModalInput,value:t.title||"",name:"title",placeholder:"Title"}),d.jsxs(ce,{mt:2,children:[d.jsx(gt,{onClick:_,"data-dismiss":"modal",style:{marginRight:8},children:"Close"})," ",d.jsx(gt,{color:"success",variant:"contained",onClick:x,id:"news-widget-remove",children:"Create"})]})]})]}),d.jsxs(Ku,{open:i,onClose:y,id:"news-close-modal",children:[d.jsx(of,{id:"news-close-modal-label",children:t.title}),d.jsxs(ce,{m:3,children:[d.jsxs(oe,{style:{marginBottom:16},children:[d.jsx(Koe,{style:{marginRight:8}}),k(t.start)]}),d.jsx(oe,{variant:"body2",style:{marginBottom:16},children:t.extendedProps&&t.extendedProps.description}),d.jsx(gt,{color:"primary",variant:"contained",onClick:y,"data-dismiss":"modal",children:"OK"})]})]})]})}const S1e=[{id:100,label:"Profile",link:"/app/profile",icon:d.jsx(AA,{})},{id:0,label:"Dashboard",link:"/app/dashboard",icon:d.jsx(ese,{})},{id:1,label:"E-commerce",badge:"NodeJS",badgeColor:"success",link:"/app/ecommerce",icon:d.jsx(Qb,{}),children:[{label:"Product Manage",link:"/app/ecommerce/management"},{label:"Products Grid",link:"/app/ecommerce/gridproducts"},{label:"Product Page",link:"/app/ecommerce/product"}]},{id:2,label:"User",link:"/app/user",badge:"New",badgeColor:"secondary",icon:d.jsx(Y9,{}),children:[{label:"User List",link:"/app/users"},{label:"User Add",link:"/app/user/new"},{label:"User Edit",link:"/app/user/edit"}]},{id:3,label:"Documentation",link:"/documentation",icon:d.jsx(oV,{})},{id:4,type:"divider"},{id:5,type:"title",label:"TEMPLATE"},{id:6,label:"Core",link:"/app/core",icon:d.jsx(e5e,{}),children:[{label:"Typography",link:"/app/core/typography"},{label:"Colors",link:"/app/core/colors"},{label:"Grid",link:"/app/core/grid"}]},{id:7,label:"Tables",link:"/app/tables",icon:d.jsx(qoe,{}),children:[{label:"Tables Basic",link:"/app/tables/static"},{label:"Tables Dynamic",link:"/app/tables/dynamic"}]},{id:8,label:"UI Elements",link:"/app/ui",icon:d.jsx(y5e,{}),children:[{label:"Icons",link:"/app/ui/icons"},{label:"Badge",link:"/app/ui/badge"},{label:"Carousel",link:"/app/ui/carousel"},{label:"Cards",link:"/app/ui/cards"},{label:"Modal",link:"/app/ui/modal"},{label:"Notifications",link:"/app/ui/notifications"},{label:"Navbar",link:"/app/ui/navbar"},{label:"Tooltips",link:"/app/ui/tooltips"},{label:"Tabs",link:"/app/ui/tabs"},{label:"Pagination",link:"/app/tables/dynamic"},{label:"Progress",link:"/app/ui/progress"},{label:"Widget",link:"/app/ui/widget"}]},{id:9,label:"Forms",link:"/app/forms",icon:d.jsx(oV,{}),children:[{label:"Form Elements",link:"/app/forms/elements"},{label:"Form Validation",link:"/app/forms/validation"}]},{id:10,label:"Charts",link:"/app/charts",icon:d.jsx(i5e,{}),children:[{label:"Charts Overview",link:"/app/charts/overview"},{label:"Line Charts",link:"/app/charts/line"},{label:"Bar Charts",link:"/app/charts/bar"},{label:"Pie Charts",link:"/app/charts/pie"}]},{id:200,label:"Grid",link:"/app/grid",icon:d.jsx(ePe,{})},{id:11,label:"Maps",link:"/app/maps",icon:d.jsx(nse,{}),children:[{label:"Google Maps",link:"/app/maps/google"},{label:"Vector Map",link:"/app/maps/vector"}]},{id:12,label:"Extra",link:"/app/extra",icon:d.jsx(rse,{}),children:[{label:"Calendar",link:"/app/extra/calendar"},{label:"Invoice",link:"/app/extra/invoice"},{label:"Login Page",click:function(...t){const e="onLogin";t.forEach(n=>n.clickName===e?n():!1)}},{label:"Error Page",link:"/404"},{label:"Gallery",link:"/app/extra/gallery"},{label:"Search Result",link:"/app/extra/search"},{label:"Time Line",link:"/app/extra/timeline"}]},{id:13,label:"Menu Levels",icon:d.jsx(Zoe,{}),children:[{label:"Level 1.1"},{label:"Level 1.2",type:"nested",children:[{label:"Level 2.1"},{label:"Level 2.2",children:[{label:"Level 3.1"}]}]}]},{id:14,type:"divider"},{id:15,type:"title",label:"HELP"},{id:16,label:"Library",link:"https://flatlogic.com/templates/",icon:d.jsx(T5e,{}),ext:!0},{id:17,label:"Support",link:"https://flatlogic.com/forum/",icon:d.jsx(B5e,{}),ext:!0},{id:18,label:"FAQ",link:"https://flatlogic.com/forum/",icon:d.jsx(Joe,{}),ext:!0},{id:19,type:"divider"},{id:20,type:"title",label:"PROJECTS"},{id:21,label:"My recent",link:"",icon:d.jsx(ua,{size:"medium",color:"secondary"})},{id:22,label:"Starred",link:"",icon:d.jsx(ua,{size:"medium",color:"primary"})},{id:23,label:"Background",link:"",icon:d.jsx(ua,{size:"medium",color:"secondary"})},{id:24,type:"divider"},{id:25,label:"Add section",icon:d.jsx(KDe,{}),click:function(t,...e){const n="addSectionClick";e.forEach(r=>r.clickName===n?r(t):!1)}},{id:26,type:"divider"},{id:27,type:"margin"},{id:28,type:"divider"},{id:29,label:"Chat",icon:d.jsx(Gg,{}),click:function(t,...e){const n="chatSetOpen";e.forEach(r=>r.clickName===n?r(t):!1)}}],W2=fe(nr)(()=>({minWidth:72,textTransform:"none",fontWeight:400})),Iwt=()=>{const t=Ka(),e=z9(),[n,r]=Ue.useState(2),i=()=>{let l=t.pathname,u=l.split("/").slice(1).map(f=>f.split("-").map(h=>h[0].toUpperCase()+h.slice(1)).join(" "));const c=u.length;return u.map((f,h)=>{let m="/"+l.split("/").slice(1,h+2).join("/");return d.jsx(q0,{separator:d.jsx(Mk,{fontSize:"small"}),"aria-label":"breadcrumb",children:d.jsx(oe,{variant:"h6",color:c===h+1?"primary":"",children:c===h+1?f:d.jsx(gc,{to:m,style:{color:"unset",textDecoration:"none"},children:f})})},h+"_b")})},a=(l,u)=>{r(u)},o=()=>{let l=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];const u=["January","February","March","April","May","June","July","August","September","October","November","December"];let c=new Date,f=c.getFullYear(),h=c.getMonth(),m=c.getDate(),b=c.getDay()+1;return`${m} ${u[h]} ${f}, ${l[b-1]}`};function s(l){return{id:`simple-tab-${l}`,"aria-controls":`simple-tabpanel-${l}`}}return d.jsx(et,{disableWidgetMenu:!0,inheritHeight:!0,className:e.margin,bodyClass:e.navPadding,children:d.jsxs(re,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",wrap:"nowrap",style:{overflowX:"auto"},children:[S1e.map(l=>{if(t.pathname.includes(l.link)&&l.link&&l.label==="Dashboard")return d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(q0,{"aria-label":"breadcrumb",children:d.jsx(oe,{variant:"h4",children:l.label})}),t.pathname.includes("/app/dashboard")&&d.jsxs(Na,{value:n,onChange:a,"aria-label":"simple tabs example",variant:"scrollable",scrollButtons:"auto",style:{marginLeft:38},children:[d.jsx(W2,{label:"Today",...s(0)}),d.jsx(W2,{label:"This week",...s(1)}),d.jsx(W2,{label:"This month",...s(2)}),d.jsx(W2,{label:"This year",...s(3)})]})]},l.id)}),t.pathname.includes("/app/dashboard")?d.jsxs(ce,{display:"flex",alignItems:"center",children:[d.jsx(Koe,{className:e.calendarIcon}),d.jsx(oe,{className:e.date,style:{marginRight:38},children:o()}),d.jsx(gt,{variant:"contained",color:"secondary",className:e.button,children:"Latest Reports"})]}):d.jsx(q0,{separator:d.jsx(Mk,{fontSize:"small"}),"aria-label":"breadcrumb",children:i()})]})})};var Nwt=function(e){return Mwt(e)&&!Dwt(e)};function Mwt(t){return!!t&&typeof t=="object"}function Dwt(t){var e=Object.prototype.toString.call(t);return e==="[object RegExp]"||e==="[object Date]"||Lwt(t)}var Pwt=typeof Symbol=="function"&&Symbol.for,kwt=Pwt?Symbol.for("react.element"):60103;function Lwt(t){return t.$$typeof===kwt}function Bwt(t){return Array.isArray(t)?[]:{}}function $T(t,e){return e.clone!==!1&&e.isMergeableObject(t)?lS(Bwt(t),t,e):t}function Fwt(t,e,n){return t.concat(e).map(function(r){return $T(r,n)})}function jwt(t,e,n){var r={};return n.isMergeableObject(t)&&Object.keys(t).forEach(function(i){r[i]=$T(t[i],n)}),Object.keys(e).forEach(function(i){!n.isMergeableObject(e[i])||!t[i]?r[i]=$T(e[i],n):r[i]=lS(t[i],e[i],n)}),r}function lS(t,e,n){n=n||{},n.arrayMerge=n.arrayMerge||Fwt,n.isMergeableObject=n.isMergeableObject||Nwt;var r=Array.isArray(e),i=Array.isArray(t),a=r===i;return a?r?n.arrayMerge(t,e,n):jwt(t,e,n):$T(e,n)}lS.all=function(e,n){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(r,i){return lS(r,i,n)},{})};var T8=lS,x1e=typeof globalThis=="object"&&globalThis&&globalThis.Object===Object&&globalThis,Uwt=typeof self=="object"&&self&&self.Object===Object&&self,Nd=x1e||Uwt||Function("return this")(),vh=Nd.Symbol,E1e=Object.prototype,zwt=E1e.hasOwnProperty,Hwt=E1e.toString,T0=vh?vh.toStringTag:void 0;function $wt(t){var e=zwt.call(t,T0),n=t[T0];try{t[T0]=void 0;var r=!0}catch{}var i=Hwt.call(t);return r&&(e?t[T0]=n:delete t[T0]),i}var Gwt=Object.prototype,Vwt=Gwt.toString;function Ywt(t){return Vwt.call(t)}var Wwt="[object Null]",qwt="[object Undefined]",Ere=vh?vh.toStringTag:void 0;function qm(t){return t==null?t===void 0?qwt:Wwt:Ere&&Ere in Object(t)?$wt(t):Ywt(t)}function C1e(t,e){return function(n){return t(e(n))}}var Rj=C1e(Object.getPrototypeOf,Object);function Km(t){return t!=null&&typeof t=="object"}var Kwt="[object Object]",Xwt=Function.prototype,Qwt=Object.prototype,w1e=Xwt.toString,Zwt=Qwt.hasOwnProperty,Jwt=w1e.call(Object);function Cre(t){if(!Km(t)||qm(t)!=Kwt)return!1;var e=Rj(t);if(e===null)return!0;var n=Zwt.call(e,"constructor")&&e.constructor;return typeof n=="function"&&n instanceof n&&w1e.call(n)==Jwt}function eTt(){this.__data__=[],this.size=0}function T1e(t,e){return t===e||t!==t&&e!==e}function fO(t,e){for(var n=t.length;n--;)if(T1e(t[n][0],e))return n;return-1}var tTt=Array.prototype,nTt=tTt.splice;function rTt(t){var e=this.__data__,n=fO(e,t);if(n<0)return!1;var r=e.length-1;return n==r?e.pop():nTt.call(e,n,1),--this.size,!0}function iTt(t){var e=this.__data__,n=fO(e,t);return n<0?void 0:e[n][1]}function aTt(t){return fO(this.__data__,t)>-1}function oTt(t,e){var n=this.__data__,r=fO(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function Xf(t){var e=-1,n=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=oAt}var sAt="[object Arguments]",lAt="[object Array]",cAt="[object Boolean]",uAt="[object Date]",dAt="[object Error]",fAt="[object Function]",pAt="[object Map]",hAt="[object Number]",gAt="[object Object]",mAt="[object RegExp]",bAt="[object Set]",_At="[object String]",vAt="[object WeakMap]",yAt="[object ArrayBuffer]",SAt="[object DataView]",xAt="[object Float32Array]",EAt="[object Float64Array]",CAt="[object Int8Array]",wAt="[object Int16Array]",TAt="[object Int32Array]",AAt="[object Uint8Array]",RAt="[object Uint8ClampedArray]",OAt="[object Uint16Array]",IAt="[object Uint32Array]",Ai={};Ai[xAt]=Ai[EAt]=Ai[CAt]=Ai[wAt]=Ai[TAt]=Ai[AAt]=Ai[RAt]=Ai[OAt]=Ai[IAt]=!0;Ai[sAt]=Ai[lAt]=Ai[yAt]=Ai[cAt]=Ai[SAt]=Ai[uAt]=Ai[dAt]=Ai[fAt]=Ai[pAt]=Ai[hAt]=Ai[gAt]=Ai[mAt]=Ai[bAt]=Ai[_At]=Ai[vAt]=!1;function NAt(t){return Km(t)&&D1e(t.length)&&!!Ai[qm(t)]}function Oj(t){return function(e){return t(e)}}var P1e=typeof Rl=="object"&&Rl&&!Rl.nodeType&&Rl,fy=P1e&&typeof Ol=="object"&&Ol&&!Ol.nodeType&&Ol,MAt=fy&&fy.exports===P1e,L6=MAt&&x1e.process,b_=(function(){try{var t=fy&&fy.require&&fy.require("util").types;return t||L6&&L6.binding&&L6.binding("util")}catch{}})(),Ire=b_&&b_.isTypedArray,DAt=Ire?Oj(Ire):NAt,PAt=Object.prototype,kAt=PAt.hasOwnProperty;function k1e(t,e){var n=vx(t),r=!n&&JTt(t),i=!n&&!r&&M1e(t),a=!n&&!r&&!i&&DAt(t),o=n||r||i||a,s=o?KTt(t.length,String):[],l=s.length;for(var u in t)(e||kAt.call(t,u))&&!(o&&(u=="length"||i&&(u=="offset"||u=="parent")||a&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||aAt(u,l)))&&s.push(u);return s}var LAt=Object.prototype;function Ij(t){var e=t&&t.constructor,n=typeof e=="function"&&e.prototype||LAt;return t===n}var BAt=C1e(Object.keys,Object),FAt=Object.prototype,jAt=FAt.hasOwnProperty;function UAt(t){if(!Ij(t))return BAt(t);var e=[];for(var n in Object(t))jAt.call(t,n)&&n!="constructor"&&e.push(n);return e}function L1e(t){return t!=null&&D1e(t.length)&&!A1e(t)}function Nj(t){return L1e(t)?k1e(t):UAt(t)}function zAt(t,e){return t&&hO(e,Nj(e),t)}function HAt(t){var e=[];if(t!=null)for(var n in Object(t))e.push(n);return e}var $At=Object.prototype,GAt=$At.hasOwnProperty;function VAt(t){if(!_x(t))return HAt(t);var e=Ij(t),n=[];for(var r in t)r=="constructor"&&(e||!GAt.call(t,r))||n.push(r);return n}function Mj(t){return L1e(t)?k1e(t,!0):VAt(t)}function YAt(t,e){return t&&hO(e,Mj(e),t)}var B1e=typeof Rl=="object"&&Rl&&!Rl.nodeType&&Rl,Nre=B1e&&typeof Ol=="object"&&Ol&&!Ol.nodeType&&Ol,WAt=Nre&&Nre.exports===B1e,Mre=WAt?Nd.Buffer:void 0,Dre=Mre?Mre.allocUnsafe:void 0;function qAt(t,e){if(e)return t.slice();var n=t.length,r=Dre?Dre(n):new t.constructor(n);return t.copy(r),r}function F1e(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++n=0)&&(n[i]=t[i]);return n}function Xre(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var gO=E.createContext(void 0);gO.displayName="FormikContext";var NOt=gO.Provider,MOt=gO.Consumer;function DOt(){var t=E.useContext(gO);return t}var Qre=function(e){return Array.isArray(e)&&e.length===0},Ho=function(e){return typeof e=="function"},yx=function(e){return e!==null&&typeof e=="object"},POt=function(e){return String(Math.floor(Number(e)))===e},F6=function(e){return Object.prototype.toString.call(e)==="[object String]"},Bj=function(e){return E.Children.count(e)===0},j6=function(e){return yx(e)&&Ho(e.then)};function Gr(t,e,n,r){r===void 0&&(r=0);for(var i=q1e(e);t&&r=0?[]:{}}}return(a===0?t:i)[o[a]]===n?t:(n===void 0?delete i[o[a]]:i[o[a]]=n,a===0&&n===void 0&&delete r[o[a]],r)}function X1e(t,e,n,r){n===void 0&&(n=new WeakMap),r===void 0&&(r={});for(var i=0,a=Object.keys(t);i0?nt.map(function(ut){return P(ut,Gr(ge,ut))}):[Promise.resolve("DO_NOT_DELETE_YOU_WILL_BE_FIRED")];return Promise.all(ze).then(function(ut){return ut.reduce(function(dt,yt,jt){return yt==="DO_NOT_DELETE_YOU_WILL_BE_FIRED"||yt&&(dt=gd(dt,nt[jt],yt)),dt},{})})},[P]),M=E.useCallback(function(ge){return Promise.all([j(ge),h.validationSchema?D(ge):{},h.validate?k(ge):{}]).then(function(nt){var ze=nt[0],ut=nt[1],dt=nt[2],yt=T8.all([ze,ut,dt],{arrayMerge:UOt});return yt})},[h.validate,h.validationSchema,j,k,D]),z=nc(function(ge){return ge===void 0&&(ge=O.values),N({type:"SET_ISVALIDATING",payload:!0}),M(ge).then(function(nt){return x.current&&(N({type:"SET_ISVALIDATING",payload:!1}),N({type:"SET_ERRORS",payload:nt})),nt})});E.useEffect(function(){o&&x.current===!0&&jp(m.current,h.initialValues)&&z(m.current)},[o,z]);var G=E.useCallback(function(ge){var nt=ge&&ge.values?ge.values:m.current,ze=ge&&ge.errors?ge.errors:b.current?b.current:h.initialErrors||{},ut=ge&&ge.touched?ge.touched:_.current?_.current:h.initialTouched||{},dt=ge&&ge.status?ge.status:y.current?y.current:h.initialStatus;m.current=nt,b.current=ze,_.current=ut,y.current=dt;var yt=function(){N({type:"RESET_FORM",payload:{isSubmitting:!!ge&&!!ge.isSubmitting,errors:ze,touched:ut,status:dt,values:nt,isValidating:!!ge&&!!ge.isValidating,submitCount:ge&&ge.submitCount&&typeof ge.submitCount=="number"?ge.submitCount:0}})};if(h.onReset){var jt=h.onReset(O.values,Xe);j6(jt)?jt.then(yt):yt()}else yt()},[h.initialErrors,h.initialStatus,h.initialTouched,h.onReset]);E.useEffect(function(){x.current===!0&&!jp(m.current,h.initialValues)&&u&&(m.current=h.initialValues,G(),o&&z(m.current))},[u,h.initialValues,G,o,z]),E.useEffect(function(){u&&x.current===!0&&!jp(b.current,h.initialErrors)&&(b.current=h.initialErrors||yg,N({type:"SET_ERRORS",payload:h.initialErrors||yg}))},[u,h.initialErrors]),E.useEffect(function(){u&&x.current===!0&&!jp(_.current,h.initialTouched)&&(_.current=h.initialTouched||q2,N({type:"SET_TOUCHED",payload:h.initialTouched||q2}))},[u,h.initialTouched]),E.useEffect(function(){u&&x.current===!0&&!jp(y.current,h.initialStatus)&&(y.current=h.initialStatus,N({type:"SET_STATUS",payload:h.initialStatus}))},[u,h.initialStatus,h.initialTouched]);var Y=nc(function(ge){if(C.current[ge]&&Ho(C.current[ge].validate)){var nt=Gr(O.values,ge),ze=C.current[ge].validate(nt);return j6(ze)?(N({type:"SET_ISVALIDATING",payload:!0}),ze.then(function(ut){return ut}).then(function(ut){N({type:"SET_FIELD_ERROR",payload:{field:ge,value:ut}}),N({type:"SET_ISVALIDATING",payload:!1})})):(N({type:"SET_FIELD_ERROR",payload:{field:ge,value:ze}}),Promise.resolve(ze))}else if(h.validationSchema)return N({type:"SET_ISVALIDATING",payload:!0}),D(O.values,ge).then(function(ut){return ut}).then(function(ut){N({type:"SET_FIELD_ERROR",payload:{field:ge,value:Gr(ut,ge)}}),N({type:"SET_ISVALIDATING",payload:!1})});return Promise.resolve()}),H=E.useCallback(function(ge,nt){var ze=nt.validate;C.current[ge]={validate:ze}},[]),W=E.useCallback(function(ge){delete C.current[ge]},[]),q=nc(function(ge,nt){N({type:"SET_TOUCHED",payload:ge});var ze=nt===void 0?i:nt;return ze?z(O.values):Promise.resolve()}),Q=E.useCallback(function(ge){N({type:"SET_ERRORS",payload:ge})},[]),X=nc(function(ge,nt){var ze=Ho(ge)?ge(O.values):ge;N({type:"SET_VALUES",payload:ze});var ut=nt===void 0?n:nt;return ut?z(ze):Promise.resolve()}),$=E.useCallback(function(ge,nt){N({type:"SET_FIELD_ERROR",payload:{field:ge,value:nt}})},[]),K=nc(function(ge,nt,ze){var ut=Ho(nt)?nt(Gr(O.values,ge)):nt;N({type:"SET_FIELD_VALUE",payload:{field:ge,value:ut}});var dt=ze===void 0?n:ze;return dt?z(gd(O.values,ge,ut)):Promise.resolve()}),te=E.useCallback(function(ge,nt){var ze=nt,ut=ge,dt;if(!F6(ge)){ge.persist&&ge.persist();var yt=ge.target?ge.target:ge.currentTarget,jt=yt.type,ft=yt.name,Pt=yt.id,rt=yt.value,St=yt.checked;yt.outerHTML;var Mt=yt.options,Yt=yt.multiple;ze=nt||ft||Pt,ut=/number|range/.test(jt)?(dt=parseFloat(rt),isNaN(dt)?"":dt):/checkbox/.test(jt)?HOt(Gr(O.values,ze),St,rt):Mt&&Yt?zOt(Mt):rt}ze&&K(ze,ut)},[K,O.values]),ie=nc(function(ge){if(F6(ge))return function(nt){return te(nt,ge)};te(ge)}),se=nc(function(ge,nt,ze){nt===void 0&&(nt=!0),N({type:"SET_FIELD_TOUCHED",payload:{field:ge,value:nt}});var ut=ze===void 0?i:ze;return ut?z(O.values):Promise.resolve()}),le=E.useCallback(function(ge,nt){ge.persist&&ge.persist();var ze=ge.target,ut=ze.name,dt=ze.id;ze.outerHTML;var yt=nt||ut||dt;se(yt,!0)},[se]),be=nc(function(ge){if(F6(ge))return function(nt){return le(nt,ge)};le(ge)}),we=E.useCallback(function(ge){Ho(ge)?N({type:"SET_FORMIK_STATE",payload:ge}):N({type:"SET_FORMIK_STATE",payload:function(){return ge}})},[]),ue=E.useCallback(function(ge){N({type:"SET_STATUS",payload:ge})},[]),ye=E.useCallback(function(ge){N({type:"SET_ISSUBMITTING",payload:ge})},[]),Ae=nc(function(){return N({type:"SUBMIT_ATTEMPT"}),z().then(function(ge){var nt=ge instanceof Error,ze=!nt&&Object.keys(ge).length===0;if(ze){var ut;try{if(ut=Be(),ut===void 0)return}catch(dt){throw dt}return Promise.resolve(ut).then(function(dt){return x.current&&N({type:"SUBMIT_SUCCESS"}),dt}).catch(function(dt){if(x.current)throw N({type:"SUBMIT_FAILURE"}),dt})}else if(x.current&&(N({type:"SUBMIT_FAILURE"}),nt))throw ge})}),ve=nc(function(ge){ge&&ge.preventDefault&&Ho(ge.preventDefault)&&ge.preventDefault(),ge&&ge.stopPropagation&&Ho(ge.stopPropagation)&&ge.stopPropagation(),Ae().catch(function(nt){console.warn("Warning: An unhandled error was caught from submitForm()",nt)})}),Xe={resetForm:G,validateForm:z,validateField:Y,setErrors:Q,setFieldError:$,setFieldTouched:se,setFieldValue:K,setStatus:ue,setSubmitting:ye,setTouched:q,setValues:X,setFormikState:we,submitForm:Ae},Be=nc(function(){return c(O.values,Xe)}),Ne=nc(function(ge){ge&&ge.preventDefault&&Ho(ge.preventDefault)&&ge.preventDefault(),ge&&ge.stopPropagation&&Ho(ge.stopPropagation)&&ge.stopPropagation(),G()}),Je=E.useCallback(function(ge){return{value:Gr(O.values,ge),error:Gr(O.errors,ge),touched:!!Gr(O.touched,ge),initialValue:Gr(m.current,ge),initialTouched:!!Gr(_.current,ge),initialError:Gr(b.current,ge)}},[O.errors,O.touched,O.values]),De=E.useCallback(function(ge){return{setValue:function(ze,ut){return K(ge,ze,ut)},setTouched:function(ze,ut){return se(ge,ze,ut)},setError:function(ze){return $(ge,ze)}}},[K,se,$]),Oe=E.useCallback(function(ge){var nt=yx(ge),ze=nt?ge.name:ge,ut=Gr(O.values,ze),dt={name:ze,value:ut,onChange:ie,onBlur:be};if(nt){var yt=ge.type,jt=ge.value,ft=ge.as,Pt=ge.multiple;yt==="checkbox"?jt===void 0?dt.checked=!!ut:(dt.checked=!!(Array.isArray(ut)&&~ut.indexOf(jt)),dt.value=jt):yt==="radio"?(dt.checked=ut===jt,dt.value=jt):ft==="select"&&Pt&&(dt.value=dt.value||[],dt.multiple=!0)}return dt},[be,ie,O.values]),ht=E.useMemo(function(){return!jp(m.current,O.values)},[m.current,O.values]),ot=E.useMemo(function(){return typeof s<"u"?ht?O.errors&&Object.keys(O.errors).length===0:s!==!1&&Ho(s)?s(h):s:O.errors&&Object.keys(O.errors).length===0},[s,ht,O.errors,h]),At=pi({},O,{initialValues:m.current,initialErrors:b.current,initialTouched:_.current,initialStatus:y.current,handleBlur:be,handleChange:ie,handleReset:Ne,handleSubmit:ve,resetForm:G,setErrors:Q,setFormikState:we,setFieldTouched:se,setFieldValue:K,setFieldError:$,setStatus:ue,setSubmitting:ye,setTouched:q,setValues:X,submitForm:Ae,validateForm:z,validateField:Y,isValid:ot,dirty:ht,unregisterField:W,registerField:H,getFieldProps:Oe,getFieldMeta:Je,getFieldHelpers:De,validateOnBlur:i,validateOnChange:n,validateOnMount:o});return At}function BOt(t){var e=LOt(t),n=t.component,r=t.children,i=t.render,a=t.innerRef;return E.useImperativeHandle(a,function(){return e}),E.createElement(NOt,{value:e},n?E.createElement(n,e):i?i(e):r?Ho(r)?r(e):Bj(r)?null:E.Children.only(r):null)}function FOt(t){var e={};if(t.inner){if(t.inner.length===0)return gd(e,t.path,t.message);for(var i=t.inner,n=Array.isArray(i),r=0,i=n?i:i[Symbol.iterator]();;){var a;if(n){if(r>=i.length)break;a=i[r++]}else{if(r=i.next(),r.done)break;a=r.value}var o=a;Gr(e,o.path)||(e=gd(e,o.path,o.message))}}return e}function jOt(t,e,n,r){n===void 0&&(n=!1);var i=N8(t);return e[n?"validateSync":"validate"](i,{abortEarly:!1,context:i})}function N8(t){var e=Array.isArray(t)?[]:{};for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r=String(n);Array.isArray(t[r])===!0?e[r]=t[r].map(function(i){return Array.isArray(i)===!0||Cre(i)?N8(i):i!==""?i:void 0}):Cre(t[r])?e[r]=N8(t[r]):e[r]=t[r]!==""?t[r]:void 0}return e}function UOt(t,e,n){var r=t.slice();return e.forEach(function(a,o){if(typeof r[o]>"u"){var s=n.clone!==!1,l=s&&n.isMergeableObject(a);r[o]=l?T8(Array.isArray(a)?[]:{},a,n):a}else n.isMergeableObject(a)?r[o]=T8(t[o],a,n):t.indexOf(a)===-1&&r.push(a)}),r}function zOt(t){return Array.from(t).filter(function(e){return e.selected}).map(function(e){return e.value})}function HOt(t,e,n){if(typeof t=="boolean")return!!e;var r=[],i=!1,a=-1;if(Array.isArray(t))r=t,a=t.indexOf(n),i=a>=0;else if(!n||n=="true"||n=="false")return!!e;return e&&n&&!i?r.concat(n):i?r.slice(0,a).concat(r.slice(a+1)):r}var $Ot=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u"?E.useLayoutEffect:E.useEffect;function nc(t){var e=E.useRef(t);return $Ot(function(){e.current=t}),E.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;ir?i:r},0);return Array.from(pi({},e,{length:n+1}))}else return[]},Zre=function(e,n){var r=typeof e=="function"?e:n;return function(i){if(Array.isArray(i)||yx(i)){var a=Lm(i);return r(a)}return i}},KOt=(function(t){K1e(e,t);function e(r){var i;return i=t.call(this,r)||this,i.updateArrayField=function(a,o,s){var l=i.props,u=l.name,c=l.formik.setFormikState;c(function(f){var h=Zre(s,a),m=Zre(o,a),b=gd(f.values,u,a(Gr(f.values,u))),_=s?h(Gr(f.errors,u)):void 0,y=o?m(Gr(f.touched,u)):void 0;return Qre(_)&&(_=void 0),Qre(y)&&(y=void 0),pi({},f,{values:b,errors:s?gd(f.errors,u,_):f.errors,touched:o?gd(f.touched,u,y):f.touched})})},i.push=function(a){return i.updateArrayField(function(o){return[].concat(Lm(o),[z0(a)])},!1,!1)},i.handlePush=function(a){return function(){return i.push(a)}},i.swap=function(a,o){return i.updateArrayField(function(s){return WOt(s,a,o)},!0,!0)},i.handleSwap=function(a,o){return function(){return i.swap(a,o)}},i.move=function(a,o){return i.updateArrayField(function(s){return YOt(s,a,o)},!0,!0)},i.handleMove=function(a,o){return function(){return i.move(a,o)}},i.insert=function(a,o){return i.updateArrayField(function(s){return U6(s,a,o)},function(s){return U6(s,a,null)},function(s){return U6(s,a,null)})},i.handleInsert=function(a,o){return function(){return i.insert(a,o)}},i.replace=function(a,o){return i.updateArrayField(function(s){return qOt(s,a,o)},!1,!1)},i.handleReplace=function(a,o){return function(){return i.replace(a,o)}},i.unshift=function(a){var o=-1;return i.updateArrayField(function(s){var l=s?[a].concat(s):[a];return o=l.length,l},function(s){return s?[null].concat(s):[null]},function(s){return s?[null].concat(s):[null]}),o},i.handleUnshift=function(a){return function(){return i.unshift(a)}},i.handleRemove=function(a){return function(){return i.remove(a)}},i.handlePop=function(){return function(){return i.pop()}},i.remove=i.remove.bind(Xre(i)),i.pop=i.pop.bind(Xre(i)),i}var n=e.prototype;return n.componentDidUpdate=function(i){this.props.validateOnChange&&this.props.formik.validateOnChange&&!jp(Gr(i.formik.values,i.name),Gr(this.props.formik.values,this.props.name))&&this.props.formik.validateForm(this.props.formik.values)},n.remove=function(i){var a;return this.updateArrayField(function(o){var s=o?Lm(o):[];return a||(a=s[i]),Ho(s.splice)&&s.splice(i,1),Ho(s.every)&&s.every(function(l){return l===void 0})?[]:s},!0,!0),a},n.pop=function(){var i;return this.updateArrayField(function(a){var o=a.slice();return i||(i=o&&o.pop&&o.pop()),o},!0,!0),i},n.render=function(){var i={push:this.push,pop:this.pop,swap:this.swap,move:this.move,insert:this.insert,replace:this.replace,unshift:this.unshift,remove:this.remove,handlePush:this.handlePush,handlePop:this.handlePop,handleSwap:this.handleSwap,handleMove:this.handleMove,handleInsert:this.handleInsert,handleReplace:this.handleReplace,handleUnshift:this.handleUnshift,handleRemove:this.handleRemove},a=this.props,o=a.component,s=a.render,l=a.children,u=a.name,c=a.formik,f=Xg(c,["validate","validationSchema"]),h=pi({},i,{form:f,name:u});return o?E.createElement(o,h):s?s(h):l?typeof l=="function"?l(h):Bj(l)?null:E.Children.only(l):null},e})(E.Component);KOt.defaultProps={validateOnChange:!0};var XOt=(function(t){K1e(e,t);function e(r){var i;i=t.call(this,r)||this;var a=r.render,o=r.children;return r.component,r.as,r.name,a&&o&&!Bj(o)&&void 0,i}var n=e.prototype;return n.shouldComponentUpdate=function(i){return this.props.shouldUpdate?this.props.shouldUpdate(i,this.props):i.name!==this.props.name||Gr(i.formik.values,this.props.name)!==Gr(this.props.formik.values,this.props.name)||Gr(i.formik.errors,this.props.name)!==Gr(this.props.formik.errors,this.props.name)||Gr(i.formik.touched,this.props.name)!==Gr(this.props.formik.touched,this.props.name)||Object.keys(this.props).length!==Object.keys(i).length||i.formik.isSubmitting!==this.props.formik.isSubmitting},n.componentDidMount=function(){this.props.formik.registerField(this.props.name,{validate:this.props.validate})},n.componentDidUpdate=function(i){this.props.name!==i.name&&(this.props.formik.unregisterField(i.name),this.props.formik.registerField(this.props.name,{validate:this.props.validate})),this.props.validate!==i.validate&&this.props.formik.registerField(this.props.name,{validate:this.props.validate})},n.componentWillUnmount=function(){this.props.formik.unregisterField(this.props.name)},n.render=function(){var i=this.props,a=i.name,o=i.render,s=i.as,l=i.children,u=i.component,c=i.formik,f=Xg(i,["validate","name","render","as","children","component","shouldUpdate","formik"]),h=Xg(c,["validate","validationSchema"]),m=c.getFieldProps(pi({name:a},f)),b={value:Gr(c.values,a),error:Gr(c.errors,a),touched:!!Gr(c.touched,a),initialValue:Gr(c.initialValues,a),initialTouched:!!Gr(c.initialTouched,a),initialError:Gr(c.initialErrors,a)},_={field:m,meta:b,form:h};if(o)return o(_);if(Ho(l))return l(_);if(u){if(typeof u=="string"){var y=f.innerRef,x=Xg(f,["innerRef"]);return E.createElement(u,pi({ref:y},m,x),l)}return E.createElement(u,pi({field:m,form:c},f),l)}var C=s||"input";if(typeof C=="string"){var A=f.innerRef,R=Xg(f,["innerRef"]);return E.createElement(C,pi({ref:A},m,R),l)}return E.createElement(C,pi({},m,f),l)},e})(E.Component),mO=VOt(XOt);function GT({size:t}){return d.jsx("div",{children:d.jsx(mc,{size:t})})}GT.propTypes={size:pe.number.isRequired};GT.defaultProps={size:21};class bO{static displayableError(e,n,r=null){if(r)return r;if(!e.touched[n])return null;const i=e.errors[n];return i?Array.isArray(i)?i[0]:i:null}static validateStatus(e,n,r){return this.displayableError(e,n,r)?"is-invalid":""}}const pb=t=>{const{name:e,schema:n,hint:r,placeholder:i,autoFocus:a,autoComplete:o,inputProps:s,errorMessage:l,multiline:u}=t,{label:c}=n[e];return d.jsx(mO,{name:e,children:({form:f})=>d.jsxs(d.Fragment,{children:[d.jsx(wn,{id:"outlined-basic",variant:"outlined",fullWidth:!0,label:c,multiline:u,rows:u&&4,onChange:h=>{f.setFieldValue(e,h.target.value),f.setFieldTouched(e)},value:f.values[e]||"",placeholder:i||void 0,autoFocus:a||void 0,autoComplete:o||void 0,...s}),d.jsx("div",{className:"invalid-feedback",children:bO.displayableError(f,e,l)}),!!r&&d.jsx("small",{className:"form-text text-muted",children:r})]})})};pb.propTypes={name:pe.string.isRequired,required:pe.bool,type:pe.string,hint:pe.string,autoFocus:pe.bool,size:pe.string,prefix:pe.string,placeholder:pe.string,errorMessage:pe.string,inputProps:pe.object};const Q1e=t=>{const{name:e,schema:n,hint:r,errorMessage:i}=t,{label:a}=n[e];return d.jsx(mO,{name:e,children:({form:o})=>d.jsxs(d.Fragment,{children:[d.jsxs(rw,{children:[d.jsx(xy,{children:a}),d.jsx($s,{control:d.jsx(xs,{color:"default",onChange:s=>{o.setFieldValue(e,s.target.checked),o.setFieldTouched(e)},checked:!!o.values[e],inputProps:{"aria-label":"controlled"}})})]}),d.jsx("div",{className:"invalid-feedback",children:bO.displayableError(o,e,i)}),!!r&&d.jsx("small",{className:"form-text text-muted",children:r})]})})};Q1e.propTypes={name:pe.string.isRequired,required:pe.bool,hint:pe.string,size:pe.string,errorMessage:pe.string,inputProps:pe.object};const Z1e=t=>{const{name:e,schema:n,hint:r,errorMessage:i}=t,{label:a,options:o}=n[e];return d.jsx(mO,{name:e,children:({form:s})=>d.jsxs(d.Fragment,{children:[d.jsxs(Vo,{children:[d.jsx(xy,{id:"demo-row-radio-buttons-group-label",children:a}),d.jsx(koe,{row:!0,"aria-labelledby":"demo-row-radio-buttons-group-label",name:"row-radio-buttons-group",onChange:l=>{s.setFieldValue(e,l.target.value),s.setFieldTouched(e)},value:s.values[e]||"",children:o.map(l=>d.jsx($s,{value:l.value,control:d.jsx(th,{}),label:l.label},l.value))})]}),d.jsx("div",{className:"invalid-feedback",children:bO.displayableError(s,e,i)}),!!r&&d.jsx("small",{className:"form-text text-muted",children:r})]})})};Z1e.propTypes={name:pe.string.isRequired,schema:pe.object.isRequired,label:pe.string,hint:pe.string,required:pe.bool,errorMessage:pe.string};function Jre(t){return t?/(?:\.([^.]+))?$/.exec(t)[1]:null}class eie{static validate(e,n){if(!n)return;if(n.image&&!e.type.startsWith("image"))throw new Error("You must upload an image");if(n.size&&e.size>n.size)throw new Error("File is too big.");const r=Jre(e.name);if(n.formats&&!n.formats.includes(r))throw new Error("Invalid format")}static async upload(e,n,r){try{this.validate(n,r)}catch(u){return Promise.reject(u)}const i=Jre(n.name),a=DA(),o=`${a}.${i}`,s=`${e}/${o}`,l=await this.uploadToServer(n,e,o);return{id:a,name:n.name,sizeInBytes:n.size,privateUrl:s,publicUrl:l,new:!0}}static async uploadToServer(e,n,r){const i=new FormData;i.append("file",e),i.append("filename",r);const a=`/file/upload/${n}`;await Ln.post(a,i,{headers:{"Content-Type":"multipart/form-data"}});const o=`${n}/${r}`;return`${wr.baseURLApi}/file/download?privateUrl=${o}`}}let M8=null;function tie(t){M8=t}function nie(t,e={}){if(M8){M8(t,e);return}typeof window<"u"&&window.location.assign(t)}const QOt="Error";function K2(t){if(t&&t.response&&t.response.data){const e=t.response.data;return e.error&&e.error.message?e.error.message:String(e)}return t.message||QOt}function z6(t){return t&&t.response&&t.response.status?t.response.status:500}class ZOt{static handle(e){if(console.error(K2(e)),console.error(e),z6(e)===403){nie("/403");return}if(z6(e)===400){Va({type:"error",message:K2(e)});return}nie("/500")}static errorCode(e){return z6(e)}static selectMessage(e){return K2(e)}static showMessage(e){Va({type:"error",message:K2(e)})}}const JOt=Zt({actionButtonsWrapper:{position:"relative"},previewContent:{padding:"0px !important"},imageItem:{"&.MuiGrid-root":{margin:10,boxShadow:"2px 2px 8px 0 rgb(0 0 0 / 40%)",borderRadius:10},height:"100px"},actionButtons:{position:"absolute",bottom:5,right:4},previewContainer:{"& button":{position:"absolute",top:10,right:10,"& svg":{height:50,width:50,fill:"#FFF",stroke:"#909090",strokeWidth:.5}}},button:{padding:"0px !important",minWidth:"45px !important","& svg":{height:36,width:36,fill:"#FFF",stroke:"#909090",strokeWidth:.5}}}),J1e=t=>{const e=JOt(),{value:n,onChange:r,schema:i,path:a,max:o,readonly:s}=t,[l,u]=E.useState(!1),[c,f]=E.useState(!1),[h,m]=E.useState({imageSrc:null,imageAlt:null}),b=E.useRef(null),_=()=>n?Array.isArray(n)?n:[n]:[],y=()=>_().map(O=>({uid:O.id||void 0,name:O.name,status:"done",url:O.publicUrl})),x=O=>{r(_().filter(N=>N.id!==O))},C=async O=>{try{const N=O.target.files;if(!N||!N.length)return;let k=N[0];eie.validate(k,i),u(!0),k=await eie.upload(a,k,i),b.current.value="",u(!1),r([..._(),k])}catch(N){b.current.value="",console.log("error",N),u(!1),ZOt.showMessage(N)}},A=O=>{m({imageSrc:O.publicUrl,imageAlt:O.name}),f(!0)},R=()=>{m({imageSrc:null,imageAlt:null}),f(!1)},I=d.jsx(ce,{children:d.jsxs("label",{htmlFor:"button-file",style:{cursor:"pointer"},children:[d.jsx("input",{id:"button-file",style:{display:"none"},disabled:l||s,accept:"image/*",type:"file",onChange:C,ref:b}),d.jsx(tr,{variant:"contained",component:"span",children:"Upload an Image"})," "]})});return d.jsxs(ce,{children:[s||o&&y().length>=o?null:I,_()&&_().length?d.jsx(re,{container:!0,children:_().map(O=>d.jsxs(re,{className:e.imageItem,children:[d.jsx("img",{alt:O.name,src:O.publicUrl,style:{width:"100px",height:"100px",objectFit:"cover",borderRadius:10}}),d.jsx("div",{className:e.actionButtonsWrapper,children:d.jsxs("div",{className:e.actionButtons,children:[d.jsx(tr,{classes:{root:e.button},variant:"text",onClick:()=>A(O),children:d.jsx(W9,{})}),!s&&d.jsx(tr,{classes:{root:e.button},variant:"text",onClick:()=>x(O.id),children:d.jsx(Nk,{})})]})})]},O.id))}):null,d.jsxs(Ku,{open:c,onClose:R,classes:{root:e.previewContainer},children:[d.jsx(tr,{variant:"text",onClick:()=>R(),children:d.jsx(Nk,{})}),d.jsx("img",{src:h.imageSrc,alt:h.imageAlt})]})]})};J1e.propTypes={readonly:pe.bool,path:pe.string,max:pe.number,schema:pe.shape({image:pe.bool,size:pe.number,formats:pe.arrayOf(pe.string)}),value:pe.any,onChange:pe.func};const ebe=t=>{const{name:e,schema:n,hint:r,path:i,fileProps:a,max:o=void 0,inputProps:s}=t,{label:l}=n[e];return d.jsx(mO,{name:e,children:({form:u})=>d.jsxs(d.Fragment,{children:[d.jsx(gn,{style:{marginBottom:10},children:l}),d.jsx(J1e,{path:i,schema:a,value:u.values[e],onChange:c=>{u.setFieldValue(e,c),u.setFieldTouched(e)},max:o,...s}),d.jsx("div",{className:"invalid-feedback",children:bO.displayableError(u,e)}),!!r&&d.jsx("small",{className:"form-text text-muted",children:r})]})})};ebe.propTypes={path:pe.string.isRequired,required:pe.bool,name:pe.string.isRequired,hint:pe.string,formItemProps:pe.object,inputProps:pe.object};const Vc={id:{type:"id",label:"ID"},firstName:{type:"string",label:"First Name"},lastName:{type:"string",label:"Last Name"},phoneNumber:{type:"string",label:"Phone Number"},email:{type:"string",label:"E-Mail"},role:{type:"enum",label:"Role",options:[{value:"admin",label:"admin"},{value:"user",label:"user"}]},disabled:{type:"boolean",label:"Disabled"},avatar:{type:"images",label:"Avatar"},password:{type:"string",label:"Password"},emailVerified:{type:"boolean",label:"Email Verified"},emailVerificationToken:{type:"string",label:"Email Verification Token"},emailVerificationTokenExpiresAt:{type:"datetime",label:"Email Verification Token Expires At"},passwordResetToken:{type:"string",label:"Password Reset Token"},passwordResetTokenExpiresAt:{type:"datetime",label:"Password Reset Token Expires At"},provider:{type:"string",label:"Provider"}},e3t=(t,e={})=>{const n={};return Object.keys(t).forEach(r=>{const i=t[r].type,a=e[r];let o;switch(i){case"boolean":o=a;break;case"date":o=a?qr(a,"YYYY-MM-DD").toDate():null;break;case"dateRange":!a||!a.length?o=[]:o=a.map(s=>s?qr(s,"YYYY-MM-DD").toDate():null);break;case"datetime":o=a?qr(a).toDate():null;break;case"datetimeRange":!a||!a.length?o=[]:o=a.map(s=>s?qr(s).toDate():null);break;case"decimal":o=a;break;case"decimalRange":o=a||[];break;case"enum":!a||typeof a=="string"||a instanceof String?o=a:o=a.id;break;case"files":o=a;break;case"images":o=a;break;case"int":o=a;break;case"intRange":o=a;break;case"relation_many":o=a;break;case"relation_one":o=a;break;case"user_many":o=a;break;case"user_one":o=a;break;case"stringArray":a?Array.isArray(a)?o=a:o=[a]:o=[];break;case"string":o=a;break;default:o=a}n[r]=o}),n},t3t=(t,e={})=>{const n={};return Object.keys(t).forEach(r=>{const i=t[r].type,a=e[r];let o;switch(i){case"date":o=a?qr(a,"YYYY-MM-DD").toDate():null;break;case"user_many":case"relation_many":!a||!a.length?o=[]:o=a.map(s=>s.id);break;case"user_one":case"relation_one":o=a?a.id:null;break;default:o=a}n[r]=o}),n};var H6,rie;function n3t(){if(rie)return H6;rie=1;function t(x){this._maxSize=x,this.clear()}t.prototype.clear=function(){this._size=0,this._values=Object.create(null)},t.prototype.get=function(x){return this._values[x]},t.prototype.set=function(x,C){return this._size>=this._maxSize&&this.clear(),x in this._values||this._size++,this._values[x]=C};var e=/[^.^\]^[]+|(?=\[\]|\.\.)/g,n=/^\d+$/,r=/^\d/,i=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,a=/^\s*(['"]?)(.*?)(\1)\s*$/,o=512,s=new t(o),l=new t(o),u=new t(o);H6={Cache:t,split:f,normalizePath:c,setter:function(x){var C=c(x);return l.get(x)||l.set(x,function(R,I){for(var O=0,N=C.length,k=R;Oc.match(t)||[],n=c=>c[0].toUpperCase()+c.slice(1),r=(c,f)=>e(c).join(f).toLowerCase(),i=c=>e(c).reduce((f,h)=>`${f}${f?h[0].toUpperCase()+h.slice(1).toLowerCase():h.toLowerCase()}`,"");return $6={words:e,upperFirst:n,camelCase:i,pascalCase:c=>n(i(c)),snakeCase:c=>r(c,"_"),kebabCase:c=>r(c,"-"),sentenceCase:c=>n(r(c," ")),titleCase:c=>e(c).map(n).join(" ")},$6}var G6=r3t(),X2={exports:{}},aie;function i3t(){if(aie)return X2.exports;aie=1,X2.exports=function(i){return t(e(i),i)},X2.exports.array=t;function t(i,a){var o=i.length,s=new Array(o),l={},u=o,c=n(a),f=r(i);for(a.forEach(function(m){if(!f.has(m[0])||!f.has(m[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});u--;)l[u]||h(i[u],u,new Set);return s;function h(m,b,_){if(_.has(m)){var y;try{y=", node was:"+JSON.stringify(m)}catch{y=""}throw new Error("Cyclic dependency"+y)}if(!f.has(m))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(m));if(!l[b]){l[b]=!0;var x=c.get(m)||new Set;if(x=Array.from(x),b=x.length){_.add(m);do{var C=x[--b];h(C,f.get(C),_)}while(b);_.delete(m)}s[--o]=m}}}function e(i){for(var a=new Set,o=0,s=i.length;o"",d3t=/^Symbol\((.*)\)(.*)$/;function f3t(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function oie(t,e=!1){if(t==null||t===!0||t===!1)return""+t;const n=typeof t;if(n==="number")return f3t(t);if(n==="string")return e?`"${t}"`:t;if(n==="function")return"[Function "+(t.name||"anonymous")+"]";if(n==="symbol")return u3t.call(t).replace(d3t,"Symbol($1)");const r=s3t.call(t).slice(8,-1);return r==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):r==="Error"||t instanceof Error?"["+l3t.call(t)+"]":r==="RegExp"?c3t.call(t):null}function Af(t,e){let n=oie(t,e);return n!==null?n:JSON.stringify(t,function(r,i){let a=oie(this[r],e);return a!==null?a:i},2)}function tbe(t){return t==null?[]:[].concat(t)}let nbe,rbe,ibe,p3t=/\$\{\s*(\w+)\s*\}/g;nbe=Symbol.toStringTag;class sie{constructor(e,n,r,i){this.name=void 0,this.message=void 0,this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=void 0,this.inner=void 0,this[nbe]="Error",this.name="ValidationError",this.value=n,this.path=r,this.type=i,this.errors=[],this.inner=[],tbe(e).forEach(a=>{if(ps.isError(a)){this.errors.push(...a.errors);const o=a.inner.length?a.inner:[a];this.inner.push(...o)}else this.errors.push(a)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0]}}rbe=Symbol.hasInstance;ibe=Symbol.toStringTag;class ps extends Error{static formatError(e,n){const r=n.label||n.path||"this";return n=Object.assign({},n,{path:r,originalPath:n.path}),typeof e=="string"?e.replace(p3t,(i,a)=>Af(n[a])):typeof e=="function"?e(n):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,n,r,i,a){const o=new sie(e,n,r,i);if(a)return o;super(),this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=[],this.inner=[],this[ibe]="Error",this.name=o.name,this.message=o.message,this.type=o.type,this.value=o.value,this.path=o.path,this.errors=o.errors,this.inner=o.inner,Error.captureStackTrace&&Error.captureStackTrace(this,ps)}static[rbe](e){return sie[Symbol.hasInstance](e)||super[Symbol.hasInstance](e)}}let Vu={default:"${path} is invalid",required:"${path} is a required field",defined:"${path} must be defined",notNull:"${path} cannot be null",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:n,originalValue:r})=>{const i=r!=null&&r!==n?` (cast from the value \`${Af(r,!0)}\`).`:".";return e!=="mixed"?`${t} must be a \`${e}\` type, but the final value was: \`${Af(n,!0)}\``+i:`${t} must match the configured type. The validated value was: \`${Af(n,!0)}\``+i}},Hs={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",datetime:"${path} must be a valid ISO date-time",datetime_precision:"${path} must be a valid ISO date-time with a sub-second precision of exactly ${precision} digits",datetime_offset:'${path} must be a valid ISO date-time with UTC "Z" timezone',trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"},Ip={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"},D8={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"},P8={isValue:"${path} field must be ${value}"},jC={noUnknown:"${path} field has unspecified keys: ${unknown}",exact:"${path} object contains unknown properties: ${properties}"},UC={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must have ${length} items"},h3t={notType:t=>{const{path:e,value:n,spec:r}=t,i=r.types.length;if(Array.isArray(n)){if(n.lengthi)return`${e} tuple value has too many items, expected a length of ${i} but got ${n.length} for value: \`${Af(n,!0)}\``}return ps.formatError(Vu.notType,t)}};Object.assign(Object.create(null),{mixed:Vu,string:Hs,number:Ip,date:D8,object:jC,array:UC,boolean:P8,tuple:h3t});const _O=t=>t&&t.__isYupSchema__;class VT{static fromOptions(e,n){if(!n.then&&!n.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:r,then:i,otherwise:a}=n,o=typeof r=="function"?r:(...s)=>s.every(l=>l===r);return new VT(e,(s,l)=>{var u;let c=o(...s)?i:a;return(u=c?.(l))!=null?u:l})}constructor(e,n){this.fn=void 0,this.refs=e,this.refs=e,this.fn=n}resolve(e,n){let r=this.refs.map(a=>a.getValue(n?.value,n?.parent,n?.context)),i=this.fn(r,e,n);if(i===void 0||i===e)return e;if(!_O(i))throw new TypeError("conditions must return a schema object");return i.resolve(n)}}const Q2={context:"$",value:"."};class Zm{constructor(e,n={}){if(this.key=void 0,this.isContext=void 0,this.isValue=void 0,this.isSibling=void 0,this.path=void 0,this.getter=void 0,this.map=void 0,typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===Q2.context,this.isValue=this.key[0]===Q2.value,this.isSibling=!this.isContext&&!this.isValue;let r=this.isContext?Q2.context:this.isValue?Q2.value:"";this.path=this.key.slice(r.length),this.getter=this.path&&fm.getter(this.path,!0),this.map=n.map}getValue(e,n,r){let i=this.isContext?r:this.isValue?e:n;return this.getter&&(i=this.getter(i||{})),this.map&&(i=this.map(i)),i}cast(e,n){return this.getValue(e,n?.parent,n?.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}}Zm.prototype.__isYupRef=!0;const su=t=>t==null;function ib(t){function e({value:n,path:r="",options:i,originalValue:a,schema:o},s,l){const{name:u,test:c,params:f,message:h,skipAbsent:m}=t;let{parent:b,context:_,abortEarly:y=o.spec.abortEarly,disableStackTrace:x=o.spec.disableStackTrace}=i;const C={value:n,parent:b,context:_};function A(j={}){const M=abe(Object.assign({value:n,originalValue:a,label:o.spec.label,path:j.path||r,spec:o.spec,disableStackTrace:j.disableStackTrace||x},f,j.params),C),z=new ps(ps.formatError(j.message||h,M),n,M.path,j.type||u,M.disableStackTrace);return z.params=M,z}const R=y?s:l;let I={path:r,parent:b,type:u,from:i.from,createError:A,resolve(j){return obe(j,C)},options:i,originalValue:a,schema:o};const O=j=>{ps.isError(j)?R(j):j?l(null):R(A())},N=j=>{ps.isError(j)?R(j):s(j)};if(m&&su(n))return O(!0);let D;try{var P;if(D=c.call(I,n,I),typeof((P=D)==null?void 0:P.then)=="function"){if(i.sync)throw new Error(`Validation test of type: "${I.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`);return Promise.resolve(D).then(O,N)}}catch(j){N(j);return}O(D)}return e.OPTIONS=t,e}function abe(t,e){if(!t)return t;for(const n of Object.keys(t))t[n]=obe(t[n],e);return t}function obe(t,e){return Zm.isRef(t)?t.getValue(e.value,e.parent,e.context):t}function g3t(t,e,n,r=n){let i,a,o;return e?(fm.forEach(e,(s,l,u)=>{let c=l?s.slice(1,s.length-1):s;t=t.resolve({context:r,parent:i,value:n});let f=t.type==="tuple",h=u?parseInt(c,10):0;if(t.innerType||f){if(f&&!u)throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part "${o}" must contain an index to the tuple element, e.g. "${o}[0]"`);if(n&&h>=n.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${s}, in the path: ${e}. because there is no value at that index. `);i=n,n=n&&n[h],t=f?t.spec.types[h]:t.innerType}if(!u){if(!t.fields||!t.fields[c])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t.type}")`);i=n,n=n&&n[c],t=t.fields[c]}a=c,o=l?"["+s+"]":"."+s}),{schema:t,parent:i,parentPath:a}):{parent:i,parentPath:e,schema:t}}class YT extends Set{describe(){const e=[];for(const n of this.values())e.push(Zm.isRef(n)?n.describe():n);return e}resolveAll(e){let n=[];for(const r of this.values())n.push(e(r));return n}clone(){return new YT(this.values())}merge(e,n){const r=this.clone();return e.forEach(i=>r.add(i)),n.forEach(i=>r.delete(i)),r}}function Ab(t,e=new Map){if(_O(t)||!t||typeof t!="object")return t;if(e.has(t))return e.get(t);let n;if(t instanceof Date)n=new Date(t.getTime()),e.set(t,n);else if(t instanceof RegExp)n=new RegExp(t),e.set(t,n);else if(Array.isArray(t)){n=new Array(t.length),e.set(t,n);for(let r=0;r({message:r,path:m3t(n)}))}function sbe(t,e){var n;if(!((n=t.inner)!=null&&n.length)&&t.errors.length)return b3t(t,e);const r=e?`${e}.${t.path}`:t.path;return t.inner.flatMap(i=>sbe(i,r))}class nl{constructor(e){this.type=void 0,this.deps=[],this.tests=void 0,this.transforms=void 0,this.conditions=[],this._mutate=void 0,this.internalTests={},this._whitelist=new YT,this._blacklist=new YT,this.exclusiveTests=Object.create(null),this._typeCheck=void 0,this.spec=void 0,this.tests=[],this.transforms=[],this.withMutation(()=>{this.typeError(Vu.notType)}),this.type=e.type,this._typeCheck=e.check,this.spec=Object.assign({strip:!1,strict:!1,abortEarly:!0,recursive:!0,disableStackTrace:!1,nullable:!1,optional:!0,coerce:!0},e?.spec),this.withMutation(n=>{n.nonNullable()})}get _type(){return this.type}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;const n=Object.create(Object.getPrototypeOf(this));return n.type=this.type,n._typeCheck=this._typeCheck,n._whitelist=this._whitelist.clone(),n._blacklist=this._blacklist.clone(),n.internalTests=Object.assign({},this.internalTests),n.exclusiveTests=Object.assign({},this.exclusiveTests),n.deps=[...this.deps],n.conditions=[...this.conditions],n.tests=[...this.tests],n.transforms=[...this.transforms],n.spec=Ab(Object.assign({},this.spec,e)),n}label(e){let n=this.clone();return n.spec.label=e,n}meta(...e){if(e.length===0)return this.spec.meta;let n=this.clone();return n.spec.meta=Object.assign(n.spec.meta||{},e[0]),n}withMutation(e){let n=this._mutate;this._mutate=!0;let r=e(this);return this._mutate=n,r}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let n=this,r=e.clone();const i=Object.assign({},n.spec,r.spec);return r.spec=i,r.internalTests=Object.assign({},n.internalTests,r.internalTests),r._whitelist=n._whitelist.merge(e._whitelist,e._blacklist),r._blacklist=n._blacklist.merge(e._blacklist,e._whitelist),r.tests=n.tests,r.exclusiveTests=n.exclusiveTests,r.withMutation(a=>{e.tests.forEach(o=>{a.test(o.OPTIONS)})}),r.transforms=[...n.transforms,...r.transforms],r}isType(e){return e==null?!!(this.spec.nullable&&e===null||this.spec.optional&&e===void 0):this._typeCheck(e)}resolve(e){let n=this;if(n.conditions.length){let r=n.conditions;n=n.clone(),n.conditions=[],n=r.reduce((i,a)=>a.resolve(i,e),n),n=n.resolve(e)}return n}resolveOptions(e){var n,r,i,a;return Object.assign({},e,{from:e.from||[],strict:(n=e.strict)!=null?n:this.spec.strict,abortEarly:(r=e.abortEarly)!=null?r:this.spec.abortEarly,recursive:(i=e.recursive)!=null?i:this.spec.recursive,disableStackTrace:(a=e.disableStackTrace)!=null?a:this.spec.disableStackTrace})}cast(e,n={}){let r=this.resolve(Object.assign({},n,{value:e})),i=n.assert==="ignore-optionality",a=r._cast(e,n);if(n.assert!==!1&&!r.isType(a)){if(i&&su(a))return a;let o=Af(e),s=Af(a);throw new TypeError(`The value of ${n.path||"field"} could not be cast to a value that satisfies the schema type: "${r.type}". + +attempted value: ${o} +`+(s!==o?`result of cast: ${s}`:""))}return a}_cast(e,n){let r=e===void 0?e:this.transforms.reduce((i,a)=>a.call(this,i,e,this,n),e);return r===void 0&&(r=this.getDefault(n)),r}_validate(e,n={},r,i){let{path:a,originalValue:o=e,strict:s=this.spec.strict}=n,l=e;s||(l=this._cast(l,Object.assign({assert:!1},n)));let u=[];for(let c of Object.values(this.internalTests))c&&u.push(c);this.runTests({path:a,value:l,originalValue:o,options:n,tests:u},r,c=>{if(c.length)return i(c,l);this.runTests({path:a,value:l,originalValue:o,options:n,tests:this.tests},r,i)})}runTests(e,n,r){let i=!1,{tests:a,value:o,originalValue:s,path:l,options:u}=e,c=_=>{i||(i=!0,n(_,o))},f=_=>{i||(i=!0,r(_,o))},h=a.length,m=[];if(!h)return f([]);let b={value:o,originalValue:s,path:l,options:u,schema:this};for(let _=0;_this.resolve(c)._validate(u,c,h,m)}validate(e,n){var r;let i=this.resolve(Object.assign({},n,{value:e})),a=(r=n?.disableStackTrace)!=null?r:i.spec.disableStackTrace;return new Promise((o,s)=>i._validate(e,n,(l,u)=>{ps.isError(l)&&(l.value=u),s(l)},(l,u)=>{l.length?s(new ps(l,u,void 0,void 0,a)):o(u)}))}validateSync(e,n){var r;let i=this.resolve(Object.assign({},n,{value:e})),a,o=(r=n?.disableStackTrace)!=null?r:i.spec.disableStackTrace;return i._validate(e,Object.assign({},n,{sync:!0}),(s,l)=>{throw ps.isError(s)&&(s.value=l),s},(s,l)=>{if(s.length)throw new ps(s,e,void 0,void 0,o);a=l}),a}isValid(e,n){return this.validate(e,n).then(()=>!0,r=>{if(ps.isError(r))return!1;throw r})}isValidSync(e,n){try{return this.validateSync(e,n),!0}catch(r){if(ps.isError(r))return!1;throw r}}_getDefault(e){let n=this.spec.default;return n==null?n:typeof n=="function"?n.call(this,e):Ab(n)}getDefault(e){return this.resolve(e||{})._getDefault(e)}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){return this.clone({strict:e})}nullability(e,n){const r=this.clone({nullable:e});return r.internalTests.nullable=ib({message:n,name:"nullable",test(i){return i===null?this.schema.spec.nullable:!0}}),r}optionality(e,n){const r=this.clone({optional:e});return r.internalTests.optionality=ib({message:n,name:"optionality",test(i){return i===void 0?this.schema.spec.optional:!0}}),r}optional(){return this.optionality(!0)}defined(e=Vu.defined){return this.optionality(!1,e)}nullable(){return this.nullability(!0)}nonNullable(e=Vu.notNull){return this.nullability(!1,e)}required(e=Vu.required){return this.clone().withMutation(n=>n.nonNullable(e).defined(e))}notRequired(){return this.clone().withMutation(e=>e.nullable().optional())}transform(e){let n=this.clone();return n.transforms.push(e),n}test(...e){let n;if(e.length===1?typeof e[0]=="function"?n={test:e[0]}:n=e[0]:e.length===2?n={name:e[0],test:e[1]}:n={name:e[0],message:e[1],test:e[2]},n.message===void 0&&(n.message=Vu.default),typeof n.test!="function")throw new TypeError("`test` is a required parameters");let r=this.clone(),i=ib(n),a=n.exclusive||n.name&&r.exclusiveTests[n.name]===!0;if(n.exclusive&&!n.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return n.name&&(r.exclusiveTests[n.name]=!!n.exclusive),r.tests=r.tests.filter(o=>!(o.OPTIONS.name===n.name&&(a||o.OPTIONS.test===i.OPTIONS.test))),r.tests.push(i),r}when(e,n){!Array.isArray(e)&&typeof e!="string"&&(n=e,e=".");let r=this.clone(),i=tbe(e).map(a=>new Zm(a));return i.forEach(a=>{a.isSibling&&r.deps.push(a.key)}),r.conditions.push(typeof n=="function"?new VT(i,n):VT.fromOptions(i,n)),r}typeError(e){let n=this.clone();return n.internalTests.typeError=ib({message:e,name:"typeError",skipAbsent:!0,test(r){return this.schema._typeCheck(r)?!0:this.createError({params:{type:this.schema.type}})}}),n}oneOf(e,n=Vu.oneOf){let r=this.clone();return e.forEach(i=>{r._whitelist.add(i),r._blacklist.delete(i)}),r.internalTests.whiteList=ib({message:n,name:"oneOf",skipAbsent:!0,test(i){let a=this.schema._whitelist,o=a.resolveAll(this.resolve);return o.includes(i)?!0:this.createError({params:{values:Array.from(a).join(", "),resolved:o}})}}),r}notOneOf(e,n=Vu.notOneOf){let r=this.clone();return e.forEach(i=>{r._blacklist.add(i),r._whitelist.delete(i)}),r.internalTests.blacklist=ib({message:n,name:"notOneOf",test(i){let a=this.schema._blacklist,o=a.resolveAll(this.resolve);return o.includes(i)?this.createError({params:{values:Array.from(a).join(", "),resolved:o}}):!0}}),r}strip(e=!0){let n=this.clone();return n.spec.strip=e,n}describe(e){const n=(e?this.resolve(e):this).clone(),{label:r,meta:i,optional:a,nullable:o}=n.spec;return{meta:i,label:r,optional:a,nullable:o,default:n.getDefault(e),type:n.type,oneOf:n._whitelist.describe(),notOneOf:n._blacklist.describe(),tests:n.tests.filter((l,u,c)=>c.findIndex(f=>f.OPTIONS.name===l.OPTIONS.name)===u).map(l=>{const u=l.OPTIONS.params&&e?abe(Object.assign({},l.OPTIONS.params),e):l.OPTIONS.params;return{name:l.OPTIONS.name,params:u}})}}get"~standard"(){const e=this;return{version:1,vendor:"yup",async validate(r){try{return{value:await e.validate(r,{abortEarly:!1})}}catch(i){if(i instanceof ps)return{issues:sbe(i)};throw i}}}}}nl.prototype.__isYupSchema__=!0;for(const t of["validate","validateSync"])nl.prototype[`${t}At`]=function(e,n,r={}){const{parent:i,parentPath:a,schema:o}=g3t(this,e,n,r.context);return o[t](i&&i[a],Object.assign({},r,{parent:i,path:e}))};for(const t of["equals","is"])nl.prototype[t]=nl.prototype.oneOf;for(const t of["not","nope"])nl.prototype[t]=nl.prototype.notOneOf;const _3t=()=>!0;function zC(t){return new lbe(t)}class lbe extends nl{constructor(e){super(typeof e=="function"?{type:"mixed",check:e}:Object.assign({type:"mixed",check:_3t},e))}}zC.prototype=lbe.prototype;function cbe(){return new ube}class ube extends nl{constructor(){super({type:"boolean",check(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}}),this.withMutation(()=>{this.transform((e,n)=>{if(this.spec.coerce&&!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}isTrue(e=P8.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(n){return su(n)||n===!0}})}isFalse(e=P8.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(n){return su(n)||n===!1}})}default(e){return super.default(e)}defined(e){return super.defined(e)}optional(){return super.optional()}required(e){return super.required(e)}notRequired(){return super.notRequired()}nullable(){return super.nullable()}nonNullable(e){return super.nonNullable(e)}strip(e){return super.strip(e)}}cbe.prototype=ube.prototype;const v3t=/^(\d{4}|[+-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,.](\d{1,}))?)?(?:(Z)|([+-])(\d{2})(?::?(\d{2}))?)?)?$/;function y3t(t){const e=k8(t);if(!e)return Date.parse?Date.parse(t):Number.NaN;if(e.z===void 0&&e.plusMinus===void 0)return new Date(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond).valueOf();let n=0;return e.z!=="Z"&&e.plusMinus!==void 0&&(n=e.hourOffset*60+e.minuteOffset,e.plusMinus==="+"&&(n=0-n)),Date.UTC(e.year,e.month,e.day,e.hour,e.minute+n,e.second,e.millisecond)}function k8(t){var e,n;const r=v3t.exec(t);return r?{year:nf(r[1]),month:nf(r[2],1)-1,day:nf(r[3],1),hour:nf(r[4]),minute:nf(r[5]),second:nf(r[6]),millisecond:r[7]?nf(r[7].substring(0,3)):0,precision:(e=(n=r[7])==null?void 0:n.length)!=null?e:void 0,z:r[8]||void 0,plusMinus:r[9]||void 0,hourOffset:nf(r[10]),minuteOffset:nf(r[11])}:null}function nf(t,e=0){return Number(t)||e}let S3t=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,x3t=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,E3t=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,C3t="^\\d{4}-\\d{2}-\\d{2}",w3t="\\d{2}:\\d{2}:\\d{2}",T3t="(([+-]\\d{2}(:?\\d{2})?)|Z)",A3t=new RegExp(`${C3t}T${w3t}(\\.\\d+)?${T3t}$`),R3t=t=>su(t)||t===t.trim(),O3t={}.toString();function H0(){return new dbe}class dbe extends nl{constructor(){super({type:"string",check(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}}),this.withMutation(()=>{this.transform((e,n)=>{if(!this.spec.coerce||this.isType(e)||Array.isArray(e))return e;const r=e!=null&&e.toString?e.toString():e;return r===O3t?e:r})})}required(e){return super.required(e).withMutation(n=>n.test({message:e||Vu.required,name:"required",skipAbsent:!0,test:r=>!!r.length}))}notRequired(){return super.notRequired().withMutation(e=>(e.tests=e.tests.filter(n=>n.OPTIONS.name!=="required"),e))}length(e,n=Hs.length){return this.test({message:n,name:"length",exclusive:!0,params:{length:e},skipAbsent:!0,test(r){return r.length===this.resolve(e)}})}min(e,n=Hs.min){return this.test({message:n,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(r){return r.length>=this.resolve(e)}})}max(e,n=Hs.max){return this.test({name:"max",exclusive:!0,message:n,params:{max:e},skipAbsent:!0,test(r){return r.length<=this.resolve(e)}})}matches(e,n){let r=!1,i,a;return n&&(typeof n=="object"?{excludeEmptyString:r=!1,message:i,name:a}=n:i=n),this.test({name:a||"matches",message:i||Hs.matches,params:{regex:e},skipAbsent:!0,test:o=>o===""&&r||o.search(e)!==-1})}email(e=Hs.email){return this.matches(S3t,{name:"email",message:e,excludeEmptyString:!0})}url(e=Hs.url){return this.matches(x3t,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Hs.uuid){return this.matches(E3t,{name:"uuid",message:e,excludeEmptyString:!1})}datetime(e){let n="",r,i;return e&&(typeof e=="object"?{message:n="",allowOffset:r=!1,precision:i=void 0}=e:n=e),this.matches(A3t,{name:"datetime",message:n||Hs.datetime,excludeEmptyString:!0}).test({name:"datetime_offset",message:n||Hs.datetime_offset,params:{allowOffset:r},skipAbsent:!0,test:a=>{if(!a||r)return!0;const o=k8(a);return o?!!o.z:!1}}).test({name:"datetime_precision",message:n||Hs.datetime_precision,params:{precision:i},skipAbsent:!0,test:a=>{if(!a||i==null)return!0;const o=k8(a);return o?o.precision===i:!1}})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Hs.trim){return this.transform(n=>n!=null?n.trim():n).test({message:e,name:"trim",test:R3t})}lowercase(e=Hs.lowercase){return this.transform(n=>su(n)?n:n.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:n=>su(n)||n===n.toLowerCase()})}uppercase(e=Hs.uppercase){return this.transform(n=>su(n)?n:n.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:n=>su(n)||n===n.toUpperCase()})}}H0.prototype=dbe.prototype;let I3t=t=>t!=+t;function L8(){return new fbe}class fbe extends nl{constructor(){super({type:"number",check(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!I3t(e)}}),this.withMutation(()=>{this.transform((e,n)=>{if(!this.spec.coerce)return e;let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)||r===null?r:parseFloat(r)})})}min(e,n=Ip.min){return this.test({message:n,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(r){return r>=this.resolve(e)}})}max(e,n=Ip.max){return this.test({message:n,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(r){return r<=this.resolve(e)}})}lessThan(e,n=Ip.lessThan){return this.test({message:n,name:"max",exclusive:!0,params:{less:e},skipAbsent:!0,test(r){return rthis.resolve(e)}})}positive(e=Ip.positive){return this.moreThan(0,e)}negative(e=Ip.negative){return this.lessThan(0,e)}integer(e=Ip.integer){return this.test({name:"integer",message:e,skipAbsent:!0,test:n=>Number.isInteger(n)})}truncate(){return this.transform(e=>su(e)?e:e|0)}round(e){var n;let r=["ceil","floor","round","trunc"];if(e=((n=e)==null?void 0:n.toLowerCase())||"round",e==="trunc")return this.truncate();if(r.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+r.join(", "));return this.transform(i=>su(i)?i:Math[e](i))}}L8.prototype=fbe.prototype;let N3t=new Date(""),M3t=t=>Object.prototype.toString.call(t)==="[object Date]";class Fj extends nl{constructor(){super({type:"date",check(e){return M3t(e)&&!isNaN(e.getTime())}}),this.withMutation(()=>{this.transform((e,n)=>!this.spec.coerce||this.isType(e)||e===null?e:(e=y3t(e),isNaN(e)?Fj.INVALID_DATE:new Date(e)))})}prepareParam(e,n){let r;if(Zm.isRef(e))r=e;else{let i=this.cast(e);if(!this._typeCheck(i))throw new TypeError(`\`${n}\` must be a Date or a value that can be \`cast()\` to a Date`);r=i}return r}min(e,n=D8.min){let r=this.prepareParam(e,"min");return this.test({message:n,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(i){return i>=this.resolve(r)}})}max(e,n=D8.max){let r=this.prepareParam(e,"max");return this.test({message:n,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(i){return i<=this.resolve(r)}})}}Fj.INVALID_DATE=N3t;function D3t(t,e=[]){let n=[],r=new Set,i=new Set(e.map(([o,s])=>`${o}-${s}`));function a(o,s){let l=fm.split(o)[0];r.add(l),i.has(`${s}-${l}`)||n.push([s,l])}for(const o of Object.keys(t)){let s=t[o];r.add(o),Zm.isRef(s)&&s.isSibling?a(s.path,o):_O(s)&&"deps"in s&&s.deps.forEach(l=>a(l,o))}return o3t.array(Array.from(r),n).reverse()}function lie(t,e){let n=1/0;return t.some((r,i)=>{var a;if((a=e.path)!=null&&a.includes(r))return n=i,!0}),n}function pbe(t){return(e,n)=>lie(t,e)-lie(t,n)}const hbe=(t,e,n)=>{if(typeof t!="string")return t;let r=t;try{r=JSON.parse(t)}catch{}return n.isType(r)?r:t};function HC(t){if("fields"in t){const e={};for(const[n,r]of Object.entries(t.fields))e[n]=HC(r);return t.setFields(e)}if(t.type==="array"){const e=t.optional();return e.innerType&&(e.innerType=HC(e.innerType)),e}return t.type==="tuple"?t.optional().clone({types:t.spec.types.map(HC)}):"optional"in t?t.optional():t}const P3t=(t,e)=>{const n=[...fm.normalizePath(e)];if(n.length===1)return n[0]in t;let r=n.pop(),i=fm.getter(fm.join(n),!0)(t);return!!(i&&r in i)};let cie=t=>Object.prototype.toString.call(t)==="[object Object]";function uie(t,e){let n=Object.keys(t.fields);return Object.keys(e).filter(r=>n.indexOf(r)===-1)}const k3t=pbe([]);function gbe(t){return new mbe(t)}class mbe extends nl{constructor(e){super({type:"object",check(n){return cie(n)||typeof n=="function"}}),this.fields=Object.create(null),this._sortErrors=k3t,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{e&&this.shape(e)})}_cast(e,n={}){var r;let i=super._cast(e,n);if(i===void 0)return this.getDefault(n);if(!this._typeCheck(i))return i;let a=this.fields,o=(r=n.stripUnknown)!=null?r:this.spec.noUnknown,s=[].concat(this._nodes,Object.keys(i).filter(f=>!this._nodes.includes(f))),l={},u=Object.assign({},n,{parent:l,__validating:n.__validating||!1}),c=!1;for(const f of s){let h=a[f],m=f in i,b=i[f];if(h){let _;u.path=(n.path?`${n.path}.`:"")+f,h=h.resolve({value:b,context:n.context,parent:l});let y=h instanceof nl?h.spec:void 0,x=y?.strict;if(y!=null&&y.strip){c=c||f in i;continue}_=!n.__validating||!x?h.cast(b,u):b,_!==void 0&&(l[f]=_)}else m&&!o&&(l[f]=b);(m!==f in l||l[f]!==b)&&(c=!0)}return c?l:i}_validate(e,n={},r,i){let{from:a=[],originalValue:o=e,recursive:s=this.spec.recursive}=n;n.from=[{schema:this,value:o},...a],n.__validating=!0,n.originalValue=o,super._validate(e,n,r,(l,u)=>{if(!s||!cie(u)){i(l,u);return}o=o||u;let c=[];for(let f of this._nodes){let h=this.fields[f];!h||Zm.isRef(h)||c.push(h.asNestedTest({options:n,key:f,parent:u,parentPath:n.path,originalParent:o}))}this.runTests({tests:c,value:u,originalValue:o,options:n},r,f=>{i(f.sort(this._sortErrors).concat(l),u)})})}clone(e){const n=super.clone(e);return n.fields=Object.assign({},this.fields),n._nodes=this._nodes,n._excludedEdges=this._excludedEdges,n._sortErrors=this._sortErrors,n}concat(e){let n=super.concat(e),r=n.fields;for(let[i,a]of Object.entries(this.fields)){const o=r[i];r[i]=o===void 0?a:o}return n.withMutation(i=>i.setFields(r,[...this._excludedEdges,...e._excludedEdges]))}_getDefault(e){if("default"in this.spec)return super._getDefault(e);if(!this._nodes.length)return;let n={};return this._nodes.forEach(r=>{var i;const a=this.fields[r];let o=e;(i=o)!=null&&i.value&&(o=Object.assign({},o,{parent:o.value,value:o.value[r]})),n[r]=a&&"getDefault"in a?a.getDefault(o):void 0}),n}setFields(e,n){let r=this.clone();return r.fields=e,r._nodes=D3t(e,n),r._sortErrors=pbe(Object.keys(e)),n&&(r._excludedEdges=n),r}shape(e,n=[]){return this.clone().withMutation(r=>{let i=r._excludedEdges;return n.length&&(Array.isArray(n[0])||(n=[n]),i=[...r._excludedEdges,...n]),r.setFields(Object.assign(r.fields,e),i)})}partial(){const e={};for(const[n,r]of Object.entries(this.fields))e[n]="optional"in r&&r.optional instanceof Function?r.optional():r;return this.setFields(e)}deepPartial(){return HC(this)}pick(e){const n={};for(const r of e)this.fields[r]&&(n[r]=this.fields[r]);return this.setFields(n,this._excludedEdges.filter(([r,i])=>e.includes(r)&&e.includes(i)))}omit(e){const n=[];for(const r of Object.keys(this.fields))e.includes(r)||n.push(r);return this.pick(n)}from(e,n,r){let i=fm.getter(e,!0);return this.transform(a=>{if(!a)return a;let o=a;return P3t(a,e)&&(o=Object.assign({},a),r||delete o[e],o[n]=i(a)),o})}json(){return this.transform(hbe)}exact(e){return this.test({name:"exact",exclusive:!0,message:e||jC.exact,test(n){if(n==null)return!0;const r=uie(this.schema,n);return r.length===0||this.createError({params:{properties:r.join(", ")}})}})}stripUnknown(){return this.clone({noUnknown:!0})}noUnknown(e=!0,n=jC.noUnknown){typeof e!="boolean"&&(n=e,e=!0);let r=this.test({name:"noUnknown",exclusive:!0,message:n,test(i){if(i==null)return!0;const a=uie(this.schema,i);return!e||a.length===0||this.createError({params:{unknown:a.join(", ")}})}});return r.spec.noUnknown=e,r}unknown(e=!0,n=jC.noUnknown){return this.noUnknown(!e,n)}transformKeys(e){return this.transform(n=>{if(!n)return n;const r={};for(const i of Object.keys(n))r[e(i)]=n[i];return r})}camelCase(){return this.transformKeys(G6.camelCase)}snakeCase(){return this.transformKeys(G6.snakeCase)}constantCase(){return this.transformKeys(e=>G6.snakeCase(e).toUpperCase())}describe(e){const n=(e?this.resolve(e):this).clone(),r=super.describe(e);r.fields={};for(const[a,o]of Object.entries(n.fields)){var i;let s=e;(i=s)!=null&&i.value&&(s=Object.assign({},s,{parent:s.value,value:s.value[a]})),r.fields[a]=o.describe(s)}return r}}gbe.prototype=mbe.prototype;function $0(t){return new bbe(t)}class bbe extends nl{constructor(e){super({type:"array",spec:{types:e},check(n){return Array.isArray(n)}}),this.innerType=void 0,this.innerType=e}_cast(e,n){const r=super._cast(e,n);if(!this._typeCheck(r)||!this.innerType)return r;let i=!1;const a=r.map((o,s)=>{const l=this.innerType.cast(o,Object.assign({},n,{path:`${n.path||""}[${s}]`,parent:r,originalValue:o,value:o,index:s}));return l!==o&&(i=!0),l});return i?a:r}_validate(e,n={},r,i){var a;let o=this.innerType,s=(a=n.recursive)!=null?a:this.spec.recursive;n.originalValue!=null&&n.originalValue,super._validate(e,n,r,(l,u)=>{var c;if(!s||!o||!this._typeCheck(u)){i(l,u);return}let f=new Array(u.length);for(let m=0;mi(m.concat(l),u))})}clone(e){const n=super.clone(e);return n.innerType=this.innerType,n}json(){return this.transform(hbe)}concat(e){let n=super.concat(e);return n.innerType=this.innerType,e.innerType&&(n.innerType=n.innerType?n.innerType.concat(e.innerType):e.innerType),n}of(e){let n=this.clone();if(!_O(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+Af(e));return n.innerType=e,n.spec=Object.assign({},n.spec,{types:e}),n}length(e,n=UC.length){return this.test({message:n,name:"length",exclusive:!0,params:{length:e},skipAbsent:!0,test(r){return r.length===this.resolve(e)}})}min(e,n){return n=n||UC.min,this.test({message:n,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(r){return r.length>=this.resolve(e)}})}max(e,n){return n=n||UC.max,this.test({message:n,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(r){return r.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,n)=>this._typeCheck(e)?e:n==null?[]:[].concat(n))}compact(e){let n=e?(r,i,a)=>!e(r,i,a):r=>!!r;return this.transform(r=>r!=null?r.filter(n):r)}describe(e){const n=(e?this.resolve(e):this).clone(),r=super.describe(e);if(n.innerType){var i;let a=e;(i=a)!=null&&i.value&&(a=Object.assign({},a,{parent:a.value,value:a.value[0]})),r.innerType=n.innerType.describe(a)}return r}}$0.prototype=bbe.prototype;const L3t=t=>{const e={};return Object.keys(t).forEach(n=>{const r=t[n].type,i=t[n].label,a=t[n].required;let o;switch(r){case"boolean":o=cbe().default(!1);break;case"date":o=zC().nullable(!0).test("is-date","",s=>s?qr(s,"YYYY-MM-DD").isValid():!0);break;case"datetime":o=zC().nullable(!0);break;case"decimal":o=L8().nullable(!0);break;case"enum":o=H0().nullable(!0);break;case"files":o=$0().compact().ensure().nullable(!0);break;case"images":o=$0().nullable(!0);break;case"int":o=L8().integer().nullable(!0);break;case"user_many":case"relation_many":o=$0().nullable(!0);break;case"user_one":case"relation_one":o=zC().nullable(!0);break;case"stringArray":o=$0().compact().ensure().of(H0().trim());break;case"string":o=H0().nullable(!0).trim();break;default:o=H0()}o=o.label(i),a&&(o=o.required()),e[n]=o}),gbe().shape(e)},B3t=t=>{const{isEditing:e,isProfile:n,findLoading:r,record:i,onSubmit:a,onCancel:o}=t,s=()=>e3t(Vc,i||{}),l=()=>L3t(Vc),u=h=>{const{id:m,...b}=t3t(Vc,h||{});a(m,b)},c=()=>n?"Edit My Profile":e?"Edit Users":"Add Users",f=()=>d.jsx(et,{title:c(),collapse:!0,close:!0,children:d.jsx(BOt,{onSubmit:u,initialValues:s(),validationSchema:l(),children:h=>d.jsxs("form",{onSubmit:h.handleSubmit,children:[d.jsxs(re,{container:!0,spacing:3,direction:"column",children:[d.jsx(re,{children:d.jsx(pb,{name:"firstName",schema:Vc,autoFocus:!0})}),d.jsx(re,{children:d.jsx(pb,{name:"lastName",schema:Vc})}),d.jsx(re,{children:d.jsx(pb,{name:"phoneNumber",schema:Vc})}),d.jsx(re,{children:d.jsx(pb,{name:"email",schema:Vc})}),d.jsx(re,{children:d.jsx(Z1e,{name:"role",schema:Vc})}),d.jsx(re,{children:d.jsx(Q1e,{name:"disabled",schema:Vc})}),d.jsx(re,{children:d.jsx(ebe,{name:"avatar",schema:Vc,path:"users/avatar",fileProps:{size:void 0,formats:void 0},max:void 0})}),d.jsx(re,{children:d.jsx(pb,{name:"password",schema:Vc})})]}),d.jsxs(re,{container:!0,spacing:3,mt:2,children:[d.jsx(re,{children:d.jsx(tr,{color:"primary",variant:"contained",onClick:h.handleSubmit,children:"Save"})}),d.jsx(re,{children:d.jsx(tr,{color:"primary",variant:"outlined",onClick:h.handleReset,children:"Reset"})}),d.jsx(re,{children:d.jsx(tr,{color:"primary",variant:"outlined",onClick:()=>o(),children:"Cancel"})})]})]})})});return r?d.jsx(GT,{}):e&&!i?d.jsx(GT,{}):f()},die=()=>{const t=IA(),e=OA(),n=pA(),r=Ka(),i=rl(),a=!!n.id,o=r.pathname==="/app/profile",s=(h,m)=>{a||o?hs.doUpdate(h,m,i,{isProfile:o,redirectPath:o?null:"/app/users"})(t):hs.doCreate(m,i,"/app/users")(t)};E.useEffect(()=>{if(a)hs.doFind(n.id,{navigate:i,redirectPath:"/app/users"})(t);else if(o){const m=JSON.parse(localStorage.getItem("user")||"null")?.user?.id;hs.doFind(m,{navigate:i,redirectPath:"/app/dashboard"})(t)}else t(hs.doNew())},[a,o,t,i,n.id]);const{saveLoading:l,findLoading:u,currentUser:c}=e,f=a||o?c:{};return d.jsx(d.Fragment,{children:d.jsx(B3t,{saveLoading:l,findLoading:u,currentUser:c,record:f,isEditing:a,isProfile:o,onSubmit:s,onCancel:()=>i("/app/users")})})};function F3t(t){const e=t?.image||t?.avatar,n=e&&e.length?e[0].publicUrl:void 0;return n?d.jsx(ce,{component:"img",sx:{height:45,width:45,borderRadius:"50%"},alt:"avatar",src:n}):null}function j3t(t){return t?"Yes":"No"}const U3t=({classes:t,id:e,openModal:n,entity:r})=>{const i=rl(),[a,o]=Ue.useState(null),s=!!a,l=c=>{c.stopPropagation(),o(c.currentTarget)},u=()=>{o(null)};return d.jsxs("div",{id:e,children:[d.jsx(pn,{onClick:l,children:d.jsx(OS,{})}),d.jsxs(Fm,{id:e,anchorEl:a,open:s,onClose:u,classes:t,children:[d.jsxs($t,{classes:t,onClick:()=>{const c=r==="users"?`/app/users/${e}/edit`:`/admin/${r}/${e}/edit`;i(c),u()},children:[d.jsx(Xoe,{}),"Edit"]}),d.jsxs($t,{classes:t,onClick:c=>{n(c,e),u()},children:[d.jsx(RS,{}),"Delete"]})]})]},e)},z3t=Ue.forwardRef(function(e,n){return d.jsx(S9,{direction:"up",ref:n,...e})}),H3t=({open:t,title:e,onClose:n,contentText:r,onSubmit:i})=>d.jsxs(Ku,{open:t,TransitionComponent:z3t,onClose:n,children:[d.jsx(of,{children:e}),d.jsx(Cg,{children:d.jsx(wg,{id:"alert-dialog-slide-description",children:r})}),d.jsxs(Eg,{children:[d.jsx(tr,{onClick:()=>n(),children:"Disagree"}),d.jsx(tr,{color:"error",onClick:()=>i(),children:"Agree"})]})]}),$3t=Zt({container:{paddingTop:10,paddingBottom:10},actions:{display:"flex",justifyContent:"space-between",marginBottom:10,"& a":{textDecoration:"none",color:"#fff"}}}),G3t=()=>{const t=IA(),e=OA(),n=rl(),r=$3t(),[i,a]=Ue.useState(window.innerWidth),[o]=Ue.useState([{label:"First Name",title:"firstName"},{label:"Last Name",title:"lastName"},{label:"Phone Number",title:"phoneNumber"},{label:"E-Mail",title:"email"}]),[s,l]=Ue.useState([]),[u,c]=Ue.useState(""),f=Ue.useRef(0),[h,m]=Ue.useState(!1),[b,_]=Ue.useState([]),[y,x]=Ue.useState([]),C=e.count||0,A=e.modalOpen,R=e.rows,I=e.idToDelete,[O,N]=Ue.useState({page:0,pageSize:5}),k=async($,K,te,ie)=>{m(!0),await hs.doFetch({limit:$,page:K,orderBy:te,request:ie})(t),m(!1)};Ue.useEffect(()=>{k(O.pageSize,O.page,b[0],u)},[b,O,u]),Ue.useEffect(()=>(P(),window.addEventListener("resize",P),()=>window.removeEventListener("resize",P)),[]);const D=$=>{_($)},P=()=>{a(window.innerWidth)},j=$=>K=>{const te=K.target.value,ie=K.target.name;l(s.map(se=>se.id===$?{id:$,fields:{...se.fields,[ie]:te}}:se))},M=$=>{$.preventDefault();let K="&";s.forEach(te=>{Object.hasOwn(o[o.map(ie=>ie.title).indexOf(te.fields.selectedField)],"number")?K+=`${te.fields.selectedField}Range=${te.fields.filterValueFrom}&${te.fields.selectedField}Range=${te.fields.filterValueTo}&`:K+=`${te.fields.selectedField}=${te.fields.filterValue}&`}),k(O.pageSize,0,b[0],K),c(K)},z=()=>{l([]),c(""),hs.doFetch({limit:O.pageSize,page:0,request:""})(t)},G=()=>{f.current+=1;let $={id:`filter_${f.current}`,fields:{filterValue:"",filterValueFrom:"",filterValueTo:""}};$.fields.selectedField=o[0].title,l([...s,$])},Y=$=>K=>{K.preventDefault();const te=s.filter(ie=>ie.id!==$);te.length||hs.doFetch({limit:10,page:1})(t),l(te)},H=()=>{hs.doDelete({limit:10,page:0,request:u},I)(t)},W=($,K)=>{const te=K;$.stopPropagation(),hs.doOpenConfirm(te)(t)},q=()=>{hs.doCloseConfirm()(t)};function Q(){return d.jsx(tMe,{height:"100%",alignItems:"center",justifyContent:"center",children:"No results found"})}const X=[{field:"firstName",flex:.6,headerName:"First Name"},{field:"lastName",flex:.6,headerName:"Last Name"},{field:"phoneNumber",flex:.6,headerName:"Phone Number"},{field:"email",flex:.6,headerName:"E-Mail"},{field:"role",headerName:"Role"},{field:"disabled",renderCell:$=>j3t($.row),headerName:"Disabled"},{field:"avatar",sortable:!1,renderCell:$=>F3t($.row),headerName:"Avatar"},{field:"id",headerName:"Actions",sortable:!1,flex:.6,maxWidth:80,renderCell:$=>d.jsx(U3t,{classes:r,entity:"users",openModal:W,...$})}];return d.jsxs("div",{children:[d.jsxs(et,{title:"Users",disableWidgetMenu:!0,children:[d.jsxs(ce,{className:r.actions,children:[d.jsx(gc,{to:"/app/user/new",children:d.jsx(tr,{variant:"contained",children:"New"})}),d.jsx(tr,{type:"button",variant:"contained",onClick:G,children:"Add Filter"})]}),d.jsxs(ce,{sx:{flexGrow:1},children:[s.map($=>d.jsxs(re,{container:!0,alignItems:"center",columns:12,spacing:1,className:r.container,children:[d.jsx(re,{size:3,children:d.jsxs(Vo,{size:"small",fullWidth:!0,children:[d.jsx(Xc,{children:"Field"}),d.jsx(pa,{label:"Field",name:"selectedField",size:"small",value:$.fields.selectedField,onChange:j($.id),children:o.map(K=>d.jsx($t,{value:`${K.title}`,children:K.label},K.title))})]})}),Object.hasOwn(o.find(K=>K.title===$.fields.selectedField)||{},"number")?d.jsxs(d.Fragment,{children:[d.jsx(re,{size:2,children:d.jsx(wn,{label:"From",type:"text",name:"filterValueFrom",size:"small",fullWidth:!0,onChange:j($.id)})}),d.jsx(re,{size:2,children:d.jsx(wn,{label:"To",type:"text",name:"filterValueTo",size:"small",fullWidth:!0,onChange:j($.id)})})]}):d.jsx(re,{size:4,children:d.jsx(wn,{label:"Contained",type:"text",name:"filterValue",size:"small",fullWidth:!0,onChange:j($.id)})}),d.jsx(re,{size:2,children:d.jsx(tr,{variant:"outlined",color:"error",onClick:Y($.id),children:d.jsx(Nk,{})})})]})),s.length>0&&d.jsxs(re,{container:!0,spacing:1,children:[d.jsx(re,{children:d.jsx(tr,{variant:"outlined",onClick:$=>M($),children:"Apply"})}),d.jsx(re,{children:d.jsx(tr,{color:"error",variant:"outlined",onClick:z,children:"Clear"})})]})]}),d.jsx("div",{style:{minHeight:500,width:"100%",paddingTop:20,paddingBottom:20},children:d.jsx(Uhe,{rows:h?[]:R,rowCount:C,columns:X,sortingMode:"server",sortModel:b,onSortModelChange:D,rowsPerPageOptions:[5,10,20,50,100],pageSize:5,pagination:!0,...O,paginationMode:"server",components:{NoRowsOverlay:Q,LoadingOverlay:Qc},onPageChange:$=>{N(K=>({...K,page:$}))},onPageSizeChange:$=>{N(K=>({...K,pageSize:$}))},onSelectionModelChange:$=>{x($)},selectionModel:y,checkboxSelection:!0,disableSelectionOnClick:!0,disableColumnMenu:!0,loading:h,onRowClick:$=>{n(`/app/users/${$.id}/edit`)},autoHeight:!0})})]}),d.jsx(H3t,{open:A||!1,title:"Confirm delete",contentText:"Are you sure you want to delete this item?",onClose:q,onSubmit:H})]})},V3t=()=>d.jsx("div",{children:d.jsx(G3t,{})});function Y3t(){const t=z9(),[e,n]=Ue.useState(null),r=!!e,i=r?"add-section-popover":void 0,a=s=>{n(r?null:s.currentTarget)};let o=NS();return d.jsxs("div",{className:t.root,children:[d.jsx(KPe,{}),d.jsx(_se,{structure:S1e}),d.jsxs("div",{className:Nt(t.content,{[t.contentShift]:o.isSidebarOpened}),children:[d.jsx("div",{className:t.fakeToolbar}),d.jsx(Iwt,{}),d.jsxs(p9,{children:[d.jsx(Qt,{path:"dashboard",element:d.jsx(GXe,{})}),d.jsx(Qt,{path:"profile",element:d.jsx(lZe,{})}),d.jsx(Qt,{path:"user/edit",element:d.jsx(j4e,{})}),d.jsx(Qt,{path:"core",element:d.jsx(yl,{to:"/app/core/typography",replace:!0})}),d.jsx(Qt,{path:"core/typography",element:d.jsx(uZe,{})}),d.jsx(Qt,{path:"core/colors",element:d.jsx(Snt,{})}),d.jsx(Qt,{path:"core/grid",element:d.jsx(Ent,{})}),d.jsx(Qt,{path:"tables",element:d.jsx(yl,{to:"/app/tables/static",replace:!0})}),d.jsx(Qt,{path:"tables/static",element:d.jsx(emt,{})}),d.jsx(Qt,{path:"tables/dynamic",element:d.jsx(umt,{})}),d.jsx(Qt,{path:"ui",element:d.jsx(yl,{to:"/app/ui/icons",replace:!0})}),d.jsx(Qt,{path:"ui/icons",element:d.jsx(hmt,{})}),d.jsx(Qt,{path:"ui/badge",element:d.jsx(mmt,{})}),d.jsx(Qt,{path:"ui/carousel",element:d.jsx(_mt,{})}),d.jsx(Qt,{path:"ui/modal",element:d.jsx(Amt,{})}),d.jsx(Qt,{path:"ui/navbar",element:d.jsx(Pmt,{})}),d.jsx(Qt,{path:"ui/tooltips",element:d.jsx(Bmt,{})}),d.jsx(Qt,{path:"ui/tabs",element:d.jsx(jmt,{})}),d.jsx(Qt,{path:"ui/cards",element:d.jsx(Cmt,{})}),d.jsx(Qt,{path:"ui/widget",element:d.jsx(Hmt,{})}),d.jsx(Qt,{path:"ui/progress",element:d.jsx(Umt,{})}),d.jsx(Qt,{path:"ui/notifications",element:d.jsx(Mmt,{})}),d.jsx(Qt,{path:"forms",element:d.jsx(yl,{to:"/app/forms/elements",replace:!0})}),d.jsx(Qt,{path:"forms/elements",element:d.jsx(c1t,{})}),d.jsx(Qt,{path:"forms/validation",element:d.jsx(u1t,{})}),d.jsx(Qt,{path:"charts",element:d.jsx(yl,{to:"/app/charts/overview",replace:!0})}),d.jsx(Qt,{path:"charts/overview",element:d.jsx(e_t,{})}),d.jsx(Qt,{path:"charts/line",element:d.jsx(s_t,{})}),d.jsx(Qt,{path:"charts/bar",element:d.jsx(c_t,{})}),d.jsx(Qt,{path:"charts/pie",element:d.jsx(d_t,{})}),d.jsx(Qt,{path:"grid",element:d.jsx(vvt,{})}),d.jsx(Qt,{path:"maps",element:d.jsx(yl,{to:"/app/maps/google",replace:!0})}),d.jsx(Qt,{path:"maps/google",element:d.jsx(Bvt,{})}),d.jsx(Qt,{path:"maps/vector",element:d.jsx(Yvt,{})}),d.jsx(Qt,{path:"extra",element:d.jsx(yl,{to:"/app/extra/timeline",replace:!0})}),d.jsx(Qt,{path:"extra/timeline",element:d.jsx(Zvt,{})}),d.jsx(Qt,{path:"extra/search",element:d.jsx(i0t,{})}),d.jsx(Qt,{path:"extra/gallery",element:d.jsx(_0t,{})}),d.jsx(Qt,{path:"extra/invoice",element:d.jsx(E0t,{})}),d.jsx(Qt,{path:"extra/calendar",element:d.jsx(Owt,{})}),d.jsx(Qt,{path:"ecommerce/management",element:d.jsx(X4,{children:d.jsx(Zmt,{})})}),d.jsx(Qt,{path:"ecommerce/management/edit/:id",element:d.jsx(X4,{children:d.jsx(kte,{})})}),d.jsx(Qt,{path:"ecommerce/management/create",element:d.jsx(X4,{children:d.jsx(kte,{})})}),d.jsx(Qt,{path:"ecommerce/product/:id",element:d.jsx(Pte,{})}),d.jsx(Qt,{path:"ecommerce/product",element:d.jsx(Pte,{})}),d.jsx(Qt,{path:"ecommerce/gridproducts",element:d.jsx(a1t,{})}),d.jsx(Qt,{path:"users",element:d.jsx(V3t,{})}),d.jsx(Qt,{path:"user/new",element:d.jsx(die,{})}),d.jsx(Qt,{path:"users/:id/edit",element:d.jsx(die,{})}),d.jsx(Qt,{path:"*",element:d.jsx(yl,{to:"/app/dashboard",replace:!0})})]}),d.jsx(p3e,{color:"primary","aria-label":"settings",onClick:s=>a(s),className:t.changeThemeFab,style:{zIndex:2e3},children:d.jsx(Zae,{style:{color:"#fff"}})}),d.jsx(M4e,{id:i,open:r,anchorEl:e}),d.jsxs(ZPe,{children:[d.jsxs("div",{children:[d.jsx(vr,{color:"primary",href:"https://flatlogic.com/",target:"_blank",className:t.link,children:"Flatlogic"}),d.jsx(vr,{color:"primary",href:"https://flatlogic.com/about",target:"_blank",className:t.link,children:"About Us"}),d.jsx(vr,{color:"primary",href:"https://flatlogic.com/blog",target:"_blank",className:t.link,children:"Blog"})]}),d.jsxs("div",{children:[d.jsx(vr,{href:"https://www.facebook.com/flatlogic",target:"_blank",children:d.jsx(pn,{"aria-label":"facebook",children:d.jsx(bA,{style:{color:"#6E6E6E99"}})})}),d.jsx(vr,{href:"https://twitter.com/flatlogic",target:"_blank",children:d.jsx(pn,{"aria-label":"twitter",children:d.jsx(_A,{style:{color:"#6E6E6E99"}})})}),d.jsx(vr,{href:"https://github.com/flatlogic",target:"_blank",children:d.jsx(pn,{"aria-label":"github",style:{padding:"12px 0 12px 12px"},children:d.jsx(x9,{style:{color:"#6E6E6E99"}})})})]})]})]})]})}const Sx=Zt(t=>({root:{display:"flex",maxWidth:"100vw",overflowX:"hidden"},content:{flexGrow:1,padding:t.spacing(3),width:"calc(100vw - 240px)",minHeight:"100vh"},contentShift:{width:`calc(100vw - ${240+t.spacing(6)}px)`,transition:t.transitions.create(["width","margin"],{easing:t.transitions.easing.sharp,duration:t.transitions.duration.enteringScreen})},fakeToolbar:{...t.mixins.toolbar},margin:{marginBottom:24},tabPanel:{backgroundColor:"#f5f5f5",padding:t.spacing(2)},tabsAppBar:{backgroundColor:t.palette.primary.main,color:t.palette.primary.contrastText,boxShadow:"none",borderRadius:t.shape.borderRadius},tabs:{minHeight:44,"& .MuiTabs-indicator":{backgroundColor:t.palette.primary.contrastText,height:3}},tab:{minHeight:44,textTransform:"none",fontWeight:600,color:`${t.palette.primary.contrastText} !important`,opacity:.78,"&.Mui-selected":{color:`${t.palette.primary.contrastText} !important`,opacity:1}},link:{display:"flex",alignItems:"center",color:t.palette.primary.main,fontWeight:"bold"}})),W3t=()=>d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:3,children:d.jsx(re,{size:12,children:d.jsxs(et,{disableWidgetMenu:!0,children:[d.jsx(oe,{variant:"h5",weight:"medium",children:"Requirements:"}),d.jsxs(vf,{children:[d.jsx(oo,{children:d.jsx(Ei,{primary:"1. macOS, Windows, or Linux"})}),d.jsx(oo,{children:d.jsx(Ei,{primary:"2. Node.js 20.15 or newer (LTS recommended)"})}),d.jsx(oo,{children:d.jsx(Ei,{primary:"3. npm or Yarn package manager"})}),d.jsx(oo,{children:d.jsx(Ei,{primary:"4. Optional: Node.js backend running on http://localhost:8080"})})]}),d.jsx(oe,{variant:"h5",weight:"medium",children:"Quick Start:"}),d.jsxs(vf,{children:[d.jsx(oo,{children:d.jsx(Ei,{children:d.jsxs("span",{children:["1. Install dependencies: ",d.jsx(Kt,{inline:!0,children:"npm install"})," or ",d.jsx(Kt,{inline:!0,children:"yarn install"})]})})}),d.jsx(oo,{children:d.jsx(Ei,{children:d.jsxs("span",{children:["2. Start frontend-only mode (default): ",d.jsx(Kt,{inline:!0,children:"npm run dev"})," or ",d.jsx(Kt,{inline:!0,children:"yarn dev"})]})})}),d.jsx(oo,{children:d.jsx(Ei,{children:d.jsxs("span",{children:["3. Enable backend mode by setting ",d.jsx(Kt,{inline:!0,children:"VITE_BACKEND=true"})," in ",d.jsx(Kt,{inline:!0,children:".env.local"}),", then run ",d.jsx(Kt,{inline:!0,children:"npm run dev"})]})})}),d.jsx(oo,{children:d.jsx(Ei,{children:d.jsxs("span",{children:["4. Build production bundle: ",d.jsx(Kt,{inline:!0,children:"npm run build"})," or ",d.jsx(Kt,{inline:!0,children:"yarn build"})]})})})]}),d.jsx(oe,{variant:"h5",weight:"medium",children:"Other scripts:"}),d.jsxs(vf,{children:[d.jsx(oo,{children:d.jsx(Ei,{children:d.jsxs("span",{children:[d.jsx(Kt,{inline:!0,children:"npm run start"}),": starts development server (alias to dev)"]})})}),d.jsx(oo,{children:d.jsx(Ei,{children:d.jsxs("span",{children:[d.jsx(Kt,{inline:!0,children:"npm run preview"}),": preview production build locally"]})})}),d.jsx(oo,{children:d.jsx(Ei,{children:d.jsxs("span",{children:[d.jsx(Kt,{inline:!0,children:"npm run format"}),": format source files with Prettier"]})})})]}),d.jsx(oe,{variant:"body2",children:"If users pages show Network Error, run frontend-only mode or start backend API on port 8080."})]})})})}),q3t=()=>{const t=Sx(),[e,n]=Ue.useState(0),[r,i]=Ue.useState(0),[a,o]=Ue.useState(0),s=(f,h)=>{n(h)},l=(f,h)=>{i(h)},u=(f,h)=>{o(h)},c=({children:f,index:h,className:m=t.tabPanel,value:b})=>h===b?d.jsx("section",{className:m,children:f}):null;return d.jsxs(et,{title:"Typography",inheritHeight:!0,disableWidgetMenu:!0,children:[d.jsx(oe,{variant:"body2",children:"Provide typography on your page."}),d.jsx(Kt,{children:"import { Typography } from './components/Wrappers';"}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,children:d.jsxs(Na,{className:t.tabs,value:e,onChange:s,"aria-label":"typography size",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsxs(c,{index:0,value:e,children:[d.jsx(oe,{variant:"body1",children:"Default typography"}),d.jsx(oe,{size:"sm",variant:"body1",children:"SM typography"}),d.jsx(oe,{size:"md",variant:"body1",children:"MD typography"}),d.jsx(oe,{size:"xl",variant:"body1",children:"XL typography"}),d.jsx(oe,{size:"xxl",variant:"body1",children:"XXL typography"})]}),d.jsx(c,{index:1,value:e,children:d.jsx(Kt,{children:` + Default typography + SM typography + MD typography + XL typography + XXL typography + `})}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,style:{marginTop:16},children:d.jsxs(Na,{className:t.tabs,value:r,onChange:l,"aria-label":"typography weight",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsxs(c,{index:0,value:r,children:[d.jsx(oe,{variant:"body1",children:"Default weight"}),d.jsx(oe,{weight:"light",variant:"body1",children:"Light weight"}),d.jsx(oe,{weight:"medium",variant:"body1",children:"Medium typography"}),d.jsx(oe,{weight:"bold",variant:"body1",children:"Bold typography"})]}),d.jsx(c,{index:1,value:r,children:d.jsx(Kt,{children:` + Default weight + Light weight + Medium typography + Bold typography + `})}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,style:{marginTop:16},children:d.jsxs(Na,{className:t.tabs,value:a,onChange:u,"aria-label":"typography weight",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsxs(c,{index:0,value:a,children:[d.jsx(oe,{variant:"body1",children:"Default"}),d.jsx(oe,{color:"primary",variant:"body1",children:"Primary"}),d.jsx(oe,{color:"secondary",variant:"body1",children:"Secondary"}),d.jsx(oe,{color:"warning",variant:"body1",children:"Warning"}),d.jsx(oe,{color:"success",variant:"body1",children:"Success"}),d.jsx(oe,{color:"info",variant:"body1",children:"Success"})]}),d.jsx(c,{index:1,value:a,children:d.jsx(Kt,{children:` + Default + + Primary + + + Secondary + + + Warning + + + Success + + + Success + + `})}),d.jsx(ce,{mt:1,children:d.jsxs(vr,{href:"https://mui.com/material-ui/api/typography/",color:"primary",className:t.link,variant:"h6",target:"_blank",children:["Other props ",d.jsx($9,{})]})})]})},K3t=Zt(t=>({link:{display:"flex",alignItems:"center",color:t.palette.primary.main,fontWeight:"bold"}})),X3t=()=>{const t=Sx(),e=K3t(),[n,r]=Ue.useState(0),[i,a]=Ue.useState(0),[o,s]=Ue.useState(0),[l,u]=Ue.useState(0),[c,f]=Ue.useState(0),h=(C,A)=>{r(A)},m=(C,A)=>{a(A)},b=(C,A)=>{s(A)},_=(C,A)=>{u(A)},y=(C,A)=>{f(A)},x=({children:C,index:A,className:R=t.tabPanel,value:I})=>A===I?d.jsx("section",{className:R,children:C}):null;return d.jsxs(et,{title:"Typography",inheritHeight:!0,disableWidgetMenu:!0,children:[d.jsx(oe,{variant:"body2",children:"Provide widget on your page."}),d.jsx(Kt,{children:"import Widget from './components/Widget';"}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,children:d.jsxs(Na,{className:t.tabs,value:n,onChange:h,"aria-label":"typography size",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsx(x,{index:0,value:n,children:d.jsx(et,{title:"Widget example",children:"Widget with the title"})}),d.jsx(x,{index:1,value:n,children:d.jsx(Kt,{children:` + + Widget with the title + + `})}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,style:{marginTop:16},children:d.jsxs(Na,{className:t.tabs,value:i,onChange:m,"aria-label":"typography weight",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsx(x,{index:0,value:i,children:d.jsx(et,{title:"Title",subtitle:"subtitle",children:"Widget with the title and the subtitle"})}),d.jsx(x,{index:1,value:i,children:d.jsx(Kt,{children:` + + Widget with the title and the subtitle + + `})}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,style:{marginTop:16},children:d.jsxs(Na,{className:t.tabs,value:o,onChange:b,"aria-label":"typography weight",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsx(x,{index:0,value:o,children:d.jsx(et,{noBodyPadding:!0,children:"No body padding"})}),d.jsx(x,{index:1,value:o,children:d.jsx(Kt,{children:` + + No body padding + + `})}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,style:{marginTop:16},children:d.jsxs(Na,{className:t.tabs,value:l,onChange:_,"aria-label":"typography weight",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsx(x,{index:0,value:l,children:d.jsx(et,{title:"Title",disableWidgetMenu:!0,children:"No widget menu"})}),d.jsx(x,{index:1,value:l,children:d.jsx(Kt,{children:` + + No widget menu + + `})}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,style:{marginTop:16},children:d.jsxs(Na,{className:t.tabs,value:c,onChange:y,"aria-label":"typography weight",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsx(x,{index:0,value:c,children:d.jsx(et,{header:d.jsx(d.Fragment,{children:d.jsx("h1",{children:"Widget header"})}),children:"Custom header"})}),d.jsx(x,{index:1,value:c,children:d.jsx(Kt,{children:` + +

Widget header

+ + )}> + Custom header +
+ `})}),d.jsx(ce,{mt:1,children:d.jsxs(vr,{href:"https://mui.com/material-ui/api/paper/",color:"primary",className:e.link,variant:"h6",target:"_blank",children:["Other props ",d.jsx($9,{})]})})]})},Q3t=()=>{const t=Sx(),[e,n]=Ue.useState(0),r=(a,o)=>{n(o)},i=({children:a,index:o,className:s=t.tabPanel,value:l})=>o===l?d.jsx("section",{className:s,children:a}):null;return d.jsxs(et,{title:"Header",inheritHeight:!0,disableWidgetMenu:!0,children:[d.jsx(oe,{variant:"body2",children:"Header element on your page."}),d.jsx(Kt,{children:"import { AppBar, Toolbar, IconButton } from '@mui/material'"}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,children:d.jsxs(Na,{className:t.tabs,value:e,onChange:r,"aria-label":"typography size",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsx(i,{index:0,value:e,children:d.jsx(Ro,{position:"static",children:d.jsxs(dd,{children:[d.jsx(pn,{edge:"start",className:t.menuButton,color:"inherit","aria-label":"menu",children:d.jsx(Mb,{})}),d.jsx(oe,{variant:"h6",className:t.title,children:"News"}),d.jsx(gt,{color:"inherit",style:{marginLeft:"auto"},children:"Login"})]})})}),d.jsx(i,{index:1,value:e,children:d.jsx(Kt,{children:` + + + + + + + News + + + + + `})}),d.jsx(ce,{mt:1,children:d.jsxs(vr,{href:"https://mui.com/material-ui/api/app-bar/",color:"primary",className:t.link,variant:"h6",target:"_blank",children:["Other props ",d.jsx($9,{})]})})]})},Z3t=[{id:"dashboard",label:"Dashboard",link:"/app/dashboard"},{id:"ecommerce",label:"E-Commerce",link:"/app/ecommerce"},{id:"users",label:"Users",children:[{id:"users-list",label:"Users List",link:"/app/users"},{id:"users-create",label:"Create User",link:"/app/user/new"}]}],J3t=()=>{const t=Sx(),[e,n]=Ue.useState(0),[r,i]=Ue.useState("/app/users"),[a,o]=Ue.useState(!0),s=(u,c)=>{n(c)},l=({children:u,index:c,value:f,className:h=t.tabPanel})=>c!==f?null:d.jsx("section",{className:h,children:u});return d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:3,children:d.jsx(re,{size:12,children:d.jsxs(et,{title:"Sidebar",disableWidgetMenu:!0,children:[d.jsxs(oe,{variant:"body2",style:{marginBottom:16},children:["Sidebar navigation is built from a ",d.jsx(Kt,{inline:!0,children:"structure"})," ","array. Use it to describe top-level links and nested sections."]}),d.jsx(Ro,{position:"static",className:t.tabsAppBar,children:d.jsxs(Na,{className:t.tabs,value:e,onChange:s,"aria-label":"sidebar docs tabs",children:[d.jsx(nr,{className:t.tab,label:"Example"}),d.jsx(nr,{className:t.tab,label:"Code"})]})}),d.jsx(l,{index:0,value:e,children:d.jsxs(ce,{sx:{maxWidth:300,border:"1px solid",borderColor:"divider",borderRadius:2,overflow:"hidden",backgroundColor:"background.paper"},children:[d.jsx(ce,{sx:{px:2,py:1.25,backgroundColor:"primary.main",color:"primary.contrastText",fontWeight:600},children:"Sidebar Preview"}),d.jsxs(vf,{disablePadding:!0,children:[d.jsxs(Pg,{selected:r==="/app/dashboard",onClick:()=>i("/app/dashboard"),children:[d.jsx(fc,{sx:{minWidth:36},children:d.jsx(h5e,{fontSize:"small"})}),d.jsx(Ei,{primary:"Dashboard"})]}),d.jsxs(Pg,{selected:r==="/app/ecommerce",onClick:()=>i("/app/ecommerce"),children:[d.jsx(fc,{sx:{minWidth:36},children:d.jsx(V5e,{fontSize:"small"})}),d.jsx(Ei,{primary:"E-Commerce"})]}),d.jsxs(Pg,{onClick:()=>o(u=>!u),children:[d.jsx(fc,{sx:{minWidth:36},children:d.jsx(D5e,{fontSize:"small"})}),d.jsx(Ei,{primary:"Users"}),a?d.jsx(_5e,{}):d.jsx(lf,{})]}),d.jsx(Yb,{in:a,timeout:"auto",unmountOnExit:!0,children:d.jsxs(vf,{disablePadding:!0,children:[d.jsx(Pg,{sx:{pl:6},selected:r==="/app/users",onClick:()=>i("/app/users"),children:d.jsx(Ei,{primary:"Users List"})}),d.jsx(Pg,{sx:{pl:6},selected:r==="/app/user/new",onClick:()=>i("/app/user/new"),children:d.jsx(Ei,{primary:"Create User"})})]})})]})]})}),d.jsxs(l,{index:1,value:e,children:[d.jsx(Kt,{children:` +const sidebarStructure = [ + { id: 'dashboard', label: 'Dashboard', link: '/app/dashboard' }, + { id: 'ecommerce', label: 'E-Commerce', link: '/app/ecommerce' }, + { + id: 'users', + label: 'Users', + children: [ + { id: 'users-list', label: 'Users List', link: '/app/users' }, + { id: 'users-create', label: 'Create User', link: '/app/user/new' }, + ], + }, +]; + + + `}),d.jsxs(oe,{variant:"body2",style:{marginTop:12},children:["In this project, navigation structure is defined in"," ",d.jsx(Kt,{inline:!0,children:"src/components/Sidebar/SidebarStructure.js"}),"."]})]}),d.jsxs(oe,{variant:"body2",style:{marginTop:12},children:["Total items in this example structure:"," ",d.jsx(Kt,{inline:!0,children:String(Z3t.length)})]})]})})})})},eIt=()=>d.jsx(d.Fragment,{children:d.jsx(re,{container:!0,spacing:3,children:d.jsx(re,{size:12,children:d.jsxs(et,{disableWidgetMenu:!0,children:[d.jsx(oe,{variant:"h4",style:{marginBottom:15,marginTop:10,color:"rgb(110, 110, 110)"},children:"Buttons"}),d.jsx(oe,{style:{marginBottom:16},children:"Button's variants:"}),d.jsx(gt,{variant:"contained",style:{marginRight:8},children:"contained"}),d.jsx(gt,{variant:"outlined",style:{marginRight:8},children:"outlined"}),d.jsx(gt,{children:"text"}),d.jsx(oe,{style:{marginBottom:16,marginTop:16},children:"Code:"}),d.jsx(Kt,{row:!0,inline:!0,children:` + + + + `}),d.jsx(oe,{style:{marginBottom:16},children:"Button's colors:"}),d.jsxs(ce,{display:"flex",flexWrap:"wrap",children:[d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{variant:"contained",children:"default"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{color:"primary",variant:"contained",children:"primary"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{color:"secondary",variant:"contained",children:"secondary"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{color:"warning",variant:"contained",children:"warning"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{color:"success",variant:"contained",children:"success"})}),d.jsx(ce,{mt:1,mr:1,children:d.jsx(gt,{variant:"contained",color:"info",children:"info"})})]}),d.jsx(oe,{style:{marginBottom:16,marginTop:16},children:"Code:"}),d.jsx(Kt,{row:!0,inline:!0,children:` + + + + + + + `})]})})})}),tIt=Zt(t=>({menuIcon:{marginRight:t.spacing(2)},icons:{[t.breakpoints.down("sm")]:{display:"none"}},appBar:{width:"100%",zIndex:t.zIndex.drawer+1,transition:t.transitions.create(["margin"],{easing:t.transitions.easing.sharp,duration:t.transitions.duration.leavingScreen})},toolbar:{paddingLeft:t.spacing(2),paddingRight:t.spacing(2)},hide:{display:"none"},grow:{flexGrow:1},logo:{flexGrow:1,display:"flex",alignItems:"center",[t.breakpoints.down("sm")]:{display:"none"},marginLeft:20,marginRight:20},headerButtons:{[t.breakpoints.down("sm")]:{marginLeft:"auto"}},fullWidthXs:{[t.breakpoints.down("sm")]:{width:"100%"}}})),nIt=()=>{const t=or(),e=tIt(),n=rl();let r=NS(),i=q9();const[a,o]=E.useState(!1);E.useEffect(function(){return window.addEventListener("resize",s),s(),function(){window.removeEventListener("resize",s)}});function s(){let l=window.innerWidth,u=t.breakpoints.values.md,c=law(i),className:Nt(e.headerMenuButton,e.headerMenuButtonCollapse),children:!r.isSidebarOpened&&a||r.isSidebarOpened&&!a?d.jsx(H9,{classes:{root:Nt(e.headerIcon,e.headerIconCollapse)}}):d.jsx(Mb,{classes:{root:Nt(e.headerIcon,e.headerIconCollapse)}})}),d.jsxs(oe,{variant:"h6",block:!0,className:e.logo,children:["React Material Admin Full"," ",d.jsx(oe,{variant:"h5",children:"  Documentation"})]}),d.jsxs(ce,{display:"flex",alignItems:"center",className:e.fullWidthXs,children:[d.jsxs(ce,{display:"flex",className:e.icons,children:[d.jsx(vr,{href:"https://twitter.com/flatlogic",children:d.jsx(pn,{children:d.jsx(_A,{style:{color:"#fff"}})})}),d.jsx(vr,{href:"https://www.facebook.com/flatlogic",children:d.jsx(pn,{children:d.jsx(bA,{style:{color:"#fff"}})})}),d.jsx(vr,{href:"https://instagram.com/flatlogiccom/",children:d.jsx(pn,{children:d.jsx(G9,{style:{color:"#fff"}})})}),d.jsx(vr,{href:"https://www.linkedin.com/company/flatlogic/",children:d.jsx(pn,{children:d.jsx(tse,{style:{color:"#fff"}})})}),d.jsx(vr,{href:"https://github.com/flatlogic",children:d.jsx(pn,{children:d.jsx(x9,{style:{color:"#fff"}})})})]}),d.jsxs(ce,{className:e.headerButtons,children:[d.jsx(tr,{color:"inherit",style:{marginRight:16},onClick:()=>n("/app"),children:"Live Preview"}),d.jsx(tr,{href:"https://flatlogic.com/templates/react-material-admin-full",variant:"outlined",color:"secondary",children:"Buy"})]})]})]})})},fie=[{id:0,label:"Getting Started",link:"/documentation/getting-started",children:[{label:"Quick start",link:"/documentation/getting-started/quick-start"}]},{id:2,label:"Components",link:"/documentation/components",children:[{label:"Typography",link:"/documentation/components/typography"},{label:"Widget",link:"/documentation/components/widget"},{label:"Header",link:"/documentation/components/header"},{label:"Sidebar",link:"/documentation/components/sidebar"},{label:"Buttons",link:"/documentation/components/buttons"}]}],rIt=()=>{let t=NS();const e=Sx(),n=Ka();return d.jsxs("div",{className:e.root,children:[d.jsx(nIt,{}),d.jsx(_se,{structure:fie}),d.jsxs("div",{className:Nt(e.content,{[e.contentShift]:t.isSidebarOpened}),children:[d.jsx("div",{className:e.fakeToolbar}),d.jsx(et,{disableWidgetMenu:!0,inheritHeight:!0,className:e.margin,children:d.jsx(re,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",children:fie.map(r=>{if(!r.children&&n.pathname.includes(r.link)&&r.link)return d.jsx(ce,{display:"flex",alignItems:"center",children:d.jsx(q0,{"aria-label":"breadcrumb",children:d.jsx(oe,{variant:"h4",children:r.label})})},r.id);if(r.children)return r.children.forEach(i=>{if(n.pathname.includes(i.link))return d.jsxs(q0,{separator:d.jsx(Mk,{fontSize:"small"}),"aria-label":"breadcrumb",children:[d.jsx(oe,{variant:"h6",children:r.label}),d.jsx(oe,{color:"primary",variant:"h6",children:i.label})]},r.id)})})})}),d.jsxs(p9,{children:[d.jsx(Qt,{index:!0,element:d.jsx(yl,{to:"getting-started/quick-start",replace:!0})}),d.jsx(Qt,{path:"getting-started/quick-start",element:d.jsx(W3t,{})}),d.jsx(Qt,{path:"components/typography",element:d.jsx(q3t,{})}),d.jsx(Qt,{path:"components/widget",element:d.jsx(X3t,{})}),d.jsx(Qt,{path:"components/header",element:d.jsx(Q3t,{})}),d.jsx(Qt,{path:"components/sidebar",element:d.jsx(J3t,{})}),d.jsx(Qt,{path:"components/buttons",element:d.jsx(eIt,{})})]})]})]})},iIt=Zt(t=>({container:{height:"100vh",width:"100vw",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",backgroundColor:t.palette.primary.main,position:"absolute",top:0,left:0},logotype:{display:"flex",alignItems:"center",marginBottom:t.spacing(12),[t.breakpoints.down("sm")]:{display:"none"}},logotypeText:{fontWeight:500,color:"white",marginLeft:t.spacing(2)},logotypeIcon:{width:70,marginRight:t.spacing(2)},paperRoot:{boxShadow:t.customShadows.widgetDark,display:"flex",flexDirection:"column",alignItems:"center",paddingTop:t.spacing(8),paddingBottom:t.spacing(8),paddingLeft:t.spacing(6),paddingRight:t.spacing(6),maxWidth:404},textRow:{marginBottom:t.spacing(10),textAlign:"center"},errorCode:{fontSize:148,fontWeight:600},safetyText:{fontWeight:300,color:t.palette.text.hint},backButton:{textTransform:"none",fontSize:22}})),aIt="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='131px'%20height='106px'%20viewBox='0%200%20131%20106'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2053.2%20(72643)%20-%20https://sketchapp.com%20--%3e%3ctitle%3elogo_white%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cg%20id='logo_white'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cg%20id='Group-39'%20transform='translate(12.000000,%2016.000000)'%20stroke-width='16.3476923'%3e%3cpath%20d='M4,72.4669231%20L52.2318841,0'%20id='Line-10'%20stroke='%23FFFFFF'%3e%3c/path%3e%3cpath%20d='M1.10416667,74.69%20L105.551432,74.69'%20id='Line-10'%20stroke='%23FBC02D'%3e%3c/path%3e%3cpath%20d='M52.2318841,0%20L105.551432,74.69'%20id='Line-10'%20stroke='%23FF5252'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e",pie={403:{title:"Access denied",description:"You don't have permissions to view this page"},404:{title:"Page doesn't exist",description:"Looks like the page you're looking for no longer exists"},500:{title:"Server error",description:"Something went wrong while processing your request"}};function V6({code:t}){let e=iIt();const n=Ka(),r=new URLSearchParams(n.search),i=Number(r.get("code")),a=Number(t)||i||404,o=pie[a]||pie[404];return d.jsxs(re,{container:!0,className:e.container,children:[d.jsxs("div",{className:e.logotype,children:[d.jsx("img",{className:e.logotypeIcon,src:aIt,alt:"logo"}),d.jsx(oe,{variant:"h3",className:e.logotypeText,children:"React Material Admin Full"})]}),d.jsxs(Mo,{classes:{root:e.paperRoot},children:[d.jsx(oe,{variant:"h1",color:"primary",className:Nt(e.textRow,e.errorCode),children:a}),d.jsx(oe,{variant:"h5",color:"primary",className:e.textRow,children:o.title}),d.jsx(oe,{variant:"h6",color:"text",colorBrightness:"hint",className:Nt(e.textRow,e.safetyText),children:o.description}),d.jsx(gt,{variant:"contained",color:"primary",component:gc,to:"/",size:"large",className:e.backButton,children:"Back to Home"})]})]})}const oIt=Zt(t=>({container:{height:"100vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",position:"absolute",top:0,left:0},logotypeContainer:{backgroundColor:t.palette.primary.main,width:"60%",height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",padding:"1rem",[t.breakpoints.down("md")]:{width:"50%"},[t.breakpoints.down("md")]:{display:"none"}},logotypeImage:{width:165,marginBottom:t.spacing(4)},logotypeText:{color:"white",fontWeight:500,fontSize:84,textAlign:"center",[t.breakpoints.down("md")]:{fontSize:48}},customFormContainer:{width:"40%",height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",overflow:"auto",alignItems:"center",[t.breakpoints.down("md")]:{width:"50%",overflow:"visible"}},formContainer:{width:"40%",height:"100%",display:"flex",flexDirection:"column",overflow:"auto",alignItems:"center",[t.breakpoints.down("md")]:{width:"50%",overflow:"visible"}},form:{width:320},tab:{fontWeight:400,fontSize:18},greeting:{fontWeight:500,textAlign:"center",marginTop:t.spacing(4)},subGreeting:{fontWeight:500,textAlign:"center",marginTop:t.spacing(2)},googleButton:{marginTop:t.spacing(6),boxShadow:t.customShadows.widget,backgroundColor:"white",width:"100%",textTransform:"none"},googleButtonCreating:{marginTop:0},googleIcon:{width:30,marginRight:t.spacing(2)},creatingButtonContainer:{marginTop:t.spacing(2.5),height:46,display:"flex",justifyContent:"center",alignItems:"center"},createAccountButton:{height:46,textTransform:"none"},formDividerContainer:{marginTop:t.spacing(4),marginBottom:t.spacing(4),display:"flex",alignItems:"center"},formDividerWord:{paddingLeft:t.spacing(2),paddingRight:t.spacing(2)},formDivider:{flexGrow:1,height:1,backgroundColor:t.palette.text.hint+"40"},errorMessage:{textAlign:"center",color:"#ff0000ba"},textFieldUnderline:{"&:before":{borderBottomColor:t.palette.primary.light},"&:after":{borderBottomColor:t.palette.primary.main},"&:hover:before":{borderBottomColor:`${t.palette.primary.light} !important`}},textField:{borderBottomColor:t.palette.background.light},formButtons:{width:"100%",marginTop:t.spacing(4),display:"flex",justifyContent:"space-between",alignItems:"center"},forgetButton:{textTransform:"none",fontWeight:400},loginLoader:{marginLeft:t.spacing(4)},copyright:{marginTop:t.spacing(4),whiteSpace:"nowrap",[t.breakpoints.up("md")]:{bottom:t.spacing(2)}}})),sIt="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='131px'%20height='106px'%20viewBox='0%200%20131%20106'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2053.2%20(72643)%20-%20https://sketchapp.com%20--%3e%3ctitle%3elogo_white%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cg%20id='logo_white'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cg%20id='Group-39'%20transform='translate(12.000000,%2016.000000)'%20stroke-width='16.3476923'%3e%3cpath%20d='M4,72.4669231%20L52.2318841,0'%20id='Line-10'%20stroke='%23FFFFFF'%3e%3c/path%3e%3cpath%20d='M1.10416667,74.69%20L105.551432,74.69'%20id='Line-10'%20stroke='%23FBC02D'%3e%3c/path%3e%3cpath%20d='M52.2318841,0%20L105.551432,74.69'%20id='Line-10'%20stroke='%23FF5252'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e",hie="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='iso-8859-1'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2019.0.0,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20512%20512'%20style='enable-background:new%200%200%20512%20512;'%20xml:space='preserve'%3e%3cpath%20style='fill:%23FBBB00;'%20d='M113.47,309.408L95.648,375.94l-65.139,1.378C11.042,341.211,0,299.9,0,256%20c0-42.451,10.324-82.483,28.624-117.732h0.014l57.992,10.632l25.404,57.644c-5.317,15.501-8.215,32.141-8.215,49.456%20C103.821,274.792,107.225,292.797,113.47,309.408z'/%3e%3cpath%20style='fill:%23518EF8;'%20d='M507.527,208.176C510.467,223.662,512,239.655,512,256c0,18.328-1.927,36.206-5.598,53.451%20c-12.462,58.683-45.025,109.925-90.134,146.187l-0.014-0.014l-73.044-3.727l-10.338-64.535%20c29.932-17.554,53.324-45.025,65.646-77.911h-136.89V208.176h138.887L507.527,208.176L507.527,208.176z'/%3e%3cpath%20style='fill:%2328B446;'%20d='M416.253,455.624l0.014,0.014C372.396,490.901,316.666,512,256,512%20c-97.491,0-182.252-54.491-225.491-134.681l82.961-67.91c21.619,57.698,77.278,98.771,142.53,98.771%20c28.047,0,54.323-7.582,76.87-20.818L416.253,455.624z'/%3e%3cpath%20style='fill:%23F14336;'%20d='M419.404,58.936l-82.933,67.896c-23.335-14.586-50.919-23.012-80.471-23.012%20c-66.729,0-123.429,42.957-143.965,102.724l-83.397-68.276h-0.014C71.23,56.123,157.06,0,256,0%20C318.115,0,375.068,22.126,419.404,58.936z'/%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3cg%3e%3c/g%3e%3c/svg%3e",lIt=()=>{const t=new Date;return t.getHours()>=4&&t.getHours()<=12?"Good Morning":t.getHours()>=13&&t.getHours()<=16?"Good Day":t.getHours()>=17&&t.getHours()<=23?"Good Evening":"Good Night"};function cIt(){let t=oIt();const e=Ka(),n=rl(),r=new URLSearchParams(e.search).get("tab");let i=NA();E.useEffect(()=>{const D=new URLSearchParams(e.search).get("token");D&&(Dk(D,i),Pk()(i))},[]);let[a,o]=E.useState(!1),[s,l]=E.useState(null);const u=Number(r);let[c,f]=E.useState(Number.isFinite(u)?u:0),[h,m]=E.useState(""),[b,_]=E.useState("admin@flatlogic.com"),[y,x]=E.useState("password"),[C,A]=E.useState(""),[R,I]=E.useState(!1),O=()=>b.length!==0&&y.length!==0,N=k=>{k.key==="Enter"&&O()&&n2(i,b,y,o,l)};return d.jsxs(re,{container:!0,className:t.container,children:[d.jsxs("div",{className:t.logotypeContainer,children:[d.jsx("img",{src:sIt,alt:"logo",className:t.logotypeImage}),d.jsx(gn,{className:t.logotypeText,children:"React Material Admin Full"})]}),d.jsxs("div",{className:R?t.customFormContainer:t.formContainer,children:[d.jsx("div",{className:t.form,children:R?d.jsxs("div",{children:[d.jsx(wn,{id:"password",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:C,onChange:k=>A(k.target.value),margin:"normal",placeholder:"Email",type:"Email",fullWidth:!0}),d.jsxs("div",{className:t.formButtons,children:[a?d.jsx(mc,{size:26,className:t.loginLoader}):d.jsx(gt,{disabled:C.length===0,onClick:()=>$Pe(C)(i),variant:"contained",color:"primary",size:"large",children:"Send"}),d.jsx(gt,{color:"primary",size:"large",onClick:()=>I(!R),className:t.forgetButton,children:"Back to login"})]})]}):d.jsxs(d.Fragment,{children:[d.jsxs(Na,{value:c,onChange:(k,D)=>f(D),indicatorColor:"primary",textColor:"primary",centered:!0,children:[d.jsx(nr,{label:"Login",classes:{root:t.tab}}),d.jsx(nr,{label:"New User",classes:{root:t.tab}})]}),c===0&&d.jsxs(Ue.Fragment,{children:[wr.isBackend?d.jsx(et,{disableWidgetMenu:!0,inheritHeight:!0,style:{marginTop:32},children:d.jsxs(gn,{variant:"body2",component:"div",style:{textAlign:"center"},children:["This is a real app with Node.js backend - use",d.jsx(gn,{variant:"body2",weight:"bold",children:'"admin@flatlogic.com / password"'})," ","to login!"]})}):null,d.jsxs(gn,{variant:"h1",className:t.greeting,children:[lIt(),", User"]}),d.jsxs(gt,{size:"large",className:t.googleButton,onClick:()=>n2(i,b,y,o,l,"google"),children:[d.jsx("img",{src:hie,alt:"google",className:t.googleIcon})," Sign in with Google"]}),d.jsxs("div",{className:t.formDividerContainer,children:[d.jsx("div",{className:t.formDivider}),d.jsx(gn,{className:t.formDividerWord,children:"or"}),d.jsx("div",{className:t.formDivider})]}),d.jsx(lh,{in:s,style:s?{display:"inline-block"}:{display:"none"},children:d.jsx(gn,{className:t.errorMessage,children:"Something is wrong with your login or password :("})}),d.jsx(wn,{id:"email",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:b,onChange:k=>_(k.target.value),margin:"normal",placeholder:"Email Adress",type:"email",fullWidth:!0,onKeyDown:k=>N(k)}),d.jsx(wn,{id:"password",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:y,onChange:k=>x(k.target.value),margin:"normal",placeholder:"Password",type:"password",fullWidth:!0,onKeyDown:k=>N(k)}),d.jsxs("div",{className:t.formButtons,children:[a?d.jsx(mc,{size:26,className:t.loginLoader}):d.jsx(gt,{disabled:!O(),onClick:()=>n2(i,b,y,o,l),variant:"contained",color:"primary",size:"large",children:"Login"}),d.jsx(gt,{color:"primary",size:"large",onClick:()=>I(!R),className:t.forgetButton,children:"Forgot Password?"})]})]}),c===1&&d.jsxs(Ue.Fragment,{children:[d.jsx(gn,{variant:"h1",className:t.greeting,children:"Welcome!"}),d.jsx(gn,{variant:"h2",className:t.subGreeting,children:"Create your account"}),d.jsx(lh,{in:s,children:d.jsx(gn,{className:t.errorMessage,children:"Something is wrong with your login or password :("})}),d.jsx(wn,{id:"name",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:h,onChange:k=>m(k.target.value),margin:"normal",placeholder:"Full Name",type:"email",fullWidth:!0}),d.jsx(wn,{id:"email",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:b,onChange:k=>_(k.target.value),margin:"normal",placeholder:"Email Adress",type:"email",fullWidth:!0}),d.jsx(wn,{id:"password",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:y,onChange:k=>x(k.target.value),margin:"normal",placeholder:"Password",type:"password",fullWidth:!0}),d.jsx("div",{className:t.creatingButtonContainer,children:a?d.jsx(mc,{size:26}):d.jsx(gt,{onClick:()=>YPe(i,b,y,n)(),disabled:b.length===0||y.length===0||h.length===0,size:"large",variant:"contained",color:"primary",fullWidth:!0,className:t.createAccountButton,children:"Create your account"})}),d.jsxs("div",{className:t.formDividerContainer,children:[d.jsx("div",{className:t.formDivider}),d.jsx(gn,{className:t.formDividerWord,children:"or"}),d.jsx("div",{className:t.formDivider})]}),d.jsxs(gt,{size:"large",className:Nt(t.googleButton,t.googleButtonCreating),onClick:()=>n2(i,b,y,o,l,"google"),children:[d.jsx("img",{src:hie,alt:"google",className:t.googleIcon})," Sign in with Google"]})]})]})}),d.jsxs(gn,{color:"primary",className:t.copyright,children:["2014-",new Date().getFullYear()," ",d.jsx("a",{style:{textDecoration:"none",color:"inherit"},href:"https://flatlogic.com",rel:"noopener noreferrer",target:"_blank",children:"Flatlogic"}),", LLC. All rights reserved."]})]})]})}const uIt=()=>{const t=NA(),e=Ka(),n=rl();return E.useEffect(()=>{const i=new URLSearchParams(e.search).get("token");i&&WPe(i,n)(t)},[]),d.jsx(d.Fragment,{})},dIt=Zt(t=>({container:{height:"100vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",position:"absolute",top:0,left:0},logotypeContainer:{backgroundColor:t.palette.primary.main,width:"60%",height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",[t.breakpoints.down("md")]:{width:"50%"},[t.breakpoints.down("md")]:{display:"none"}},logotypeImage:{width:165,marginBottom:t.spacing(4)},logotypeText:{color:"white",fontWeight:500,fontSize:84,[t.breakpoints.down("md")]:{fontSize:48}},customFormContainer:{width:"40%",height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",overflow:"auto",alignItems:"center",[t.breakpoints.down("md")]:{width:"50%",overflow:"visible"}},formContainer:{width:"40%",height:"100%",display:"flex",flexDirection:"column",overflow:"auto",alignItems:"center",[t.breakpoints.down("md")]:{width:"50%",overflow:"visible"}},form:{width:320},tab:{fontWeight:400,fontSize:18},greeting:{fontWeight:500,textAlign:"center",marginTop:t.spacing(4)},subGreeting:{fontWeight:500,textAlign:"center",marginTop:t.spacing(2)},googleButton:{marginTop:t.spacing(6),boxShadow:t.customShadows.widget,backgroundColor:"white",width:"100%",textTransform:"none"},googleButtonCreating:{marginTop:0},googleIcon:{width:30,marginRight:t.spacing(2)},creatingButtonContainer:{marginTop:t.spacing(2.5),height:46,display:"flex",justifyContent:"center",alignItems:"center"},createAccountButton:{height:46,textTransform:"none"},formDividerContainer:{marginTop:t.spacing(4),marginBottom:t.spacing(4),display:"flex",alignItems:"center"},formDividerWord:{paddingLeft:t.spacing(2),paddingRight:t.spacing(2)},formDivider:{flexGrow:1,height:1,backgroundColor:t.palette.text.hint+"40"},errorMessage:{textAlign:"center"},textFieldUnderline:{"&:before":{borderBottomColor:t.palette.primary.light},"&:after":{borderBottomColor:t.palette.primary.main},"&:hover:before":{borderBottomColor:`${t.palette.primary.light} !important`}},textField:{borderBottomColor:t.palette.background.light},formButtons:{width:"100%",marginTop:t.spacing(4),display:"flex",justifyContent:"space-between",alignItems:"center"},forgetButton:{textTransform:"none",fontWeight:400},loginLoader:{marginLeft:t.spacing(4)},copyright:{marginTop:t.spacing(4),whiteSpace:"nowrap",[t.breakpoints.up("md")]:{bottom:t.spacing(2)}}})),fIt="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='131px'%20height='106px'%20viewBox='0%200%20131%20106'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2053.2%20(72643)%20-%20https://sketchapp.com%20--%3e%3ctitle%3elogo_white%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cg%20id='logo_white'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cg%20id='Group-39'%20transform='translate(12.000000,%2016.000000)'%20stroke-width='16.3476923'%3e%3cpath%20d='M4,72.4669231%20L52.2318841,0'%20id='Line-10'%20stroke='%23FFFFFF'%3e%3c/path%3e%3cpath%20d='M1.10416667,74.69%20L105.551432,74.69'%20id='Line-10'%20stroke='%23FBC02D'%3e%3c/path%3e%3cpath%20d='M52.2318841,0%20L105.551432,74.69'%20id='Line-10'%20stroke='%23FF5252'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e";function pIt(){let t=dIt();const e=rl(),n=Ka();let r=NA();const[i,a]=E.useState(""),[o,s]=E.useState(""),[l]=E.useState(!1),u=()=>{c()||(i?Yp("Passwords are not equal")(r):Yp("Password field is empty")(r),Yp()(r))},c=()=>i&&i===o,f=()=>{const m=new URLSearchParams(n.search).get("token");m||Yp("There are no token")(r),c()?qPe(m,i,e)(r):u()};return d.jsxs(re,{container:!0,className:t.container,children:[d.jsxs("div",{className:t.logotypeContainer,children:[d.jsx("img",{src:fIt,alt:"logo",className:t.logotypeImage}),d.jsx(oe,{className:t.logotypeText,children:"React Material Admin Full"})]}),d.jsxs("div",{className:t.customFormContainer,children:[d.jsxs("div",{className:t.form,children:[d.jsx(wn,{id:"password",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:i,onChange:h=>a(h.target.value),margin:"normal",placeholder:"password",type:"password",fullWidth:!0}),d.jsx(wn,{id:"confirmPassword",InputProps:{classes:{underline:t.InputUnderline,input:t.Input}},value:o,onChange:h=>s(h.target.value),margin:"normal",placeholder:"Confirm Password",type:"password",fullWidth:!0}),d.jsxs("div",{className:t.formButtons,children:[l?d.jsx(mc,{size:26,className:t.loginLoader}):d.jsx(gt,{disabled:i.length===0||o.length===0||i!==o,onClick:()=>f(),variant:"contained",color:"primary",size:"large",children:"reset password"}),d.jsx(gt,{color:"primary",size:"large",onClick:()=>e("/login"),className:t.forgetButton,children:"Back to login"})]})]}),d.jsxs(oe,{color:"primary",className:t.copyright,children:["2014-",new Date().getFullYear()," ",d.jsx("a",{style:{textDecoration:"none",color:"inherit"},href:"https://flatlogic.com",rel:"noopener noreferrer",target:"_blank",children:"Flatlogic"}),", LLC. All rights reserved."]})]})]})}function hIt(){let{isAuthenticated:t}=HPe();const e=t();return d.jsx(d.Fragment,{children:d.jsx(fwe,{children:d.jsxs(j2e,{basename:"/react-material-admin/",children:[d.jsx(gIt,{}),d.jsxs(p9,{children:[d.jsx(Qt,{path:"/",element:d.jsx(yl,{to:"/app/profile",replace:!0})}),d.jsx(Qt,{path:"/app",element:d.jsx(yl,{to:"/app/dashboard",replace:!0})}),d.jsx(Qt,{path:"/403",element:d.jsx(V6,{code:403})}),d.jsx(Qt,{path:"/500",element:d.jsx(V6,{code:500})}),d.jsx(Qt,{path:"/documentation/*",element:d.jsx(rIt,{})}),d.jsx(Qt,{path:"/app/*",element:d.jsx(r,{children:d.jsx(Y3t,{})})}),d.jsx(Qt,{path:"/login",element:d.jsx(i,{children:d.jsx(cIt,{})})}),d.jsx(Qt,{path:"/verify-email",element:d.jsx(i,{children:d.jsx(uIt,{})})}),d.jsx(Qt,{path:"/password-reset",element:d.jsx(i,{children:d.jsx(pIt,{})})}),d.jsx(Qt,{path:"*",element:d.jsx(V6,{})})]})]})})});function r({children:a}){return e?a:d.jsx(yl,{to:"/login",replace:!0})}function i({children:a}){return e?d.jsx(yl,{to:"/",replace:!0}):a}}function gIt(){const t=rl();return Ue.useEffect(()=>(tie(t),()=>tie(null)),[t]),null}Ln.defaults.baseURL=wr.baseURLApi;Ln.defaults.headers.common["Content-Type"]="application/json";const gie=localStorage.getItem("token");gie&&(Ln.defaults.headers.common.Authorization="Bearer "+gie);const mIt=V_e.createRoot(document.getElementById("root"));mIt.render(d.jsx(mPe,{children:d.jsx(zPe,{children:d.jsx(Tye,{injectFirst:!0,children:d.jsx(O4e,{children:d.jsx(Sse.Consumer,{children:t=>d.jsx(vEe,{theme:t,children:d.jsxs(FPe,{children:[d.jsx(hOe,{}),d.jsx(hIt,{})]})})})})})})}))});export default bIt(); diff --git a/docs/assets/index-DwtXvBEq.css b/docs/assets/index-DwtXvBEq.css new file mode 100644 index 0000000..e86f7ff --- /dev/null +++ b/docs/assets/index-DwtXvBEq.css @@ -0,0 +1 @@ +._widget_1xxz4_1{background-color:#fff;padding:16px;margin:16px 0;box-shadow:0 3px 11px #e8eafc,0 3px 3px -2px #b2b2b21a,0 1px 8px #9a9a9a1a;border-radius:4px}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}} diff --git a/docs/assets/isometric-B5fzShps.jpg b/docs/assets/isometric-B5fzShps.jpg new file mode 100644 index 0000000..ca6d4e0 Binary files /dev/null and b/docs/assets/isometric-B5fzShps.jpg differ diff --git a/docs/assets/lifestyle-C2rvFiLo.jpg b/docs/assets/lifestyle-C2rvFiLo.jpg new file mode 100644 index 0000000..a966033 Binary files /dev/null and b/docs/assets/lifestyle-C2rvFiLo.jpg differ diff --git a/docs/assets/main-profile-DO1VNM5Z.png b/docs/assets/main-profile-DO1VNM5Z.png new file mode 100644 index 0000000..7a6bb57 Binary files /dev/null and b/docs/assets/main-profile-DO1VNM5Z.png differ diff --git a/docs/assets/mastercard-BrkSmATm.svg b/docs/assets/mastercard-BrkSmATm.svg new file mode 100644 index 0000000..ab26667 --- /dev/null +++ b/docs/assets/mastercard-BrkSmATm.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + diff --git a/docs/assets/mountains-FnFFFzmH.jpeg b/docs/assets/mountains-FnFFFzmH.jpeg new file mode 100644 index 0000000..781fc42 Binary files /dev/null and b/docs/assets/mountains-FnFFFzmH.jpeg differ diff --git a/docs/assets/profile-Bf-8o0G6.jpg b/docs/assets/profile-Bf-8o0G6.jpg new file mode 100644 index 0000000..45061e9 Binary files /dev/null and b/docs/assets/profile-Bf-8o0G6.jpg differ diff --git a/docs/assets/profilePhoto-D9kEOIpn.svg b/docs/assets/profilePhoto-D9kEOIpn.svg new file mode 100644 index 0000000..7d0dc0d --- /dev/null +++ b/docs/assets/profilePhoto-D9kEOIpn.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/rns-D8O4P7JT.png b/docs/assets/rns-D8O4P7JT.png new file mode 100644 index 0000000..60baebd Binary files /dev/null and b/docs/assets/rns-D8O4P7JT.png differ diff --git a/docs/assets/rnsHero-CFwZz59m.png b/docs/assets/rnsHero-CFwZz59m.png new file mode 100644 index 0000000..d965f91 Binary files /dev/null and b/docs/assets/rnsHero-CFwZz59m.png differ diff --git a/docs/favicon blue.png b/docs/favicon blue.png new file mode 100644 index 0000000..67fa6d6 Binary files /dev/null and b/docs/favicon blue.png differ diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000..a11777c Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/favicon.png b/docs/favicon.png new file mode 100644 index 0000000..9aecba0 Binary files /dev/null and b/docs/favicon.png differ diff --git a/docs/favicon.svg b/docs/favicon.svg new file mode 100644 index 0000000..032b50a --- /dev/null +++ b/docs/favicon.svg @@ -0,0 +1,15 @@ + + + + favicon + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..ecd8e98 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + React Material Admin Full + + + + + +
+ + diff --git a/docs/logo192.png b/docs/logo192.png new file mode 100644 index 0000000..fc44b0a Binary files /dev/null and b/docs/logo192.png differ diff --git a/docs/logo512.png b/docs/logo512.png new file mode 100644 index 0000000..a4e47a6 Binary files /dev/null and b/docs/logo512.png differ diff --git a/docs/manifest.json b/docs/manifest.json new file mode 100644 index 0000000..3589efa --- /dev/null +++ b/docs/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "app.title", + "name": "app.title", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/eslint.config.cjs b/eslint.config.cjs new file mode 100644 index 0000000..ab6085b --- /dev/null +++ b/eslint.config.cjs @@ -0,0 +1,41 @@ +const js = require('@eslint/js'); +const globals = require('globals'); + +module.exports = [ + { + ignores: ['build/**', 'node_modules/**'], + }, + { + files: ['src/**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + globals: { + ...globals.browser, + ...globals.node, + }, + }, + rules: { + ...js.configs.recommended.rules, + 'no-case-declarations': 'warn', + 'no-extra-boolean-cast': 'warn', + 'no-prototype-builtins': 'warn', + 'no-unused-vars': 'warn', + 'no-useless-assignment': 'warn', + }, + }, + { + files: ['src/test/**/*.{js,jsx}'], + languageOptions: { + globals: { + ...globals.jest, + vi: 'readonly', + }, + }, + }, +]; diff --git a/index.html b/index.html new file mode 100644 index 0000000..ee44ff9 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + React Material Admin Full + + + +
+ + + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..132ff4f --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "baseUrl": "src" + }, + "exclude": ["node_modules", "build"] +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..fc65bee --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6542 @@ +{ + "name": "react-material-full", + "version": "3.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "react-material-full", + "version": "3.0.1", + "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@fullcalendar/core": "^6.1.14", + "@fullcalendar/daygrid": "^6.1.14", + "@fullcalendar/interaction": "^6.1.14", + "@fullcalendar/list": "^6.1.14", + "@fullcalendar/react": "^6.1.14", + "@fullcalendar/timegrid": "^6.1.14", + "@mui/icons-material": "^7.3.8", + "@mui/material": "^7.3.8", + "@mui/x-data-grid": "^8.27.1", + "@mui/x-date-pickers": "^8.27.2", + "apexcharts": "^5.6.0", + "axios": "^1.13.5", + "classnames": "^2.3.2", + "date-fns": "^4.1.0", + "dayjs": "^1.11.19", + "formik": "^2.4.9", + "leaflet": "^1.9.4", + "prop-types": "^15.8.1", + "react": "^19.2.4", + "react-apexcharts": "^2.0.1", + "react-dom": "^19.2.4", + "react-leaflet": "^5.0.0", + "react-router-dom": "^7.13.0", + "react-sortablejs": "^6.1.4", + "react-syntax-highlighter": "^16.1.0", + "recharts": "^3.7.0", + "sortablejs": "^1.15.7", + "tinycolor2": "^1.6.0", + "topojson-client": "^3.1.0", + "tss-react": "^4.9.20", + "uuid": "^13.0.0", + "yup": "^1.7.1" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@vitejs/plugin-react-swc": "^4.2.0", + "cross-env": "^10.1.0", + "eslint": "^10.0.1", + "globals": "^17.3.0", + "jsdom": "^28.1.0", + "sass": "^1.97.3", + "vite": "^7.3.1", + "vitest": "^4.0.18" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@acemir/cssom": { + "version": "0.9.31", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz", + "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@asamuzakjp/css-color": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.2.tgz", + "integrity": "sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^3.0.0", + "@csstools/css-color-parser": "^4.0.1", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0", + "lru-cache": "^11.2.5" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.8.1.tgz", + "integrity": "sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.1.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.6" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bramus/specificity": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", + "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0" + }, + "bin": { + "specificity": "bin/cli.js" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", + "integrity": "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@csstools/css-calc": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz", + "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.2.tgz", + "integrity": "sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^6.0.2", + "@csstools/css-calc": "^3.1.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.28.tgz", + "integrity": "sha512-1NRf1CUBjnr3K7hu8BLxjQrKCxEe8FP/xmPTenAxCRZWVLbmGotkFvG9mfNpjA6k7Bw1bw4BilZq9cu19RA5pg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0" + }, + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", + "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", + "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz", + "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.2", + "debug": "^4.3.1", + "minimatch": "^10.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz", + "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.1.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz", + "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz", + "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz", + "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.1.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@exodus/bytes": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.14.1.tgz", + "integrity": "sha512-OhkBFWI6GcRMUroChZiopRiSp2iAMvEBK47NhJooDqz1RERO4QuZIZnjP63TXX8GAiLABkYmX+fuQsdJ1dd2QQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } + } + }, + "node_modules/@fullcalendar/core": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.20.tgz", + "integrity": "sha512-1cukXLlePFiJ8YKXn/4tMKsy0etxYLCkXk8nUCFi11nRONF2Ba2CD5b21/ovtOO2tL6afTJfwmc1ed3HG7eB1g==", + "license": "MIT", + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.20.tgz", + "integrity": "sha512-AO9vqhkLP77EesmJzuU+IGXgxNulsA8mgQHynclJ8U70vSwAVnbcLG9qftiTAFSlZjiY/NvhE7sflve6cJelyQ==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.20" + } + }, + "node_modules/@fullcalendar/interaction": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.20.tgz", + "integrity": "sha512-p6txmc5txL0bMiPaJxe2ip6o0T384TyoD2KGdsU6UjZ5yoBlaY+dg7kxfnYKpYMzEJLG58n+URrHr2PgNL2fyA==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.20" + } + }, + "node_modules/@fullcalendar/list": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-6.1.20.tgz", + "integrity": "sha512-7Hzkbb7uuSqrXwTyD0Ld/7SwWNxPD6SlU548vtkIpH55rZ4qquwtwYdMPgorHos5OynHA4OUrZNcH51CjrCf2g==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.20" + } + }, + "node_modules/@fullcalendar/react": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.20.tgz", + "integrity": "sha512-1w0pZtceaUdfAnxMSCGHCQalhi+mR1jOe76sXzyAXpcPz/Lf0zHSdcGK/U2XpZlnQgQtBZW+d+QBnnzVQKCxAA==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.20", + "react": "^16.7.0 || ^17 || ^18 || ^19", + "react-dom": "^16.7.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/@fullcalendar/timegrid": { + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.20.tgz", + "integrity": "sha512-4H+/MWbz3ntA50lrPif+7TsvMeX3R1GSYjiLULz0+zEJ7/Yfd9pupZmAwUs/PBpA6aAcFmeRr0laWfcz1a9V1A==", + "license": "MIT", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.20" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.20" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/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/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.8.tgz", + "integrity": "sha512-s9UHZo7QJVly7gNArEZkbbsimHqJZhElgBpXIJdehZ4OWXt+CCr0SBDgUCDJnQrqpd1dWK2dLq5rmO4mCBmI3w==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.3.8.tgz", + "integrity": "sha512-88sWg/UJc1X82OMO+ISR4E3P58I3BjFVg0qkmDu7OWlN8VijneZD3ylFA+ImxuPjMHW3SHosfSJYy1fztoz0fw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^7.3.8", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.8.tgz", + "integrity": "sha512-QKd1RhDXE1hf2sQDNayA9ic9jGkEgvZOf0tTkJxlBPG8ns8aS4rS8WwYURw2x5y3739p0HauUXX9WbH7UufFLw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@mui/core-downloads-tracker": "^7.3.8", + "@mui/system": "^7.3.8", + "@mui/types": "^7.4.11", + "@mui/utils": "^7.3.8", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "csstype": "^3.2.3", + "prop-types": "^15.8.1", + "react-is": "^19.2.3", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^7.3.8", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.8.tgz", + "integrity": "sha512-du5dlPZ9XL3xW2apHoGDXBI+QLtyVJGrXNCfcNYfP/ojkz1RQ0rRV6VG9Rkm1DqEFRG8mjjTL7zmE1Bvn1eR4A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@mui/utils": "^7.3.8", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.8.tgz", + "integrity": "sha512-JHAeXQzS0tJ+Fq3C6J4TVDsW+yKhO4uuxuiLaopNStJeQYBIUCXpKYyUCcgXym4AmhbznQnv9RlHywSH6b0FOg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.2.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.8.tgz", + "integrity": "sha512-hoFRj4Zw2Km8DPWZp/nKG+ao5Jw5LSk2m/e4EGc6M3RRwXKEkMSG4TgtfVJg7dS2homRwtdXSMW+iRO0ZJ4+IA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@mui/private-theming": "^7.3.8", + "@mui/styled-engine": "^7.3.8", + "@mui/types": "^7.4.11", + "@mui/utils": "^7.3.8", + "clsx": "^2.1.1", + "csstype": "^3.2.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.4.11", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.11.tgz", + "integrity": "sha512-fZ2xO9D08IKOxO2oUBi1nnVKH6oJUD+64cnv4YAaFoC0E5+i1+S5AHbNqqvZlYYsbPEQ6qEVwuBqY3jl5W4G+Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.8.tgz", + "integrity": "sha512-kZRcE2620CBGr+XI8YMmwPj6WIPwSF7uMJjvSfqd8zXVvlz0MCJbzRRUGNf8NgflCLthdji2DdS643TeyJ3+nA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.6", + "@mui/types": "^7.4.11", + "@types/prop-types": "^15.7.15", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.2.3" + }, + "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/x-data-grid": { + "version": "8.27.1", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-8.27.1.tgz", + "integrity": "sha512-Xje197cUzmch33vLip5KR44SQ0CB49iutBTaoIMSxIVSfNqI8BadEh8PpPCacuTeSty06tJKpBMe66NNYWfHFw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.5", + "@mui/x-internals": "8.26.0", + "@mui/x-virtualizer": "0.3.3", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "use-sync-external-store": "^1.6.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14 || ^6.0.0 || ^7.0.0", + "@mui/system": "^5.15.14 || ^6.0.0 || ^7.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 + } + } + }, + "node_modules/@mui/x-date-pickers": { + "version": "8.27.2", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-8.27.2.tgz", + "integrity": "sha512-06LFkHFRXJ2O9DMXtWAA3kY0jpbL7XH8iqa8L5cBlN+8bRx/UVLKlZYlhGv06C88jF9kuZWY1bUgrv/EoY/2Ww==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.5", + "@mui/x-internals": "8.26.0", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "prop-types": "^15.8.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.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.15.14 || ^6.0.0 || ^7.0.0", + "@mui/system": "^5.15.14 || ^6.0.0 || ^7.0.0", + "date-fns": "^2.25.0 || ^3.2.0 || ^4.0.0", + "date-fns-jalali": "^2.13.0-0 || ^3.2.0-0 || ^4.0.0-0", + "dayjs": "^1.10.7", + "luxon": "^3.0.2", + "moment": "^2.29.4", + "moment-hijri": "^2.1.2 || ^3.0.0", + "moment-jalaali": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.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 + }, + "date-fns": { + "optional": true + }, + "date-fns-jalali": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + }, + "moment-hijri": { + "optional": true + }, + "moment-jalaali": { + "optional": true + } + } + }, + "node_modules/@mui/x-internals": { + "version": "8.26.0", + "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.26.0.tgz", + "integrity": "sha512-B9OZau5IQUvIxwpJZhoFJKqRpmWf5r0yMmSXjQuqb5WuqM755EuzWJOenY48denGoENzMLT8hQpA0hRTeU2IPA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.5", + "reselect": "^5.1.1", + "use-sync-external-store": "^1.6.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@mui/x-virtualizer": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@mui/x-virtualizer/-/x-virtualizer-0.3.3.tgz", + "integrity": "sha512-6ugUh7UAhQYdgPgHLu181zqufh3Y8IqEU9Pe6Huzj0xkRi3NwMx/ZzvrHf2WazNOh2uLhQ5ZM2wFqDu3mxBWZA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "@mui/utils": "^7.3.5", + "@mui/x-internals": "8.26.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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-leaflet/core": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-3.0.0.tgz", + "integrity": "sha512-3EWmekh4Nz+pGcr+xjf0KNyYfC3U2JjnkWsh0zcqaexYqmmB5ZhH37kz41JXGmKzpaMZCnPofBBm64i+YrEvGQ==", + "license": "Hippocratic-2.1", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + } + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz", + "integrity": "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^11.0.0", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@reduxjs/toolkit/node_modules/immer": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.4.tgz", + "integrity": "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.58.0.tgz", + "integrity": "sha512-mr0tmS/4FoVk1cnaeN244A/wjvGDNItZKR8hRhnmCzygyRXYtKF5jVDSIILR1U97CTzAYmbgIj/Dukg62ggG5w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.58.0.tgz", + "integrity": "sha512-+s++dbp+/RTte62mQD9wLSbiMTV+xr/PeRJEc/sFZFSBRlHPNPVaf5FXlzAL77Mr8FtSfQqCN+I598M8U41ccQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.58.0.tgz", + "integrity": "sha512-MFWBwTcYs0jZbINQBXHfSrpSQJq3IUOakcKPzfeSznONop14Pxuqa0Kg19GD0rNBMPQI2tFtu3UzapZpH0Uc1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.58.0.tgz", + "integrity": "sha512-yiKJY7pj9c9JwzuKYLFaDZw5gma3fI9bkPEIyofvVfsPqjCWPglSHdpdwXpKGvDeYDms3Qal8qGMEHZ1M/4Udg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.58.0.tgz", + "integrity": "sha512-x97kCoBh5MOevpn/CNK9W1x8BEzO238541BGWBc315uOlN0AD/ifZ1msg+ZQB05Ux+VF6EcYqpiagfLJ8U3LvQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.58.0.tgz", + "integrity": "sha512-Aa8jPoZ6IQAG2eIrcXPpjRcMjROMFxCt1UYPZZtCxRV68WkuSigYtQ/7Zwrcr2IvtNJo7T2JfDXyMLxq5L4Jlg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.58.0.tgz", + "integrity": "sha512-Ob8YgT5kD/lSIYW2Rcngs5kNB/44Q2RzBSPz9brf2WEtcGR7/f/E9HeHn1wYaAwKBni+bdXEwgHvUd0x12lQSA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.58.0.tgz", + "integrity": "sha512-K+RI5oP1ceqoadvNt1FecL17Qtw/n9BgRSzxif3rTL2QlIu88ccvY+Y9nnHe/cmT5zbH9+bpiJuG1mGHRVwF4Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.58.0.tgz", + "integrity": "sha512-T+17JAsCKUjmbopcKepJjHWHXSjeW7O5PL7lEFaeQmiVyw4kkc5/lyYKzrv6ElWRX/MrEWfPiJWqbTvfIvjM1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.58.0.tgz", + "integrity": "sha512-cCePktb9+6R9itIJdeCFF9txPU7pQeEHB5AbHu/MKsfH/k70ZtOeq1k4YAtBv9Z7mmKI5/wOLYjQ+B9QdxR6LA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.58.0.tgz", + "integrity": "sha512-iekUaLkfliAsDl4/xSdoCJ1gnnIXvoNz85C8U8+ZxknM5pBStfZjeXgB8lXobDQvvPRCN8FPmmuTtH+z95HTmg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.58.0.tgz", + "integrity": "sha512-68ofRgJNl/jYJbxFjCKE7IwhbfxOl1muPN4KbIqAIe32lm22KmU7E8OPvyy68HTNkI2iV/c8y2kSPSm2mW/Q9Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.58.0.tgz", + "integrity": "sha512-dpz8vT0i+JqUKuSNPCP5SYyIV2Lh0sNL1+FhM7eLC457d5B9/BC3kDPp5BBftMmTNsBarcPcoz5UGSsnCiw4XQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.58.0.tgz", + "integrity": "sha512-4gdkkf9UJ7tafnweBCR/mk4jf3Jfl0cKX9Np80t5i78kjIH0ZdezUv/JDI2VtruE5lunfACqftJ8dIMGN4oHew==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.58.0.tgz", + "integrity": "sha512-YFS4vPnOkDTD/JriUeeZurFYoJhPf9GQQEF/v4lltp3mVcBmnsAdjEWhr2cjUCZzZNzxCG0HZOvJU44UGHSdzw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.58.0.tgz", + "integrity": "sha512-x2xgZlFne+QVNKV8b4wwaCS8pwq3y14zedZ5DqLzjdRITvreBk//4Knbcvm7+lWmms9V9qFp60MtUd0/t/PXPw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.58.0.tgz", + "integrity": "sha512-jIhrujyn4UnWF8S+DHSkAkDEO3hLX0cjzxJZPLF80xFyzyUIYgSMRcYQ3+uqEoyDD2beGq7Dj7edi8OnJcS/hg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.58.0.tgz", + "integrity": "sha512-+410Srdoh78MKSJxTQ+hZ/Mx+ajd6RjjPwBPNd0R3J9FtL6ZA0GqiiyNjCO9In0IzZkCNrpGymSfn+kgyPQocg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.58.0.tgz", + "integrity": "sha512-ZjMyby5SICi227y1MTR3VYBpFTdZs823Rs/hpakufleBoufoOIB6jtm9FEoxn/cgO7l6PM2rCEl5Kre5vX0QrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.58.0.tgz", + "integrity": "sha512-ds4iwfYkSQ0k1nb8LTcyXw//ToHOnNTJtceySpL3fa7tc/AsE+UpUFphW126A6fKBGJD5dhRvg8zw1rvoGFxmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.58.0.tgz", + "integrity": "sha512-fd/zpJniln4ICdPkjWFhZYeY/bpnaN9pGa6ko+5WD38I0tTqk9lXMgXZg09MNdhpARngmxiCg0B0XUamNw/5BQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.58.0.tgz", + "integrity": "sha512-YpG8dUOip7DCz3nr/JUfPbIUo+2d/dy++5bFzgi4ugOGBIox+qMbbqt/JoORwvI/C9Kn2tz6+Bieoqd5+B1CjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.58.0.tgz", + "integrity": "sha512-b9DI8jpFQVh4hIXFr0/+N/TzLdpBIoPzjt0Rt4xJbW3mzguV3mduR9cNgiuFcuL/TeORejJhCWiAXe3E/6PxWA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.58.0.tgz", + "integrity": "sha512-CSrVpmoRJFN06LL9xhkitkwUcTZtIotYAF5p6XOR2zW0Zz5mzb3IPpcoPhB02frzMHFNo1reQ9xSF5fFm3hUsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.58.0.tgz", + "integrity": "sha512-QFsBgQNTnh5K0t/sBsjJLq24YVqEIVkGpfN2VHsnN90soZyhaiA9UUHufcctVNL4ypJY0wrwad0wslx2KJQ1/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@swc/core": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.11.tgz", + "integrity": "sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.11", + "@swc/core-darwin-x64": "1.15.11", + "@swc/core-linux-arm-gnueabihf": "1.15.11", + "@swc/core-linux-arm64-gnu": "1.15.11", + "@swc/core-linux-arm64-musl": "1.15.11", + "@swc/core-linux-x64-gnu": "1.15.11", + "@swc/core-linux-x64-musl": "1.15.11", + "@swc/core-win32-arm64-msvc": "1.15.11", + "@swc/core-win32-ia32-msvc": "1.15.11", + "@swc/core-win32-x64-msvc": "1.15.11" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz", + "integrity": "sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz", + "integrity": "sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz", + "integrity": "sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz", + "integrity": "sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz", + "integrity": "sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz", + "integrity": "sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz", + "integrity": "sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz", + "integrity": "sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz", + "integrity": "sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz", + "integrity": "sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz", + "integrity": "sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==", + "license": "MIT", + "dependencies": { + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prismjs": { + "version": "1.26.6", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz", + "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/sortablejs": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz", + "integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-4.2.3.tgz", + "integrity": "sha512-QIluDil2prhY1gdA3GGwxZzTAmLdi8cQ2CcuMW4PB/Wu4e/1pzqrwhYWVd09LInCRlDUidQjd0B70QWbjWtLxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-rc.2", + "@swc/core": "^1.15.11" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", + "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/expect": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.18", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "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/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "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-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/apexcharts": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-5.6.0.tgz", + "integrity": "sha512-BZua59yedRsaDfnxkzNrkyLCvluq2c3ZDBIz4joxSKtgr0xDQXQ5dzceMhf/TpTbAjaF+2NYIpLP3BEEIG2s/w==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@yr/monotone-cubic-spline": "^1.0.3" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "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/axios": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "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/balanced-match": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", + "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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/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/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" + }, + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-6.0.1.tgz", + "integrity": "sha512-IoJs7La+oFp/AB033wBStxNOJt4+9hHMxsXUPANcoXL2b3W4DZKghlJ2cI/eyeRZIQ9ysvYEorVhjrcYctWbog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^4.1.2", + "@csstools/css-syntax-patches-for-csstree": "^1.0.26", + "css-tree": "^3.1.0", + "lru-cache": "^11.2.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cssstyle/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/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-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-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-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "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-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-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/data-urls": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "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/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-toolkit": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", + "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.1.tgz", + "integrity": "sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.2", + "@eslint/config-helpers": "^0.5.2", + "@eslint/core": "^1.1.0", + "@eslint/plugin-kit": "^0.6.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.1", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.1.1", + "esquery": "^1.7.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", + "minimatch": "^10.2.1", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz", + "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz", + "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "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/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.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/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.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/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/formik": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.9.tgz", + "integrity": "sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og==", + "funding": [ + { + "type": "individual", + "url": "https://opencollective.com/formik" + } + ], + "license": "Apache-2.0", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", + "deepmerge": "^2.1.1", + "hoist-non-react-statics": "^3.3.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "react-fast-compare": "^2.0.1", + "tiny-warning": "^1.0.2", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "17.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", + "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "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==", + "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/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/highlightjs-vue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", + "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", + "license": "CC0-1.0" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.6.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "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/immer": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", + "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", + "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "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/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/jsdom": { + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.1.0.tgz", + "integrity": "sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@acemir/cssom": "^0.9.31", + "@asamuzakjp/dom-selector": "^6.8.1", + "@bramus/specificity": "^2.4.2", + "@exodus/bytes": "^1.11.0", + "cssstyle": "^6.0.1", + "data-urls": "^7.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "parse5": "^8.0.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.0", + "undici": "^7.21.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/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/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "license": "BSD-2-Clause" + }, + "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": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "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/lowlight": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "license": "MIT", + "dependencies": { + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "dev": true, + "license": "CC0-1.0" + }, + "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/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "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/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "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-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "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/parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "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/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "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/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "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/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-apexcharts": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-2.0.1.tgz", + "integrity": "sha512-AN9u5C0kDAkQyMyJP6yXORexiuiaTa0GaxR5dOaF075vWLTTbQxxtYF/kXyvUo4jjtBEIe4lLoCZTo/kB3bRoA==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": ">=5.6.0", + "react": ">=16.8.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "license": "MIT" + }, + "node_modules/react-is": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "license": "MIT" + }, + "node_modules/react-leaflet": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-5.0.0.tgz", + "integrity": "sha512-CWbTpr5vcHw5bt9i4zSlPEVQdTVcML390TjeDG0cK59z1ylexpqC6M1PJFjV8jD7CF+ACBFsLIDs6DRMoLEofw==", + "license": "Hippocratic-2.1", + "dependencies": { + "@react-leaflet/core": "^3.0.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + } + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz", + "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz", + "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==", + "license": "MIT", + "dependencies": { + "react-router": "7.13.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-sortablejs": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/react-sortablejs/-/react-sortablejs-6.1.4.tgz", + "integrity": "sha512-fc7cBosfhnbh53Mbm6a45W+F735jwZ1UFIYSrIqcO/gRIFoDyZeMtgKlpV4DdyQfbCzdh5LoALLTDRxhMpTyXQ==", + "license": "MIT", + "dependencies": { + "classnames": "2.3.1", + "tiny-invariant": "1.2.0" + }, + "peerDependencies": { + "@types/sortablejs": "1", + "react": ">=16.9.0", + "react-dom": ">=16.9.0", + "sortablejs": "1" + } + }, + "node_modules/react-sortablejs/node_modules/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==", + "license": "MIT" + }, + "node_modules/react-sortablejs/node_modules/tiny-invariant": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", + "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==", + "license": "MIT" + }, + "node_modules/react-syntax-highlighter": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-16.1.0.tgz", + "integrity": "sha512-E40/hBiP5rCNwkeBN1vRP+xow1X0pndinO+z3h7HLsHyjztbyjfzNWNKuAsJj+7DLam9iT4AaaOZnueCU+Nplg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.28.4", + "highlight.js": "^10.4.1", + "highlightjs-vue": "^1.0.0", + "lowlight": "^1.17.0", + "prismjs": "^1.30.0", + "refractor": "^5.0.0" + }, + "engines": { + "node": ">= 16.20.2" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "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/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recharts": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.7.0.tgz", + "integrity": "sha512-l2VCsy3XXeraxIID9fx23eCb6iCBsxUQDnE8tWm6DFdszVAO7WVY/ChAD9wVit01y6B2PMupYiMmQwhgPHc9Ew==", + "license": "MIT", + "workspaces": [ + "www" + ], + "dependencies": { + "@reduxjs/toolkit": "1.x.x || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^10.1.1", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.1.1", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/refractor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-5.0.0.tgz", + "integrity": "sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/prismjs": "^1.0.0", + "hastscript": "^9.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.58.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.58.0.tgz", + "integrity": "sha512-wbT0mBmWbIvvq8NeEYWWvevvxnOyhKChir47S66WCxw1SXqhw7ssIYejnQEVt7XYQpsj2y8F9PM+Cr3SNEa0gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.58.0", + "@rollup/rollup-android-arm64": "4.58.0", + "@rollup/rollup-darwin-arm64": "4.58.0", + "@rollup/rollup-darwin-x64": "4.58.0", + "@rollup/rollup-freebsd-arm64": "4.58.0", + "@rollup/rollup-freebsd-x64": "4.58.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.58.0", + "@rollup/rollup-linux-arm-musleabihf": "4.58.0", + "@rollup/rollup-linux-arm64-gnu": "4.58.0", + "@rollup/rollup-linux-arm64-musl": "4.58.0", + "@rollup/rollup-linux-loong64-gnu": "4.58.0", + "@rollup/rollup-linux-loong64-musl": "4.58.0", + "@rollup/rollup-linux-ppc64-gnu": "4.58.0", + "@rollup/rollup-linux-ppc64-musl": "4.58.0", + "@rollup/rollup-linux-riscv64-gnu": "4.58.0", + "@rollup/rollup-linux-riscv64-musl": "4.58.0", + "@rollup/rollup-linux-s390x-gnu": "4.58.0", + "@rollup/rollup-linux-x64-gnu": "4.58.0", + "@rollup/rollup-linux-x64-musl": "4.58.0", + "@rollup/rollup-openbsd-x64": "4.58.0", + "@rollup/rollup-openharmony-arm64": "4.58.0", + "@rollup/rollup-win32-arm64-msvc": "4.58.0", + "@rollup/rollup-win32-ia32-msvc": "4.58.0", + "@rollup/rollup-win32-x64-gnu": "4.58.0", + "@rollup/rollup-win32-x64-msvc": "4.58.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/sortablejs": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.7.tgz", + "integrity": "sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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-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/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tiny-case": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "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/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "7.0.23", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.23.tgz", + "integrity": "sha512-ASdhgQIBSay0R/eXggAkQ53G4nTJqTXqC2kbaBbdDwM7SkjyZyO0OaaN1/FH7U/yCeqOHDwFO5j8+Os/IS1dXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.23" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.23", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.23.tgz", + "integrity": "sha512-0g9vrtDQLrNIiCj22HSe9d4mLVG3g5ph5DZ8zCKBr4OtrspmNB6ss7hVyzArAeE88ceZocIEGkyW1Ime7fxPtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "license": "ISC", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", + "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "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/tss-react": { + "version": "4.9.20", + "resolved": "https://registry.npmjs.org/tss-react/-/tss-react-4.9.20.tgz", + "integrity": "sha512-+tecs5hEKZmPqNDtiq5Gx2GxjrQXbV5JuOeWkV+eOf99qiIUkE3Vcn07zNLHws06iPfH2H4t5VqoVjIdCMS7hw==", + "license": "MIT", + "dependencies": { + "@emotion/cache": "*", + "@emotion/serialize": "*", + "@emotion/utils": "*" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/server": "^11.4.0", + "@mui/material": "^5.0.0 || ^6.0.0 || ^7.0.0", + "@types/react": "^16.8.0 || ^17.0.2 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/server": { + "optional": true + }, + "@mui/material": { + "optional": true + } + } + }, + "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/undici": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", + "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "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/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/uuid": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vitest": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-mimetype": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-url": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", + "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.11.0", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.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/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.7.1.tgz", + "integrity": "sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==", + "license": "MIT", + "dependencies": { + "property-expr": "^2.0.5", + "tiny-case": "^1.0.3", + "toposort": "^2.0.2", + "type-fest": "^2.19.0" + } + }, + "node_modules/yup/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f2f3e9e --- /dev/null +++ b/package.json @@ -0,0 +1,76 @@ +{ + "name": "react-material-full", + "description": "React Material Admin Full", + "version": "3.0.1", + "private": true, + "homepage": "./", + "scripts": { + "build": "vite build", + "start": "vite", + "dev": "vite", + "preview": "vite preview", + "lint": "cross-env NODE_ENV=development eslint src --ext .js,.jsx", + "lint:fix": "cross-env NODE_ENV=development eslint src --ext .js,.jsx --fix", + "test": "vitest run", + "test:watch": "vitest", + "format": "prettier --write src/" + }, + "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.1", + "@fullcalendar/core": "^6.1.14", + "@fullcalendar/daygrid": "^6.1.14", + "@fullcalendar/interaction": "^6.1.14", + "@fullcalendar/list": "^6.1.14", + "@fullcalendar/react": "^6.1.14", + "@fullcalendar/timegrid": "^6.1.14", + "@mui/icons-material": "^7.3.8", + "@mui/material": "^7.3.8", + "@mui/x-data-grid": "^8.27.1", + "@mui/x-date-pickers": "^8.27.2", + "apexcharts": "^5.6.0", + "axios": "^1.13.5", + "classnames": "^2.3.2", + "date-fns": "^4.1.0", + "dayjs": "^1.11.19", + "formik": "^2.4.9", + "leaflet": "^1.9.4", + "prop-types": "^15.8.1", + "react": "^19.2.4", + "react-apexcharts": "^2.0.1", + "react-dom": "^19.2.4", + "react-leaflet": "^5.0.0", + "react-router-dom": "^7.13.0", + "react-sortablejs": "^6.1.4", + "react-syntax-highlighter": "^16.1.0", + "recharts": "^3.7.0", + "sortablejs": "^1.15.7", + "tinycolor2": "^1.6.0", + "topojson-client": "^3.1.0", + "tss-react": "^4.9.20", + "uuid": "^13.0.0", + "yup": "^1.7.1" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.2", + "@vitejs/plugin-react-swc": "^4.2.0", + "cross-env": "^10.1.0", + "eslint": "^10.0.1", + "globals": "^17.3.0", + "jsdom": "^28.1.0", + "sass": "^1.97.3", + "vite": "^7.3.1", + "vitest": "^4.0.18" + } +} diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..9361eff --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,3 @@ +module.exports = { + plugins: {}, +}; diff --git a/public/favicon blue.png b/public/favicon blue.png new file mode 100644 index 0000000..67fa6d6 Binary files /dev/null and b/public/favicon blue.png differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..a11777c Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..9aecba0 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..032b50a --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,15 @@ + + + + favicon + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/public/logo192.png b/public/logo192.png new file mode 100644 index 0000000..fc44b0a Binary files /dev/null and b/public/logo192.png differ diff --git a/public/logo512.png b/public/logo512.png new file mode 100644 index 0000000..a4e47a6 Binary files /dev/null and b/public/logo512.png differ diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..3589efa --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "app.title", + "name": "app.title", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/sketch/material_sketch.sketch b/sketch/material_sketch.sketch new file mode 100644 index 0000000..fe9bc42 Binary files /dev/null and b/sketch/material_sketch.sketch differ diff --git a/src/components/App.js b/src/components/App.js new file mode 100644 index 0000000..0e7506c --- /dev/null +++ b/src/components/App.js @@ -0,0 +1,112 @@ +import React from 'react'; +import { + BrowserRouter, + Navigate, + Route, + Routes, + useNavigate, +} from 'react-router-dom'; +import { SnackbarProvider } from './Snackbar'; + +// components +import Layout from './Layout'; +import Documentation from './Documentation/Documentation'; + +// pages +import Error from '../pages/error'; +import Login from '../pages/login'; +import Verify from '../pages/verify'; +import Reset from '../pages/reset'; + +// context +import { useUserState } from '../context/UserContext'; +import { setNavigator } from '../router/navigation'; + +export default function App() { + // global + let { isAuthenticated } = useUserState(); + const isAuth = isAuthenticated(); + const routerBase = import.meta.env.BASE_URL || '/'; + + return ( + <> + + + + + } /> + } + /> + } /> + } /> + } /> + + + + } + /> + + + + } + /> + + + + } + /> + + + + } + /> + } /> + + + + + ); + + // ####################################################################### + + function PrivateRoute({ children }) { + if (!isAuth) { + return ; + } + + return children; + } + + function PublicRoute({ children }) { + if (isAuth) { + return ; + } + + return children; + } +} + +function RouterNavigatorSync() { + const navigate = useNavigate(); + + React.useEffect(() => { + setNavigator(navigate); + return () => setNavigator(null); + }, [navigate]); + + return null; +} diff --git a/src/components/BreadCrumbs/index.js b/src/components/BreadCrumbs/index.js new file mode 100644 index 0000000..032cfa1 --- /dev/null +++ b/src/components/BreadCrumbs/index.js @@ -0,0 +1,176 @@ +import React from 'react'; +import Widget from '../Widget'; +import { Link } from 'react-router-dom'; +import { Box, Grid, Breadcrumbs, Tabs, Tab } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import { Typography, Button } from '../Wrappers'; +import { + NavigateNext as NavigateNextIcon, + CalendarToday as CalendarIcon, +} from '@mui/icons-material'; +import { useLocation } from 'react-router-dom'; + +// styles +import useStyles from '../Layout/styles'; + +// components +import structure from '../Sidebar/SidebarStructure'; + +// Tab styling +const CustomTab = styled(Tab)(() => ({ + minWidth: 72, + textTransform: 'none', + fontWeight: 400, +})); + +//Sidebar structure +const BreadCrumbs = () => { + const location = useLocation(); + const classes = useStyles(); + const [value, setValue] = React.useState(2); + + const renderBreadCrumbs = () => { + let url = location.pathname; + let route = url + .split('/') + .slice(1) + .map((route) => + route + .split('-') + .map((word) => word[0].toUpperCase() + word.slice(1)) + .join(' '), + ); + const length = route.length; + return route.map((item, index) => { + let middlewareUrl = + '/' + + url + .split('/') + .slice(1, index + 2) + .join('/'); + + return ( + } + aria-label='breadcrumb' + > + + {length === index + 1 ? ( + item + ) : ( + + {item} + + )} + + + ); + }); + }; + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + const date = () => { + let dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + const monthNames = ["January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December" + ]; + let d = new Date() + let year = d.getFullYear() + let month = d.getMonth() + let date = d.getDate() + let day = d.getDay() + 1 + return `${date} ${monthNames[month]} ${year}, ${dayNames[day - 1]}` + } + + function a11yProps(index) { + return { + id: `simple-tab-${index}`, + 'aria-controls': `simple-tabpanel-${index}`, + }; + } + return ( + + + { + + structure.map((c) => { + if ( + location.pathname.includes(c.link) && + c.link && + c.label === 'Dashboard' + ) { + return ( + + + {c.label} + + {location.pathname.includes('/app/dashboard') && ( + + + + + + + )} + + ); + } + }) + } + {location.pathname.includes('/app/dashboard') ? ( + + + + {/*29 Oct 2019, Tuesday*/} + {date()} + + + + ) : ( + } + aria-label='breadcrumb' + > + {renderBreadCrumbs()} + + )} + + + ); +}; +export default BreadCrumbs; diff --git a/src/components/Chat/Chat.js b/src/components/Chat/Chat.js new file mode 100644 index 0000000..ce81c6f --- /dev/null +++ b/src/components/Chat/Chat.js @@ -0,0 +1,65 @@ +import { + Dialog, + DialogContent, + DialogTitle, + TextField as Input, + Box +} from "@mui/material"; + +// components +import { Button, Typography } from "../Wrappers"; +import Dot from "../Sidebar/components/Dot"; + +export default function Chat({ open, onClose }) { + return ( + + + +
Chat
+ + +  13 + +
+
+ + + Jane Hew + Hey! How it's going? + + + Axel Pittman + I'll definitely buy this template + + + Sophia Fernandez + What's the font-family? + + + + + + +
+ ); +} diff --git a/src/components/Chat/package.json b/src/components/Chat/package.json new file mode 100644 index 0000000..b295510 --- /dev/null +++ b/src/components/Chat/package.json @@ -0,0 +1,6 @@ +{ + "name": "Chat", + "version": "1.0.0", + "main": "Chat.js", + "license": "MIT" +} diff --git a/src/components/Chat/styles.js b/src/components/Chat/styles.js new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Code/Code.js b/src/components/Code/Code.js new file mode 100644 index 0000000..9b4c368 --- /dev/null +++ b/src/components/Code/Code.js @@ -0,0 +1,24 @@ + +// styles +import useStyles from './styles'; +import SyntaxHighlighter from 'react-syntax-highlighter'; +import { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs'; + +const Code = ({ children, row, inline }) => { + const props = { row, inline }; + const classes = useStyles(props); + return ( +
+ + {children} + +
+ ); +}; + +export default Code; diff --git a/src/components/Code/package.json b/src/components/Code/package.json new file mode 100644 index 0000000..ef345f3 --- /dev/null +++ b/src/components/Code/package.json @@ -0,0 +1,6 @@ +{ + "name": "Code", + "version": "1.0.0", + "main": "Code.js", + "license": "MIT" +} diff --git a/src/components/Code/styles.js b/src/components/Code/styles.js new file mode 100644 index 0000000..e1949aa --- /dev/null +++ b/src/components/Code/styles.js @@ -0,0 +1,11 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles(() => ({ + codeContainer: { + display: (props) => (props.inline ? 'inline-block' : 'flex'), + flexDirection: (props) => (props.row ? 'row' : 'column'), + }, + codeComponent: { + flexGrow: (props) => (props.row ? 0 : 1), + }, +})); diff --git a/src/components/Dialog/index.js b/src/components/Dialog/index.js new file mode 100644 index 0000000..885596a --- /dev/null +++ b/src/components/Dialog/index.js @@ -0,0 +1,35 @@ +import React from 'react'; +import Button from '@mui/material/Button'; +import MaterialDialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogContentText from '@mui/material/DialogContentText'; +import DialogTitle from '@mui/material/DialogTitle'; +import Slide from '@mui/material/Slide'; + +const Transition = React.forwardRef(function Transition(props, ref) { + return ; +}); + +const Dialog = ({ open, title, onClose, contentText, onSubmit }) => ( + + {title} + + + {contentText} + + + + + + + +); + +export default Dialog; diff --git a/src/components/Documentation/Documentation.js b/src/components/Documentation/Documentation.js new file mode 100644 index 0000000..6387acd --- /dev/null +++ b/src/components/Documentation/Documentation.js @@ -0,0 +1,106 @@ +import { + Navigate, + Route, + Routes, + useLocation, +} from 'react-router-dom'; + +//styles +import useStyles from './styles'; + +//pages +import Start from './pages/start'; +import TypographyPage from './pages/typography'; +import WidgetPage from './pages/widget'; +import HeaderPage from './pages/header'; +import SidebarPage from './pages/sidebar'; +import ButtonsPage from './pages/buttons'; + +//components +import Header from './components/Header'; +import Sidebar from '../../components/Sidebar'; +import structure from './components/Sidebar/SidebarStructure'; +import Widget from '../Widget'; + +import { Typography } from '../Wrappers'; +import classnames from 'classnames'; + +//context +import { useLayoutState } from '../../context/LayoutContext'; +import { Box, Breadcrumbs, Grid } from '@mui/material'; + +import { NavigateNext as NavigateNextIcon } from '@mui/icons-material'; + +const Documentation = () => { + // global + let layoutState = useLayoutState(); + const classes = useStyles(); + const location = useLocation(); + return ( +
+
+ +
+
+ + + + { } + {structure.map((c) => { + if (!c.children && location.pathname.includes(c.link) && c.link) { + return ( + + + {c.label} + + + ); + } else if (c.children) { + return c.children.forEach((currentInner) => { + // eslint-disable-array-callback-return + if (location.pathname.includes(currentInner.link)) { + return ( + } + aria-label='breadcrumb' + key={c.id} + > + {c.label} + + {currentInner.label} + + + ); + } + }); + } + })} + + + + } + /> + } /> + } /> + } /> + } /> + } /> + } /> + +
+
+ ); +}; + +export default Documentation; diff --git a/src/components/Documentation/components/Header/Header.js b/src/components/Documentation/components/Header/Header.js new file mode 100644 index 0000000..922834c --- /dev/null +++ b/src/components/Documentation/components/Header/Header.js @@ -0,0 +1,143 @@ +import { useEffect, useState } from 'react'; +import useStyles from './styles'; +import { useNavigate } from 'react-router-dom'; + +// Material-UI core components +import { AppBar, Toolbar, IconButton, Box, Button } from '@mui/material'; +import { useTheme } from '@mui/material'; + +// Material Icons +import { + ArrowBack as ArrowBackIcon, + Menu as MenuIcon, +} from '@mui/icons-material'; + +import GitHubIcon from '@mui/icons-material/GitHub'; +import FacebookIcon from '@mui/icons-material/Facebook'; +import InstagramIcon from '@mui/icons-material/Instagram'; +import LinkedInIcon from '@mui/icons-material/LinkedIn'; +import TwitterIcon from '@mui/icons-material/Twitter'; + +// Components +import { Typography, Link } from '../../../Wrappers'; +import { + toggleSidebar, + useLayoutDispatch, + useLayoutState, +} from '../../../../context/LayoutContext'; +import classNames from 'classnames'; + +const Header = () => { + const theme = useTheme(); + const classes = useStyles(); + const navigate = useNavigate(); + let layoutState = useLayoutState(); + let layoutDispatch = useLayoutDispatch(); + const [isSmall, setSmall] = useState(false); + + useEffect(function () { + window.addEventListener('resize', handleWindowWidthChange); + handleWindowWidthChange(); + return function cleanup() { + window.removeEventListener('resize', handleWindowWidthChange); + }; + }); + + function handleWindowWidthChange() { + let windowWidth = window.innerWidth; + let breakpointWidth = theme.breakpoints.values.md; + let isSmallScreen = windowWidth < breakpointWidth; + setSmall(isSmallScreen); + } + + return ( + + + toggleSidebar(layoutDispatch)} + className={classNames( + classes.headerMenuButton, + classes.headerMenuButtonCollapse, + )} + > + {(!layoutState.isSidebarOpened && isSmall) || + (layoutState.isSidebarOpened && !isSmall) ? ( + + ) : ( + + )} + + + React Material Admin Full{' '} +   Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Header; diff --git a/src/components/Documentation/components/Header/package.json b/src/components/Documentation/components/Header/package.json new file mode 100644 index 0000000..b30c9b8 --- /dev/null +++ b/src/components/Documentation/components/Header/package.json @@ -0,0 +1,6 @@ +{ + "name": "Header", + "version": "1.0.0", + "main": "Header.js", + "license": "MIT" +} diff --git a/src/components/Documentation/components/Header/styles.js b/src/components/Documentation/components/Header/styles.js new file mode 100644 index 0000000..3a399c3 --- /dev/null +++ b/src/components/Documentation/components/Header/styles.js @@ -0,0 +1,50 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + menuIcon: { + marginRight: theme.spacing(2), + }, + icons: { + [theme.breakpoints.down('sm')]: { + display: 'none', + }, + }, + appBar: { + width: '100%', + zIndex: theme.zIndex.drawer + 1, + transition: theme.transitions.create(['margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + }, + toolbar: { + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(2), + }, + hide: { + display: 'none', + }, + grow: { + flexGrow: 1, + }, + logo: { + flexGrow: 1, + display: 'flex', + alignItems: 'center', + [theme.breakpoints.down('sm')]: { + display: 'none', + }, + marginLeft: 20, + marginRight: 20, + }, + headerButtons: { + [theme.breakpoints.down('sm')]: { + marginLeft: 'auto', + }, + }, + fullWidthXs: { + [theme.breakpoints.down('sm')]: { + width: '100%', + }, + }, +})); diff --git a/src/components/Documentation/components/Sidebar/SidebarStructure.js b/src/components/Documentation/components/Sidebar/SidebarStructure.js new file mode 100644 index 0000000..51bd6f3 --- /dev/null +++ b/src/components/Documentation/components/Sidebar/SidebarStructure.js @@ -0,0 +1,42 @@ +const structure = [ + { + id: 0, + label: 'Getting Started', + link: '/documentation/getting-started', + children: [ + { + label: 'Quick start', + link: '/documentation/getting-started/quick-start', + }, + ], + }, + { + id: 2, + label: 'Components', + link: '/documentation/components', + children: [ + { + label: 'Typography', + link: '/documentation/components/typography', + }, + { + label: 'Widget', + link: '/documentation/components/widget', + }, + { + label: 'Header', + link: '/documentation/components/header', + }, + { + label: 'Sidebar', + link: '/documentation/components/sidebar', + }, + { + label: 'Buttons', + link: '/documentation/components/buttons', + }, + ], + }, +]; + +export default structure; diff --git a/src/components/Documentation/package.json b/src/components/Documentation/package.json new file mode 100644 index 0000000..b7df788 --- /dev/null +++ b/src/components/Documentation/package.json @@ -0,0 +1,6 @@ +{ + "name": "Documentation", + "version": "1.0.0", + "main": "Documentation.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/buttons/Buttons.js b/src/components/Documentation/pages/buttons/Buttons.js new file mode 100644 index 0000000..94403cc --- /dev/null +++ b/src/components/Documentation/pages/buttons/Buttons.js @@ -0,0 +1,119 @@ +import { Box, Grid } from '@mui/material'; + +//components +import Widget from '../../../Widget'; +import { Typography, Button } from '../../../Wrappers'; +import Code from '../../../Code'; + +const Pages = () => { + return ( + <> + + + + + + Buttons + + + Button's variants: + + + + + + Code: + + + {` + + + + `} + + + Button's colors: + + + + + + + + + + + + + + + + + + + + + + + Code: + + + {` + + + + + + + `} + + + + + ); + +}; + +export default Pages; diff --git a/src/components/Documentation/pages/buttons/package.json b/src/components/Documentation/pages/buttons/package.json new file mode 100644 index 0000000..e4ff9e2 --- /dev/null +++ b/src/components/Documentation/pages/buttons/package.json @@ -0,0 +1,6 @@ +{ + "name": "buttons", + "version": "1.0.0", + "main": "Buttons.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/header/Header.js b/src/components/Documentation/pages/header/Header.js new file mode 100644 index 0000000..4529fdd --- /dev/null +++ b/src/components/Documentation/pages/header/Header.js @@ -0,0 +1,100 @@ +import React from 'react'; +import { AppBar, Tabs, Tab, Box, Toolbar, IconButton } from '@mui/material'; + +import { + ArrowRightAlt as ArrowRight, + Menu as MenuIcon, +} from '@mui/icons-material'; + +import useStyles from '../../styles'; + +//components +import Widget from '../../../Widget'; +import { Typography, Link, Button } from '../../../Wrappers'; +import Code from '../../../Code'; + +const WidgetPage = () => { + const classes = useStyles(); + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + const TabPanel = ({ + children, + index, + className = classes.tabPanel, + value, + }) => { + if (index === value) { + return
{children}
; + } + return null; + }; + return ( + + Header element on your page. + {`import { AppBar, Toolbar, IconButton } from '@mui/material'`} + + + + + + + + + + + + + + News + + + + + + + {` + + + + + + + News + + + + + `} + + + + Other props + + + + ); +}; + +export default WidgetPage; diff --git a/src/components/Documentation/pages/header/package.json b/src/components/Documentation/pages/header/package.json new file mode 100644 index 0000000..08f4d2b --- /dev/null +++ b/src/components/Documentation/pages/header/package.json @@ -0,0 +1,6 @@ +{ + "name": "header", + "version": "1.0.0", + "main": "Header.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/libs/Libs.js b/src/components/Documentation/pages/libs/Libs.js new file mode 100644 index 0000000..8b7642f --- /dev/null +++ b/src/components/Documentation/pages/libs/Libs.js @@ -0,0 +1,59 @@ + +//components +import Widget from "../../../Widget"; +import { Typography } from "../../../Wrappers"; +import {List, ListItem, ListItemText} from "@mui/material"; + +const Libs = () => { + return ( + + Icons libs: + + + + + + + + + + + + API libs: + + + + + + Styles libs: + + + + + + + Charts libs: + + + + + + + Datatables libs: + + + + + + Other libs: + + + + + + + + ); +}; + +export default Libs; diff --git a/src/components/Documentation/pages/libs/package.json b/src/components/Documentation/pages/libs/package.json new file mode 100644 index 0000000..dc43a99 --- /dev/null +++ b/src/components/Documentation/pages/libs/package.json @@ -0,0 +1,6 @@ +{ + "name": "libs", + "version": "1.0.0", + "main": "Libs.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/licences/Licences.js b/src/components/Documentation/pages/licences/Licences.js new file mode 100644 index 0000000..673823b --- /dev/null +++ b/src/components/Documentation/pages/licences/Licences.js @@ -0,0 +1,122 @@ +import { + Grid, + Table, + TableBody, + TableCell, + TableRow, + TableHead, + Box } from +"@mui/material"; +import { Add as PlusIcon, Remove as MinusIcon } from "@mui/icons-material"; +import useStyles from "./styles"; + +//components +import Widget from "../../../Widget"; +import { Typography } from "../../../Wrappers"; + +// structure +const rows = [ +{ + advantage: "Hundreds unique components", + single: "plus", + extended: "plus" +}, +{ + advantage: "All pages", + single: "plus", + extended: "plus" +}, +{ + advantage: "Free Updates", + single: "3 months", + extended: "6 months" +}, +{ + advantage: "Paying users allowed", + single: "no", + extended: "plus" +}]; + + +const Licences = () => { + const classes = useStyles(); + return ( + <> + + + + + A license grants you a non-exclusive and non-transferable right to + use and incorporate the item in your personal or commercial + projects. If your end product including an item is going to be + free to the end user then a Single License is what you need. An + Extended License is required if the end user must pay to use the + end product. + + + + + + Single + Extended + + + + {rows.map((row) => + + + {row.advantage} + + + {row.extended === "plus" ? + : + + + } + + + {row.extended === "plus" ? + : + + + } + + + )} + +
+ + + + Single Application License + + Your use of the item is restricted to a single application. You + may use the item in work which you are creating for your own + purposes or for your client. You must not incorporate the item + in a work which is created for redistribution or resale by you + or your client. The item may not be redistributed or resold. You + may not charge users for using your application. + + + + + + Extended Application License + + Your use of the item is restricted to a single application. You + may use the item in work which you are creating for your own + purposes or for your clients. You are licensed to use the Item + to create one single End Product for yourself or for one client + (a “single application”), and the End Product may be Sold and + users may be charged for using it (e.g. you are building SAAS + application). + + +
+
+
+ ); + +}; + +export default Licences; \ No newline at end of file diff --git a/src/components/Documentation/pages/licences/package.json b/src/components/Documentation/pages/licences/package.json new file mode 100644 index 0000000..7c0858c --- /dev/null +++ b/src/components/Documentation/pages/licences/package.json @@ -0,0 +1,6 @@ +{ + "name": "Licences", + "version": "1.0.0", + "main": "Licences.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/licences/styles.js b/src/components/Documentation/pages/licences/styles.js new file mode 100644 index 0000000..277f27c --- /dev/null +++ b/src/components/Documentation/pages/licences/styles.js @@ -0,0 +1,10 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + successIcon: { + color: theme.palette.success.main + }, + failIcon: { + color: "red" + } +})); diff --git a/src/components/Documentation/pages/overview/Overview.js b/src/components/Documentation/pages/overview/Overview.js new file mode 100644 index 0000000..553b026 --- /dev/null +++ b/src/components/Documentation/pages/overview/Overview.js @@ -0,0 +1,119 @@ +import { Grid, Box, List, ListItem, ListItemIcon, ListItemText } from '@mui/material'; +import { + Done as DoneIcon, + ArrowRightAlt as ArrowRight, +} from '@mui/icons-material'; + +import useStyles from './styles'; + +// components +import Widget from '../../../Widget'; +import { Typography, Link } from '../../../Wrappers'; + +const Overview = () => { + const styles = useStyles(); + + return ( + <> + + + + + React Material Admin is a dashboard starter with modern React and MUI. + It is suitable for SaaS admin panels, internal tools, and data-heavy + business apps. + + + + Features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Support + + For help and feedback, use the support forum. + + + Support forum + + + + + + + Continue with + + + Quick start + + + + + Explore + + + Components + + + + + + + + ); +}; + +export default Overview; diff --git a/src/components/Documentation/pages/overview/package.json b/src/components/Documentation/pages/overview/package.json new file mode 100644 index 0000000..45aba08 --- /dev/null +++ b/src/components/Documentation/pages/overview/package.json @@ -0,0 +1,6 @@ +{ + "name": "overview", + "version": "1.0.0", + "main": "Overview.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/overview/styles.js b/src/components/Documentation/pages/overview/styles.js new file mode 100644 index 0000000..6634eca --- /dev/null +++ b/src/components/Documentation/pages/overview/styles.js @@ -0,0 +1,10 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + link: { + display: 'flex', + alignItems: 'center', + color: theme.palette.primary.main, + fontWeight: 'bold' + } +})) diff --git a/src/components/Documentation/pages/pages/Pages.js b/src/components/Documentation/pages/pages/Pages.js new file mode 100644 index 0000000..84f7cab --- /dev/null +++ b/src/components/Documentation/pages/pages/Pages.js @@ -0,0 +1,100 @@ +import { Grid } from "@mui/material"; +import { useNavigate } from 'react-router-dom'; + +//components +import Widget from "../../../Widget"; +import { Typography, Button } from "../../../Wrappers"; +import Code from "../../../Code"; + +const Pages = () => { + const navigate = useNavigate(); + + return ( + <> + + + + Auth + + User authorization is build via{" "} + + React Hooks and React Router Dom + {" "} + to redirect. We're using {`localStorage`}{" "} + to keep that the user is login. When a user is coming in{" "} + + token + {" "} + value is recorded with the number key. You can see a logic + specified in {`/src/components/App.js`} + + {` + function PrivateRoute({ component, ...rest }) { + return ( + + isAuthenticated ? ( + React.createElement(component, props) + ) : ( + + ) + } + /> + ); + } + + function PublicRoute({ component, ...rest }) { + return ( + + isAuthenticated ? ( + + ) : ( + React.createElement(component, props) + ) + } + /> + ); + } + `} + Dashboard + + We have build a dynamic dashboard that visualized via{" "} + + Recharts and Apexcharts + + . You can see a couple of tables that can help you to collect + user's info, such as Support Requests, Payments, New + registrations.{" "} + + + You can switch between timesteps to view the info all the time. + + + + + + ); + +}; + +export default Pages; diff --git a/src/components/Documentation/pages/pages/package.json b/src/components/Documentation/pages/pages/package.json new file mode 100644 index 0000000..bad2b3e --- /dev/null +++ b/src/components/Documentation/pages/pages/package.json @@ -0,0 +1,6 @@ +{ + "name": "pages", + "version": "1.0.0", + "main": "Pages.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/sidebar/Sidebar.js b/src/components/Documentation/pages/sidebar/Sidebar.js new file mode 100644 index 0000000..a3213a3 --- /dev/null +++ b/src/components/Documentation/pages/sidebar/Sidebar.js @@ -0,0 +1,189 @@ +import React from 'react'; +import { + AppBar, + Box, + Collapse, + Grid, + List, + ListItemButton, + ListItemIcon, + ListItemText, + Tab, + Tabs, +} from '@mui/material'; +import { + DashboardRounded as DashboardIcon, + ExpandLess, + ExpandMore, + PeopleAltRounded as PeopleIcon, + ShoppingCartRounded as ShoppingCartIcon, +} from '@mui/icons-material'; + +// components +import Widget from '../../../Widget'; +import { Typography } from '../../../Wrappers'; +import Code from '../../../Code'; +import useStyles from '../../styles'; + +const sidebarStructureExample = [ + { id: 'dashboard', label: 'Dashboard', link: '/app/dashboard' }, + { id: 'ecommerce', label: 'E-Commerce', link: '/app/ecommerce' }, + { + id: 'users', + label: 'Users', + children: [ + { id: 'users-list', label: 'Users List', link: '/app/users' }, + { id: 'users-create', label: 'Create User', link: '/app/user/new' }, + ], + }, +]; + +const SidebarPage = () => { + const classes = useStyles(); + const [tab, setTab] = React.useState(0); + const [activeLink, setActiveLink] = React.useState('/app/users'); + const [usersOpen, setUsersOpen] = React.useState(true); + + const handleTabChange = (event, value) => { + setTab(value); + }; + + const TabPanel = ({ children, index, value, className = classes.tabPanel }) => { + if (index !== value) { + return null; + } + + return
{children}
; + }; + + return ( + <> + + + + + Sidebar navigation is built from a structure{' '} + array. Use it to describe top-level links and nested sections. + + + + + + + + + + + + + Sidebar Preview + + + + setActiveLink('/app/dashboard')} + > + + + + + + + setActiveLink('/app/ecommerce')} + > + + + + + + + setUsersOpen((prev) => !prev)}> + + + + + {usersOpen ? : } + + + + + setActiveLink('/app/users')} + > + + + setActiveLink('/app/user/new')} + > + + + + + + + + + + {` +const sidebarStructure = [ + { id: 'dashboard', label: 'Dashboard', link: '/app/dashboard' }, + { id: 'ecommerce', label: 'E-Commerce', link: '/app/ecommerce' }, + { + id: 'users', + label: 'Users', + children: [ + { id: 'users-list', label: 'Users List', link: '/app/users' }, + { id: 'users-create', label: 'Create User', link: '/app/user/new' }, + ], + }, +]; + + + `} + + In this project, navigation structure is defined in{' '} + src/components/Sidebar/SidebarStructure.js. + + + + + Total items in this example structure:{' '} + {String(sidebarStructureExample.length)} + + + + + + ); +}; + +export default SidebarPage; diff --git a/src/components/Documentation/pages/sidebar/package.json b/src/components/Documentation/pages/sidebar/package.json new file mode 100644 index 0000000..7ceee3b --- /dev/null +++ b/src/components/Documentation/pages/sidebar/package.json @@ -0,0 +1,6 @@ +{ + "name": "sidebar", + "version": "1.0.0", + "main": "Sidebar.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/start/Start.js b/src/components/Documentation/pages/start/Start.js new file mode 100644 index 0000000..01276ad --- /dev/null +++ b/src/components/Documentation/pages/start/Start.js @@ -0,0 +1,86 @@ +import { Grid, List, ListItem, ListItemText } from '@mui/material'; + +//components +import Widget from '../../../Widget'; +import { Typography } from '../../../Wrappers'; +import Code from '../../../Code'; + +const Start = () => { + return ( + <> + + + + + Requirements: + + + + + + + + + + + + + + + + + Quick Start: + + + + 1. Install dependencies: npm install or yarn install} + /> + + + 2. Start frontend-only mode (default): npm run dev or yarn dev} + /> + + + 3. Enable backend mode by setting VITE_BACKEND=true in .env.local, then run npm run dev} + /> + + + 4. Build production bundle: npm run build or yarn build} + /> + + + + Other scripts: + + + + npm run start: starts development server (alias to dev)} + /> + + + npm run preview: preview production build locally} + /> + + + npm run format: format source files with Prettier} + /> + + + + If users pages show Network Error, run frontend-only mode or start backend API on port 8080. + + + + + + ); +}; + +export default Start; diff --git a/src/components/Documentation/pages/start/package.json b/src/components/Documentation/pages/start/package.json new file mode 100644 index 0000000..b0eca5f --- /dev/null +++ b/src/components/Documentation/pages/start/package.json @@ -0,0 +1,6 @@ +{ + "name": "start", + "version": "1.0.0", + "main": "Start.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/typography/Typography.js b/src/components/Documentation/pages/typography/Typography.js new file mode 100644 index 0000000..3a03d37 --- /dev/null +++ b/src/components/Documentation/pages/typography/Typography.js @@ -0,0 +1,182 @@ +import React from 'react'; +import { AppBar, Tabs, Tab, Box } from '@mui/material'; + +import { ArrowRightAlt as ArrowRight } from '@mui/icons-material'; + +import useStyles from '../../styles'; + +//components +import Widget from '../../../Widget'; +import { Typography, Link } from '../../../Wrappers'; +import Code from '../../../Code'; + +const TypographyPage = () => { + const classes = useStyles(); + const [value, setValue] = React.useState(0); + const [weightValue, setWeightValue] = React.useState(0); + const [colorValue, setColorValue] = React.useState(0); + const handleChange = (event, newValue) => { + setValue(newValue); + }; + const handleChangeWeight = (event, newValue) => { + setWeightValue(newValue); + }; + const handleChangeColor = (event, newValue) => { + setColorValue(newValue); + }; + const TabPanel = ({ + children, + index, + className = classes.tabPanel, + value, + }) => { + if (index === value) { + return
{children}
; + } + return null; + }; + return ( + + + Provide typography on your page. + + {`import { Typography } from './components/Wrappers';`} + + + + + + + + Default typography + + SM typography + + + MD typography + + + XL typography + + + XXL typography + + + + {` + Default typography + SM typography + MD typography + XL typography + XXL typography + `} + + + + + + + + + Default weight + + Light weight + + + Medium typography + + + Bold typography + + + + {` + Default weight + Light weight + Medium typography + Bold typography + `} + + + + + + + + + Default + + Primary + + + Secondary + + + Warning + + + Success + + + Success + + + + {` + Default + + Primary + + + Secondary + + + Warning + + + Success + + + Success + + `} + + + + Other props + + + + ); +}; + +export default TypographyPage; diff --git a/src/components/Documentation/pages/typography/package.json b/src/components/Documentation/pages/typography/package.json new file mode 100644 index 0000000..d4e751e --- /dev/null +++ b/src/components/Documentation/pages/typography/package.json @@ -0,0 +1,6 @@ +{ + "name": "typography", + "version": "1.0.0", + "main": "Typography.js", + "license": "MIT" +} diff --git a/src/components/Documentation/pages/widget/Widget.js b/src/components/Documentation/pages/widget/Widget.js new file mode 100644 index 0000000..db98622 --- /dev/null +++ b/src/components/Documentation/pages/widget/Widget.js @@ -0,0 +1,210 @@ +import React from 'react' +import { AppBar, Tabs, Tab, Box } from '@mui/material' + +import { ArrowRightAlt as ArrowRight } from '@mui/icons-material' + +import useStyles from '../../styles' +import useStyles2 from '../overview/styles' + +//components +import Widget from '../../../Widget' +import { Typography, Link } from '../../../Wrappers' +import Code from '../../../Code' + +const WidgetPage = () => { + const classes = useStyles() + const classes2 = useStyles2() + const [value, setValue] = React.useState(0) + const [weightValue, setWeightValue] = React.useState(0) + const [colorValue, setColorValue] = React.useState(0) + const [value4, setValue4] = React.useState(0) + const [value5, setValue5] = React.useState(0) + const handleChange = (event, newValue) => { + setValue(newValue) + } + const handleChangeWeight = (event, newValue) => { + setWeightValue(newValue) + } + const handleChangeColor = (event, newValue) => { + setColorValue(newValue) + } + const handleChangeValue4 = (event, newValue) => { + setValue4(newValue) + } + const handleChangeValue5 = (event, newValue) => { + setValue5(newValue) + } + const TabPanel = ({ + children, + index, + className = classes.tabPanel, + value, + }) => { + if (index === value) { + return
{children}
+ } + return null + } + return ( + + + Provide widget on your page. + + {`import Widget from './components/Widget';`} + + + + + + + + + Widget with the title + + + + {` + + Widget with the title + + `} + + + + + + + + + + Widget with the title and the subtitle + + + + {` + + Widget with the title and the subtitle + + `} + + + + + + + + + + No body padding + + + + {` + + No body padding + + `} + + + + + + + + + + No widget menu + + + + {` + + No widget menu + + `} + + + + + + + + + +

Widget header

+ + )}> + Custom header +
+
+ + {` + +

Widget header

+ + )}> + Custom header +
+ `}
+
+ + + Other props + + +
+ ); +}; + +export default WidgetPage; diff --git a/src/components/Documentation/pages/widget/package.json b/src/components/Documentation/pages/widget/package.json new file mode 100644 index 0000000..ce54e0e --- /dev/null +++ b/src/components/Documentation/pages/widget/package.json @@ -0,0 +1,6 @@ +{ + "name": "widget", + "version": "1.0.0", + "main": "Widget.js", + "license": "MIT" +} diff --git a/src/components/Documentation/styles.js b/src/components/Documentation/styles.js new file mode 100644 index 0000000..ea2bcef --- /dev/null +++ b/src/components/Documentation/styles.js @@ -0,0 +1,62 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + root: { + display: 'flex', + maxWidth: '100vw', + overflowX: 'hidden', + }, + content: { + flexGrow: 1, + padding: theme.spacing(3), + width: `calc(100vw - 240px)`, + minHeight: '100vh', + }, + contentShift: { + width: `calc(100vw - ${240 + theme.spacing(6)}px)`, + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen, + }), + }, + fakeToolbar: { + ...theme.mixins.toolbar, + }, + margin: { + marginBottom: 24, + }, + tabPanel: { + backgroundColor: '#f5f5f5', + padding: theme.spacing(2), + }, + tabsAppBar: { + backgroundColor: theme.palette.primary.main, + color: theme.palette.primary.contrastText, + boxShadow: 'none', + borderRadius: theme.shape.borderRadius, + }, + tabs: { + minHeight: 44, + '& .MuiTabs-indicator': { + backgroundColor: theme.palette.primary.contrastText, + height: 3, + }, + }, + tab: { + minHeight: 44, + textTransform: 'none', + fontWeight: 600, + color: `${theme.palette.primary.contrastText} !important`, + opacity: 0.78, + '&.Mui-selected': { + color: `${theme.palette.primary.contrastText} !important`, + opacity: 1, + }, + }, + link: { + display: 'flex', + alignItems: 'center', + color: theme.palette.primary.main, + fontWeight: 'bold', + }, +})); diff --git a/src/components/Dot/Dot.js b/src/components/Dot/Dot.js new file mode 100644 index 0000000..ef52a04 --- /dev/null +++ b/src/components/Dot/Dot.js @@ -0,0 +1,42 @@ +import { useTheme } from '@mui/material'; +import { makeStyles } from 'styles/mui'; +import classnames from 'classnames'; + +let useStyles = makeStyles((theme) => ({ + dotBase: { + width: 6, + height: 6, + backgroundColor: theme.palette.text.hint, + borderRadius: '50%', + transition: theme.transitions.create('background-color'), + }, + dotMedium: { + width: 8, + height: 8, + }, + dotLarge: { + width: 14, + height: 14, + }, +})); + +export default function Dot({ size = 'small', color, style }) { + let classes = useStyles(); + let theme = useTheme(); + + return ( +
+ ); +} diff --git a/src/components/Dot/package.json b/src/components/Dot/package.json new file mode 100644 index 0000000..59848e8 --- /dev/null +++ b/src/components/Dot/package.json @@ -0,0 +1,6 @@ +{ + "name": "Dot", + "version": "1.0.0", + "main": "Dot.js", + "license": "MIT" +} diff --git a/src/components/Footer/Footer.js b/src/components/Footer/Footer.js new file mode 100644 index 0000000..6155b89 --- /dev/null +++ b/src/components/Footer/Footer.js @@ -0,0 +1,20 @@ +import { Box } from '@mui/material'; + +const Footer = ({ children }) => { + return ( + + {children} + + ); +}; + +export default Footer; diff --git a/src/components/Footer/package.json b/src/components/Footer/package.json new file mode 100644 index 0000000..883e3b2 --- /dev/null +++ b/src/components/Footer/package.json @@ -0,0 +1,6 @@ +{ + "name": "Footer", + "version": "1.0.0", + "main": "Footer.js", + "license": "MIT" +} diff --git a/src/components/FormItems/error/errors.js b/src/components/FormItems/error/errors.js new file mode 100644 index 0000000..332a5be --- /dev/null +++ b/src/components/FormItems/error/errors.js @@ -0,0 +1,59 @@ +import { showSnackbar } from '../../Snackbar'; +import { navigateTo } from '../../../router/navigation'; + +const DEFAULT_ERROR_MESSAGE = 'Error'; + +function selectErrorMessage(error) { + if (error && error.response && error.response.data) { + const data = error.response.data; + + if (data.error && data.error.message) { + return data.error.message; + } + + return String(data); + } + + return error.message || DEFAULT_ERROR_MESSAGE; +} + +function selectErrorCode(error) { + if (error && error.response && error.response.status) { + return error.response.status; + } + + return 500; +} + +export default class Errors { + static handle(error) { + if (import.meta.env.MODE !== 'test') { + console.error(selectErrorMessage(error)); + console.error(error); + } + + if (selectErrorCode(error) === 403) { + navigateTo('/403'); + return; + } + + if (selectErrorCode(error) === 400) { + showSnackbar({ type: 'error', message: selectErrorMessage(error) }); + return; + } + + navigateTo('/500'); + } + + static errorCode(error) { + return selectErrorCode(error); + } + + static selectMessage(error) { + return selectErrorMessage(error); + } + + static showMessage(error) { + showSnackbar({ type: 'error', message: selectErrorMessage(error) }); + } +} diff --git a/src/components/FormItems/formErrors.js b/src/components/FormItems/formErrors.js new file mode 100644 index 0000000..538fe27 --- /dev/null +++ b/src/components/FormItems/formErrors.js @@ -0,0 +1,31 @@ +export default class FormErrors { + static displayableError(form, fieldName, externalErrorMessage = null) { + if (externalErrorMessage) { + return externalErrorMessage; + } + + if (!form.touched[fieldName]) { + return null; + } + + const errors = form.errors[fieldName]; + + if (!errors) { + return null; + } + + if (Array.isArray(errors)) { + return errors[0]; + } + + return errors; + } + + static validateStatus(form, fieldName, externalErrorMessage) { + if (this.displayableError(form, fieldName, externalErrorMessage)) { + return 'is-invalid'; + } + + return ''; + } +} diff --git a/src/components/FormItems/formValidations.js b/src/components/FormItems/formValidations.js new file mode 100644 index 0000000..3de0d0c --- /dev/null +++ b/src/components/FormItems/formValidations.js @@ -0,0 +1,82 @@ +import dayjs from 'utils/dayjs'; +import * as yup from 'yup'; + +const formValidations = (fields) => { + const yupArray = {}; + Object.keys(fields).forEach((field) => { + const type = fields[field].type; + const label = fields[field].label; + const required = fields[field].required; + let yupConds; + switch (type) { + case 'boolean': + yupConds = yup.bool().default(false); + break; + + case 'date': + yupConds = yup + .mixed() + .nullable(true) + .test('is-date', '', (value) => { + if (!value) { + return true; + } + return dayjs(value, 'YYYY-MM-DD').isValid(); + }); + break; + + case 'datetime': + yupConds = yup.mixed().nullable(true); + break; + + case 'decimal': + yupConds = yup.number().nullable(true); + break; + + case 'enum': + yupConds = yup.string().nullable(true); + break; + + case 'files': + yupConds = yup.array().compact().ensure().nullable(true); + break; + + case 'images': + yupConds = yup.array().nullable(true); + break; + + case 'int': + yupConds = yup.number().integer().nullable(true); + break; + + case 'user_many': + case 'relation_many': + yupConds = yup.array().nullable(true); + break; + + case 'user_one': + case 'relation_one': + yupConds = yup.mixed().nullable(true); + break; + + case 'stringArray': + yupConds = yup.array().compact().ensure().of(yup.string().trim()); + break; + + case 'string': + yupConds = yup.string().nullable(true).trim(); + break; + + default: + yupConds = yup.string(); + } + yupConds = yupConds.label(label); + if (required) { + yupConds = yupConds.required(); + } + yupArray[field] = yupConds; + }); + return yup.object().shape(yupArray); +}; + +export default formValidations; diff --git a/src/components/FormItems/iniValues.js b/src/components/FormItems/iniValues.js new file mode 100644 index 0000000..a0736f2 --- /dev/null +++ b/src/components/FormItems/iniValues.js @@ -0,0 +1,112 @@ +import dayjs from 'utils/dayjs'; + +const IniValues = (fields, record = {}) => { + const iniArray = {}; + Object.keys(fields).forEach((field) => { + const type = fields[field].type; + const value = record[field]; + let showValue; + switch (type) { + case 'boolean': + showValue = value; + break; + + case 'date': + showValue = value ? dayjs(value, 'YYYY-MM-DD').toDate() : null; + break; + + case 'dateRange': + if (!value || !value.length) { + showValue = []; + } else { + showValue = value.map((item) => + item ? dayjs(item, 'YYYY-MM-DD').toDate() : null, + ); + } + break; + + case 'datetime': + showValue = value ? dayjs(value).toDate() : null; + break; + + case 'datetimeRange': + if (!value || !value.length) { + showValue = []; + } else { + showValue = value.map((item) => + item ? dayjs(item).toDate() : null, + ); + } + break; + + case 'decimal': + showValue = value; + break; + + case 'decimalRange': + showValue = value || []; + break; + + case 'enum': + if (!value || typeof value === 'string' || value instanceof String) { + showValue = value; + } else { + showValue = value.id; + } + break; + + case 'files': + showValue = value; + break; + + case 'images': + showValue = value; + break; + + case 'int': + showValue = value; + break; + + case 'intRange': + showValue = value; + break; + + case 'relation_many': + showValue = value; + break; + + case 'relation_one': + showValue = value; + break; + + case 'user_many': + showValue = value; + break; + + case 'user_one': + showValue = value; + break; + + case 'stringArray': + if (!value) { + showValue = []; + } else if (Array.isArray(value)) { + showValue = value; + } else { + showValue = [value]; + } + break; + + case 'string': + showValue = value; + break; + + default: + showValue = value; + } + iniArray[field] = showValue; + }); + return iniArray; +}; + +export default IniValues; diff --git a/src/components/FormItems/items/AutocompleteFormItem.js b/src/components/FormItems/items/AutocompleteFormItem.js new file mode 100644 index 0000000..e566df4 --- /dev/null +++ b/src/components/FormItems/items/AutocompleteFormItem.js @@ -0,0 +1,66 @@ +import { useMemo } from 'react'; +import FormControl from '@mui/material/FormControl'; +import FormErrors from 'components/FormItems/formErrors'; +import Autocomplete from '@mui/material/Autocomplete'; +import TextField from '@mui/material/TextField'; + +export default function MultipleSelectChip({ + form, + name, + mapper, + schema, + hint, + errorMessage, + multiple, + items, +}) { + const { label } = schema[name]; + + const selected = useMemo(() => { + if (form.values[name]) { + return multiple + ? form.values[name].map((value) => mapper.intoSelect(value)) + : mapper.intoSelect(form.values[name]); + } + return multiple ? [] : ''; + }, [form.values, mapper, multiple, name]); + + const handleChange = (event, value) => { + if (!value) { + form.setFieldValue(name, multiple ? [] : null); + return; + } + form.setFieldValue(name, value); + }; + + return ( + + { + if (option) { + return option.id === value.id; + } + }} + renderInput={(params) => ( + + )} + ListboxProps={{ + style: { + maxHeight: '250px', + }, + }} + /> +
+ {FormErrors.displayableError(form, name, errorMessage)} +
+ {!!hint && {hint}} +
+ ); +} diff --git a/src/components/FormItems/items/DatePickerFormItem.js b/src/components/FormItems/items/DatePickerFormItem.js new file mode 100644 index 0000000..cc09d8a --- /dev/null +++ b/src/components/FormItems/items/DatePickerFormItem.js @@ -0,0 +1,58 @@ +import PropTypes from 'prop-types'; +import { FastField } from 'formik'; +import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker'; +import TextField from '@mui/material/TextField'; +import FormErrors from 'components/FormItems/formErrors'; + +const DatePickerFormItem = (props) => { + const { + name, + schema, + hint, + errorMessage, + } = props; + + const { label } = schema[name]; + return ( + + {({ form }) => { + return ( +
+ + } + label={label} + value={form.values[name]} + showToolbar + onChange={(value) => { + form.setFieldValue(name, value); + form.setFieldTouched(name); + }} + /> + +
+ {FormErrors.displayableError(form, name, errorMessage)} +
+ {!!hint && {hint}} +
+ ); + }} +
+ ); +}; + +DatePickerFormItem.propTypes = { + name: PropTypes.string.isRequired, + required: PropTypes.bool, + hint: PropTypes.string, + autoFocus: PropTypes.bool, + size: PropTypes.string, + prefix: PropTypes.string, + placeholder: PropTypes.string, + errorMessage: PropTypes.string, + inputProps: PropTypes.object, +}; + +export default DatePickerFormItem; diff --git a/src/components/FormItems/items/FilesFormItem.js b/src/components/FormItems/items/FilesFormItem.js new file mode 100644 index 0000000..a31f199 --- /dev/null +++ b/src/components/FormItems/items/FilesFormItem.js @@ -0,0 +1,54 @@ +import FilesUploader from 'components/FormItems/uploaders/FilesUploader'; +import FormErrors from 'components/FormItems/formErrors'; +import { FastField } from 'formik'; + +const FilesFormItem = (props) => { + const { + name, + schema, + hint, + path, + fileProps, + max = undefined, + inputProps, + required = false, + } = props; + + const { label } = schema[name]; + + return ( + + {({ form }) => ( +
+ {!!label && ( + + )} +
+ { + form.setFieldValue(name, value); + form.setFieldTouched(name); + }} + max={max} + {...inputProps} + /> + +
+ {FormErrors.displayableError(form, name)} +
+ {!!hint && {hint}} +
+ )} +
+ ); +}; + +export default FilesFormItem; diff --git a/src/components/FormItems/items/ImagesFormItem.js b/src/components/FormItems/items/ImagesFormItem.js new file mode 100644 index 0000000..649a819 --- /dev/null +++ b/src/components/FormItems/items/ImagesFormItem.js @@ -0,0 +1,57 @@ +import PropTypes from 'prop-types'; +import ImagesUploader from 'components/FormItems/uploaders/ImagesUploader'; +import FormErrors from 'components/FormItems/formErrors'; +import Typography from '@mui/material/Typography'; +import { FastField } from 'formik'; + +const ImagesFormItem = (props) => { + const { + name, + schema, + hint, + path, + fileProps, + max = undefined, + inputProps + } = props; + + const { label } = schema[name]; + + return ( + + {({ form }) => ( + <> + {label} + { + form.setFieldValue(name, value); + form.setFieldTouched(name); + }} + max={max} + {...inputProps} + /> + +
+ {FormErrors.displayableError(form, name)} +
+ {!!hint && {hint}} + + )} +
+ ); +}; + +ImagesFormItem.propTypes = { + path: PropTypes.string.isRequired, + required: PropTypes.bool, + // form: PropTypes.object.isRequired, + name: PropTypes.string.isRequired, + hint: PropTypes.string, + formItemProps: PropTypes.object, + inputProps: PropTypes.object, +}; + +export default ImagesFormItem; diff --git a/src/components/FormItems/items/InputFormItem.js b/src/components/FormItems/items/InputFormItem.js new file mode 100644 index 0000000..09bd23b --- /dev/null +++ b/src/components/FormItems/items/InputFormItem.js @@ -0,0 +1,66 @@ +import PropTypes from 'prop-types'; +import FormErrors from 'components/FormItems/formErrors'; +import { FastField } from 'formik'; +import TextField from '@mui/material/TextField'; + +const InputFormItem = (props) => { + const { + name, + schema, + hint, + placeholder, + autoFocus, + autoComplete, + inputProps, + errorMessage, + multiline + } = props; + + const { label } = schema[name]; + + return ( + + {({ form }) => ( + <> + { + form.setFieldValue(name, event.target.value); + form.setFieldTouched(name); + }} + value={form.values[name] || ''} + placeholder={placeholder || undefined} + autoFocus={autoFocus || undefined} + autoComplete={autoComplete || undefined} + // error={FormErrors.validateStatus(form, name, errorMessage)} + {...inputProps} + /> +
+ {FormErrors.displayableError(form, name, errorMessage)} +
+ {!!hint && {hint}} + + )} +
+ ); +}; + +InputFormItem.propTypes = { + name: PropTypes.string.isRequired, + required: PropTypes.bool, + type: PropTypes.string, + hint: PropTypes.string, + autoFocus: PropTypes.bool, + size: PropTypes.string, + prefix: PropTypes.string, + placeholder: PropTypes.string, + errorMessage: PropTypes.string, + inputProps: PropTypes.object, +}; + +export default InputFormItem; diff --git a/src/components/FormItems/items/RadioFormItem.js b/src/components/FormItems/items/RadioFormItem.js new file mode 100644 index 0000000..75939b3 --- /dev/null +++ b/src/components/FormItems/items/RadioFormItem.js @@ -0,0 +1,64 @@ +import PropTypes from 'prop-types'; +import FormErrors from 'components/FormItems/formErrors'; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; +import { FastField } from 'formik'; + +const RadioFormItem = (props) => { + const { name, schema, hint, errorMessage } = props; + + const { label, options } = schema[name]; + + return ( + + {({ form }) => ( + <> + + + {label} + + { + form.setFieldValue(name, e.target.value); + form.setFieldTouched(name); + }} + value={form.values[name] || ''} + > + {options.map((option) => ( + } + label={option.label} + /> + ))} + + + +
+ {FormErrors.displayableError(form, name, errorMessage)} +
+ + {!!hint && {hint}} + + )} +
+ ); +}; + +RadioFormItem.propTypes = { + name: PropTypes.string.isRequired, + schema: PropTypes.object.isRequired, + label: PropTypes.string, + hint: PropTypes.string, + required: PropTypes.bool, + errorMessage: PropTypes.string, +}; + +export default RadioFormItem; diff --git a/src/components/FormItems/items/SelectFormItem.js b/src/components/FormItems/items/SelectFormItem.js new file mode 100644 index 0000000..668352d --- /dev/null +++ b/src/components/FormItems/items/SelectFormItem.js @@ -0,0 +1,66 @@ +import PropTypes from 'prop-types'; +import FormErrors from 'components/FormItems/formErrors'; +import { FastField } from 'formik'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +const SelectFormItem = (props) => { + const { schema, form, name, hint, errorMessage } = props; + + const { label, options } = schema[name]; + + const handleChange = (event) => { + const value = event.target.value; + if (!value) { + form.setFieldValue(name, null); + return; + } + form.setFieldValue(name, value); + }; + + return ( + + {({ form }) => ( + <> + + {label} + + +
+ {FormErrors.displayableError(form, name, errorMessage)} +
+ + {!!hint && {hint}} +
+ + )} +
+ ); +}; + +SelectFormItem.propTypes = { + form: PropTypes.object.isRequired, + name: PropTypes.string.isRequired, + schema: PropTypes.object.isRequired, + label: PropTypes.string, + hint: PropTypes.string, + required: PropTypes.bool, + errorMessage: PropTypes.string, + mode: PropTypes.string, + isClearable: PropTypes.bool, +}; + +export default SelectFormItem; diff --git a/src/components/FormItems/items/SwitchFormItem.js b/src/components/FormItems/items/SwitchFormItem.js new file mode 100644 index 0000000..bdfa34c --- /dev/null +++ b/src/components/FormItems/items/SwitchFormItem.js @@ -0,0 +1,55 @@ +import PropTypes from 'prop-types'; +import FormErrors from 'components/FormItems/formErrors'; +import { FastField } from 'formik'; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import FormLabel from '@mui/material/FormLabel'; + +const SwitchFormItem = (props) => { + const { name, schema, hint, errorMessage } = + props; + + const { label } = schema[name]; + + return ( + + {({ form }) => ( + <> + + {label} + { + form.setFieldValue(name, event.target.checked); + form.setFieldTouched(name); + }} + checked={!!form.values[name]} + inputProps={{ 'aria-label': 'controlled' }} + /> + } + /> + + +
+ {FormErrors.displayableError(form, name, errorMessage)} +
+ {!!hint && {hint}} + + )} +
+ ); +}; + +SwitchFormItem.propTypes = { + name: PropTypes.string.isRequired, + required: PropTypes.bool, + hint: PropTypes.string, + size: PropTypes.string, + errorMessage: PropTypes.string, + inputProps: PropTypes.object, +}; + +export default SwitchFormItem; diff --git a/src/components/FormItems/preparedValues.js b/src/components/FormItems/preparedValues.js new file mode 100644 index 0000000..9b0b092 --- /dev/null +++ b/src/components/FormItems/preparedValues.js @@ -0,0 +1,36 @@ +import dayjs from 'utils/dayjs'; + +const PreparedValues = (fields, record = {}) => { + const preparedArray = {}; + Object.keys(fields).forEach((field) => { + const type = fields[field].type; + const value = record[field]; + let preparedValue; + switch (type) { + case 'date': + preparedValue = value ? dayjs(value, 'YYYY-MM-DD').toDate() : null; + break; + + case 'user_many': + case 'relation_many': + if (!value || !value.length) { + preparedValue = []; + } else { + preparedValue = value.map((item) => item.id); + } + break; + + case 'user_one': + case 'relation_one': + preparedValue = value ? value.id : null; + break; + + default: + preparedValue = value; + } + preparedArray[field] = preparedValue; + }); + return preparedArray; +}; + +export default PreparedValues; diff --git a/src/components/FormItems/uploaders/FilesUploader.js b/src/components/FormItems/uploaders/FilesUploader.js new file mode 100644 index 0000000..65e334a --- /dev/null +++ b/src/components/FormItems/uploaders/FilesUploader.js @@ -0,0 +1,139 @@ +import { useState, useRef } from 'react'; +import PropTypes from 'prop-types'; +import InsertLinkIcon from '@mui/icons-material/InsertLink'; +import CloseIcon from '@mui/icons-material/Close'; +import FileUploader from 'components/FormItems/uploaders/UploadService'; +import Errors from '../../../components/FormItems/error/errors'; + +const FilesUploader = (props) => { + const { value, onChange, schema, path, max, readonly } = props; + + const [loading, setLoading] = useState(false); + const inputElement = useRef(null); + + const valuesArr = () => { + if (!value) { + return []; + } + return Array.isArray(value) ? value : [value]; + }; + + const fileList = () => { + return valuesArr().map((item) => ({ + uid: item.id || undefined, + name: item.name, + status: 'done', + url: item.publicUrl, + })); + }; + + const handleRemove = (id) => { + onChange(valuesArr().filter((item) => item.id !== id)); + }; + + const handleChange = async (event) => { + try { + const files = event.target.files; + + if (!files || !files.length) { + return; + } + + let file = files[0]; + + FileUploader.validate(file, schema); + + setLoading(true); + + file = await FileUploader.upload(path, file, schema); + + inputElement.current.value = ''; + setLoading(false); + onChange([...valuesArr(), file]); + } catch (error) { + inputElement.current.value = ''; + console.log('error', error); + setLoading(false); + Errors.showMessage(error); + } + }; + + const formats = () => { + if (schema && schema.formats) { + return schema.formats.map((format) => `.${format}`).join(','); + } + return undefined; + }; + + const uploadButton = ( + + ); + + return ( +
+ {readonly || (max && fileList().length >= max) ? null : uploadButton} + + {valuesArr() && valuesArr().length ? ( +
+ {valuesArr().map((item) => { + return ( +
+ + + {item.name} + + + {!readonly && ( + + )} +
+ ); + })} +
+ ) : null} +
+ ); +}; + +FilesUploader.propTypes = { + readonly: PropTypes.bool, + path: PropTypes.string, + max: PropTypes.number, + schema: PropTypes.shape({ + image: PropTypes.bool, + size: PropTypes.number, + formats: PropTypes.arrayOf(PropTypes.string), + }), + value: PropTypes.any, + onChange: PropTypes.func, +}; + +export default FilesUploader; diff --git a/src/components/FormItems/uploaders/ImagesUploader.js b/src/components/FormItems/uploaders/ImagesUploader.js new file mode 100644 index 0000000..7ccb641 --- /dev/null +++ b/src/components/FormItems/uploaders/ImagesUploader.js @@ -0,0 +1,226 @@ +import { useState, useRef } from 'react'; +import PropTypes from 'prop-types'; +import Button from '@mui/material/Button'; +import CloseIcon from '@mui/icons-material/Close'; +import SearchIcon from '@mui/icons-material/Search'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import Dialog from '@mui/material/Dialog'; +import FileUploader from 'components/FormItems/uploaders/UploadService'; +import Errors from '../../../components/FormItems/error/errors'; +import { makeStyles } from 'styles/mui'; + +const useStyles = makeStyles({ + actionButtonsWrapper: { + position: 'relative' + }, + previewContent: { + padding: '0px !important' + }, + imageItem: { + '&.MuiGrid-root': { + margin: 10, + boxShadow: '2px 2px 8px 0 rgb(0 0 0 / 40%)', + borderRadius: 10 + }, + height: '100px' + }, + actionButtons: { + position: 'absolute', + bottom: 5, + right: 4 + }, + previewContainer: { + '& button': { + position: 'absolute', + top: 10, + right: 10, + '& svg': { + height: 50, + width: 50, + fill: '#FFF', + stroke: '#909090', + strokeWidth: 0.5 + } + } + }, + button: { + padding: '0px !important', + minWidth: '45px !important', + '& svg': { + height: 36, + width: 36, + fill: '#FFF', + stroke: '#909090', + strokeWidth: 0.5 + } + } +}); + +const ImagesUploader = (props) => { + const classes = useStyles(); + const { value, onChange, schema, path, max, readonly } = props; + + const [loading, setLoading] = useState(false); + const [showPreview, setShowPreview] = useState(false); + const [imageMeta, setImageMeta] = useState({ + imageSrc: null, + imageAlt: null + }); + const inputElement = useRef(null); + + const valuesArr = () => { + if (!value) { + return []; + } + return Array.isArray(value) ? value : [value]; + }; + + const fileList = () => { + return valuesArr().map((item) => ({ + uid: item.id || undefined, + name: item.name, + status: 'done', + url: item.publicUrl + })); + }; + + const handleRemove = (id) => { + onChange(valuesArr().filter((item) => item.id !== id)); + }; + + const handleChange = async (event) => { + try { + const files = event.target.files; + + if (!files || !files.length) { + return; + } + + let file = files[0]; + + FileUploader.validate(file, schema); + + setLoading(true); + + file = await FileUploader.upload(path, file, schema); + + inputElement.current.value = ''; + setLoading(false); + onChange([...valuesArr(), file]); + } catch (error) { + inputElement.current.value = ''; + console.log('error', error); + setLoading(false); + Errors.showMessage(error); + } + }; + + const doPreviewImage = (image) => { + setImageMeta({ + imageSrc: image.publicUrl, + imageAlt: image.name + }); + setShowPreview(true); + }; + + const doCloseImageModal = () => { + setImageMeta({ + imageSrc: null, + imageAlt: null + }); + setShowPreview(false); + }; + + const uploadButton = + + + ; + + + return ( + + {readonly || (max && fileList().length >= max) ? null : uploadButton} + + {valuesArr() && valuesArr().length ? + + {valuesArr().map((item) => { + return ( + + {item.name} + + +
+
+ + {!readonly && + + } +
+
+
); + + })} +
: + null} + + + + {imageMeta.imageAlt} + +
); + +}; + +ImagesUploader.propTypes = { + readonly: PropTypes.bool, + path: PropTypes.string, + max: PropTypes.number, + schema: PropTypes.shape({ + image: PropTypes.bool, + size: PropTypes.number, + formats: PropTypes.arrayOf(PropTypes.string) + }), + value: PropTypes.any, + onChange: PropTypes.func +}; + +export default ImagesUploader; diff --git a/src/components/FormItems/uploaders/UploadService.js b/src/components/FormItems/uploaders/UploadService.js new file mode 100644 index 0000000..a003746 --- /dev/null +++ b/src/components/FormItems/uploaders/UploadService.js @@ -0,0 +1,76 @@ +import { v4 as uuid } from 'uuid'; +import Axios from 'axios'; +import config from '@/config'; + +function extractExtensionFrom(filename) { + if (!filename) { + return null; + } + + const regex = /(?:\.([^.]+))?$/; + return regex.exec(filename)[1]; +} + +export default class FileUploader { + static validate(file, schema) { + if (!schema) { + return; + } + + if (schema.image) { + if (!file.type.startsWith('image')) { + throw new Error('You must upload an image'); + } + } + + if (schema.size && file.size > schema.size) { + throw new Error('File is too big.'); + } + + const extension = extractExtensionFrom(file.name); + + if (schema.formats && !schema.formats.includes(extension)) { + throw new Error('Invalid format'); + } + } + + static async upload(path, file, schema) { + try { + this.validate(file, schema); + } catch (error) { + return Promise.reject(error); + } + + const extension = extractExtensionFrom(file.name); + const id = uuid(); + const filename = `${id}.${extension}`; + const privateUrl = `${path}/${filename}`; + + const publicUrl = await this.uploadToServer(file, path, filename); + + return { + id: id, + name: file.name, + sizeInBytes: file.size, + privateUrl, + publicUrl, + new: true, + }; + } + + static async uploadToServer(file, path, filename) { + const formData = new FormData(); + formData.append('file', file); + formData.append('filename', filename); + const uri = `/file/upload/${path}`; + await Axios.post(uri, formData, { + headers: { + 'Content-Type': 'multipart/form-data', + }, + }); + + const privateUrl = `${path}/${filename}`; + + return `${config.baseURLApi}/file/download?privateUrl=${privateUrl}`; + } +} diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js new file mode 100644 index 0000000..82e4823 --- /dev/null +++ b/src/components/Header/Header.js @@ -0,0 +1,189 @@ +import { useState, useEffect } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import { AppBar, Toolbar, IconButton, Menu, MenuItem } from '@mui/material'; +import { useTheme } from '@mui/material'; +import { + Menu as MenuIcon, + Person as AccountIcon, + ArrowBack as ArrowBackIcon, +} from '@mui/icons-material'; +import classNames from 'classnames'; + +//images +import profile from '../../images/main-profile.png'; +import config from '../../config'; + +// styles +import useStyles from './styles'; + +// components +import { Typography, Avatar } from '../Wrappers/Wrappers'; + +// context +import { + useLayoutState, + useLayoutDispatch, + toggleSidebar, +} from '../../context/LayoutContext'; +import { + useManagementDispatch, + useManagementState, +} from '../../context/ManagementContext'; + +import { actions } from '../../context/ManagementContext'; +import { useUserDispatch, signOut } from '../../context/UserContext'; + +export default function Header() { + let classes = useStyles(); + let theme = useTheme(); + const navigate = useNavigate(); + + // global + let layoutState = useLayoutState(); + let layoutDispatch = useLayoutDispatch(); + let userDispatch = useUserDispatch(); + const managementDispatch = useManagementDispatch(); + + // local + const [profileMenu, setProfileMenu] = useState(null); + const [currentUser, setCurrentUser] = useState(); + const [isSmall, setSmall] = useState(false); + + const managementValue = useManagementState(); + + useEffect(() => { + actions.doFind(sessionStorage.getItem('user_id'))(managementDispatch); + }, []); + + useEffect(() => { + if (config.isBackend) { + setCurrentUser(managementValue.currentUser); + } + }, [managementValue]); + + useEffect(function () { + window.addEventListener('resize', handleWindowWidthChange); + handleWindowWidthChange(); + return function cleanup() { + window.removeEventListener('resize', handleWindowWidthChange); + }; + }); + + function handleWindowWidthChange() { + let windowWidth = window.innerWidth; + let breakpointWidth = theme.breakpoints.values.md; + let isSmallScreen = windowWidth < breakpointWidth; + setSmall(isSmallScreen); + } + + return ( + + + toggleSidebar(layoutDispatch)} + className={classNames( + classes.headerMenuButton, + classes.headerMenuButtonCollapse, + )} + > + {(!layoutState.isSidebarOpened && isSmall) || + (layoutState.isSidebarOpened && !isSmall) ? ( + + ) : ( + + )} + + + React Material Admin Full + +
+ setProfileMenu(e.currentTarget)} + > + = 1 && + currentUser?.avatar[currentUser.avatar.length - 1].publicUrl) || profile + } + classes={{ root: classes.headerIcon }} + > + {currentUser?.firstName?.[0]} + + + +
Hi, 
+ + {currentUser?.firstName} + +
+ setProfileMenu(null)} + className={classes.headerMenu} + classes={{ paper: classes.profileMenu }} + disableAutoFocusItem + > +
+ + {currentUser?.firstName} + + + Flatlogic.com + +
+ + + + Profile + + +
+ signOut(userDispatch, navigate)} + > + Sign Out + +
+
+ + + ); +} diff --git a/src/components/Header/HeaderView.js b/src/components/Header/HeaderView.js new file mode 100644 index 0000000..bc47f00 --- /dev/null +++ b/src/components/Header/HeaderView.js @@ -0,0 +1,462 @@ +import { + AppBar, + Toolbar, + IconButton, + InputBase, + Menu, + MenuItem, + Fab +} from "@mui/material"; +import { + Menu as MenuIcon, + MailOutline as MailIcon, + NotificationsNone as NotificationsIcon, + Person as AccountIcon, + Search as SearchIcon, + Send as SendIcon, + ArrowBack as ArrowBackIcon +} from "@mui/icons-material"; +import { alpha } from "@mui/material/styles"; +import { makeStyles } from "styles/mui"; +import classNames from "classnames"; + +import { Badge, Typography } from "../Wrappers"; +import Notification from "../Notification"; +import UserAvatar from "../UserAvatar"; + +const messages = [ + { + id: 0, + variant: "warning", + name: "Jane Hew", + message: "Hey! How is it going?", + time: "9:32" + }, + { + id: 1, + variant: "success", + name: "Lloyd Brown", + message: "Check out my new Dashboard", + time: "9:18" + }, + { + id: 2, + variant: "primary", + name: "Mark Winstein", + message: "I want rearrange the appointment", + time: "9:15" + }, + { + id: 3, + variant: "secondary", + name: "Liana Dutti", + message: "Good news from sale department", + time: "9:09" + } +]; + +const notifications = [ + { id: 0, color: "warning", message: "Check out this awesome ticket" }, + { + id: 1, + color: "success", + type: "info", + message: "What is the best way to get ..." + }, + { + id: 2, + color: "secondary", + type: "notification", + message: "This is just a simple notification" + }, + { + id: 3, + color: "primary", + type: "e-commerce", + message: "12 new orders has arrived today" + } +]; + +const Header = ({ isSidebarOpened, toggleSidebar, ...props }) => { + const classes = useStyles(); + + return ( + + + + {isSidebarOpened ? ( + + ) : ( + + )} + + + React Material Admin + +
+
+
+ +
+ +
+ + + + + + + + + + + + + + +
+ + New Messages + + + {messages.length} New Messages + +
+ {messages.map(message => ( + +
+ + + {message.time} + +
+
+ + {message.name} + + {message.message} +
+
+ ))} + + Send New Message + + +
+ + {notifications.map(notification => ( + + + + ))} + + +
+ + John Smith + + + Flalogic.com + +
+ + Profile + + + Tasks + + + Messages + +
+ + Sign Out + +
+
+ + + ); +}; + +const styles = theme => ({ + logotype: { + color: "white", + marginLeft: theme.spacing(2.5), + marginRight: theme.spacing(2.5), + fontWeight: 500, + fontSize: 18, + whiteSpace: "nowrap", + [theme.breakpoints.down("xs")]: { + display: "none" + } + }, + appBar: { + width: "100vw", + zIndex: theme.zIndex.drawer + 1, + transition: theme.transitions.create(["margin"], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }) + }, + toolbar: { + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(2) + }, + hide: { + display: "none" + }, + grow: { + flexGrow: 1 + }, + search: { + position: "relative", + borderRadius: 25, + paddingLeft: theme.spacing(2.5), + width: 36, + backgroundColor: alpha(theme.palette.common.black, 0), + transition: theme.transitions.create(["background-color", "width"]), + "&:hover": { + cursor: "pointer", + backgroundColor: alpha(theme.palette.common.black, 0.08) + } + }, + searchFocused: { + backgroundColor: alpha(theme.palette.common.black, 0.08), + width: "100%", + [theme.breakpoints.up("md")]: { + width: 250 + } + }, + searchIcon: { + width: 36, + right: 0, + height: "100%", + position: "absolute", + display: "flex", + alignItems: "center", + justifyContent: "center", + transition: theme.transitions.create("right"), + "&:hover": { + cursor: "pointer" + } + }, + searchIconOpened: { + right: theme.spacing(1.25) + }, + inputRoot: { + color: "inherit", + width: "100%" + }, + inputInput: { + height: 36, + padding: 0, + paddingRight: 36 + theme.spacing(1.25), + width: "100%" + }, + messageContent: { + display: "flex", + flexDirection: "column" + }, + headerMenu: { + marginTop: theme.spacing(7) + }, + headerMenuList: { + display: "flex", + flexDirection: "column" + }, + headerMenuItem: { + "&:hover, &:focus": { + backgroundColor: theme.palette.primary.main, + color: "white" + } + }, + headerMenuButton: { + marginLeft: theme.spacing(2), + padding: theme.spacing(1) / 2 + }, + headerMenuButtonCollapse: { + marginRight: theme.spacing(2) + }, + headerIcon: { + fontSize: 28, + color: "rgba(255, 255, 255, 0.35)" + }, + headerIconCollapse: { + color: "white" + }, + profileMenu: { + minWidth: 265 + }, + profileMenuUser: { + display: "flex", + flexDirection: "column", + padding: theme.spacing(2) + }, + profileMenuItem: { + color: theme.palette.text.hint + }, + profileMenuIcon: { + marginRight: theme.spacing(2), + color: theme.palette.text.hint + }, + profileMenuLink: { + fontSize: 16, + textDecoration: "none", + "&:hover": { + cursor: "pointer" + } + }, + messageNotification: { + height: "auto", + display: "flex", + alignItems: "center", + "&:hover, &:focus": { + backgroundColor: theme.palette.background.light + } + }, + messageNotificationSide: { + display: "flex", + flexDirection: "column", + alignItems: "center", + marginRight: theme.spacing(2) + }, + messageNotificationBodySide: { + alignItems: "flex-start", + marginRight: 0 + }, + sendMessageButton: { + margin: theme.spacing(4), + marginTop: theme.spacing(2), + marginBottom: theme.spacing(2), + textTransform: "none" + }, + sendButtonIcon: { + marginLeft: theme.spacing(2) + } +}); + +const useStyles = makeStyles(styles); + +export default Header; diff --git a/src/components/Header/package.json b/src/components/Header/package.json new file mode 100644 index 0000000..be07fee --- /dev/null +++ b/src/components/Header/package.json @@ -0,0 +1,6 @@ +{ + "name": "Header", + "version": "0.0.0", + "private": true, + "main": "Header.js" +} diff --git a/src/components/Header/styles.js b/src/components/Header/styles.js new file mode 100644 index 0000000..84988cc --- /dev/null +++ b/src/components/Header/styles.js @@ -0,0 +1,180 @@ +import { makeStyles } from 'styles/mui'; +import { alpha } from '@mui/material/styles'; + +export default makeStyles((theme) => ({ + logotype: { + color: 'white', + marginLeft: theme.spacing(2.5), + marginRight: theme.spacing(2.5), + fontWeight: 500, + fontSize: 18, + whiteSpace: 'nowrap', + [theme.breakpoints.down('xs')]: { + display: 'none', + }, + }, + appBar: { + width: '100%', + zIndex: theme.zIndex.drawer + 1, + transition: theme.transitions.create(['margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + }, + toolbar: { + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(2), + }, + hide: { + display: 'none', + }, + grow: { + flexGrow: 1, + }, + search: { + position: 'relative', + borderRadius: 25, + paddingLeft: theme.spacing(2.5), + width: 36, + backgroundColor: alpha(theme.palette.common.black, 0), + transition: theme.transitions.create(['background-color', 'width']), + '&:hover': { + cursor: 'pointer', + backgroundColor: alpha(theme.palette.common.black, 0.08), + }, + }, + searchFocused: { + backgroundColor: alpha(theme.palette.common.black, 0.08), + width: '100%', + [theme.breakpoints.up('md')]: { + width: 250, + }, + }, + searchIcon: { + width: 36, + right: 0, + height: '100%', + position: 'absolute', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + transition: theme.transitions.create('right'), + '&:hover': { + cursor: 'pointer', + }, + }, + searchIconOpened: { + right: theme.spacing(1.25), + }, + inputRoot: { + color: 'inherit', + width: '100%', + }, + inputInput: { + height: 36, + padding: 0, + paddingRight: 36 + theme.spacing(1.25), + width: '100%', + }, + messageContent: { + display: 'flex', + flexDirection: 'column', + }, + headerMenu: { + marginTop: theme.spacing(2), + }, + headerMenuList: { + display: 'flex', + flexDirection: 'column', + }, + headerMenuItem: { + '&:hover, &:focus': { + backgroundColor: theme.palette.background.light, + // color: "white", + }, + }, + headerMenuButton: { + marginLeft: theme.spacing(2), + padding: theme.spacing(0.5), + }, + headerMenuButtonSandwich: { + marginLeft: 9, + [theme.breakpoints.down('sm')]: { + marginLeft: 0, + }, + padding: theme.spacing(0.5), + }, + headerMenuButtonCollapse: { + marginRight: theme.spacing(2), + }, + headerIcon: { + fontSize: 28, + color: 'rgba(255, 255, 255, 0.35)', + }, + headerIconCollapse: { + color: 'white', + }, + profileMenu: { + minWidth: 265, + }, + profileMenuUser: { + display: 'flex', + flexDirection: 'column', + padding: theme.spacing(2), + }, + profileMenuItem: { + color: theme.palette.text.hint, + }, + profileMenuIcon: { + marginRight: theme.spacing(2), + color: theme.palette.text.hint, + '&:hover': { + color: theme.palette.primary.main, + }, + }, + profileMenuLink: { + fontSize: 16, + textDecoration: 'none', + '&:hover': { + cursor: 'pointer', + }, + }, + messageNotification: { + height: 'auto', + display: 'flex', + alignItems: 'center', + '&:hover, &:focus': { + backgroundColor: theme.palette.background.light, + }, + }, + messageNotificationSide: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + marginRight: theme.spacing(2), + }, + messageNotificationBodySide: { + alignItems: 'flex-start', + marginRight: 0, + }, + sendMessageButton: { + margin: theme.spacing(4), + marginTop: theme.spacing(2), + marginBottom: theme.spacing(2), + textTransform: 'none', + }, + sendButtonIcon: { + marginLeft: theme.spacing(2), + }, + purchaseBtn: { + [theme.breakpoints.down('sm')]: { + display: 'none', + }, + marginRight: theme.spacing(3), + }, + profileLabel: { + [theme.breakpoints.down('xs')]: { + display: 'none', + }, + }, +})); diff --git a/src/components/Layout/Layout.js b/src/components/Layout/Layout.js new file mode 100644 index 0000000..1727f38 --- /dev/null +++ b/src/components/Layout/Layout.js @@ -0,0 +1,269 @@ +import React from 'react'; +import { Navigate, Route, Routes } from 'react-router-dom'; +import classnames from 'classnames'; + +import SettingsIcon from '@mui/icons-material/Settings'; +import GithubIcon from '@mui/icons-material/GitHub'; +import FacebookIcon from '@mui/icons-material/Facebook'; +import TwitterIcon from '@mui/icons-material/Twitter'; + +import { Fab, IconButton } from '@mui/material'; +// styles +import useStyles from './styles'; + +// components +import Header from '../Header'; +import Sidebar from '../Sidebar'; +import Footer from '../Footer'; +import { Link } from '../Wrappers'; +import ColorChangeThemePopper from './components/ColorChangeThemePopper'; + +import EditUser from '../../pages/user/EditUser'; + +// pages +import Dashboard from '../../pages/dashboard'; +import Profile from '../../pages/profile' +import TypographyPage from '../../pages/typography' +import ColorsPage from '../../pages/colors' +import GridPage from '../../pages/grid' + +import StaticTablesPage from '../../pages/tables' +import DynamicTablesPage from '../../pages/tables/dynamic' + +import IconsPage from '../../pages/icons' +import BadgesPage from '../../pages/badge' +import CarouselsPage from '../../pages/carousel' +import CardsPage from '../../pages/cards' +import ModalsPage from '../../pages/modal' +import NotificationsPage from '../../pages/notifications' +import NavbarsPage from '../../pages/nav' +import TooltipsPage from '../../pages/tooltips' +import TabsPage from '../../pages/tabs' +import ProgressPage from '../../pages/progress' +import WidgetsPage from '../../pages/widget' + +import Ecommerce from '../../pages/ecommerce' +import Product from '../../pages/ecommerce/Products' +import ProductsGrid from '../../pages/ecommerce/ProductsGrid' +import CreateProduct from '../../pages/ecommerce/CreateProduct' + +import FormsElements from '../../pages/forms/elements' +import FormValidation from '../../pages/forms/validation' + +import Charts from '../../pages/charts' +import LineCharts from '../../pages/charts/LineCharts' +import BarCharts from '../../pages/charts/BarCharts' +import PieCharts from '../../pages/charts/PieCharts' + +import DraggableGrid from '../../pages/draggablegrid' + +import MapsGoogle from '../../pages/maps' +import VectorMaps from '../../pages/maps/VectorMap' + +import Timeline from '../../pages/timeline' +import Search from '../../pages/search' +import Gallery from '../../pages/gallery' +import Invoice from '../../pages/invoice' +import Calendar from '../../pages/calendar' + +import BreadCrumbs from '../../components/BreadCrumbs'; + +// context +import { useLayoutState } from '../../context/LayoutContext'; +import { ProductsProvider } from '../../context/ProductContext' + +import UsersFormPage from 'pages/CRUD/Users/form/UsersFormPage'; +import UsersTablePage from 'pages/CRUD/Users/table/UsersTablePage'; + +//Sidebar structure +import structure from '../Sidebar/SidebarStructure' + +function Layout() { + const classes = useStyles(); + const [anchorEl, setAnchorEl] = React.useState(null); + + const open = Boolean(anchorEl); + const id = open ? 'add-section-popover' : undefined; + const handleClick = (event) => { + setAnchorEl(open ? null : event.currentTarget); + }; + + // global + let layoutState = useLayoutState(); + + return ( +
+
+ +
+
+ + + } /> + } /> + } /> + + } + /> + } /> + } /> + } /> + + } + /> + } /> + } /> + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + } + /> + } /> + } /> + + } + /> + } /> + } /> + } /> + } /> + + } /> + + } + /> + } /> + } /> + + } + /> + } /> + } /> + } /> + } /> + } /> + + + + + } + /> + + + + } + /> + + + + } + /> + } /> + } /> + } /> + + } /> + } /> + } /> + } /> + + handleClick(e)} + className={classes.changeThemeFab} + style={{ zIndex: 2000 }} + > + + + +
+
+ + Flatlogic + + + About Us + + + Blog + +
+
+ + + + + + + + + + + + + + + +
+
+
+
+ ); +} + +export default Layout; diff --git a/src/components/Layout/components/ColorChangeThemePopper.js b/src/components/Layout/components/ColorChangeThemePopper.js new file mode 100644 index 0000000..6cb0439 --- /dev/null +++ b/src/components/Layout/components/ColorChangeThemePopper.js @@ -0,0 +1,88 @@ +import React from 'react'; + +import { + Popper, + Divider, + RadioGroup, + Box, + Radio, + Switch as SwitchMode, +} from '@mui/material'; + +import useStyles from '../styles'; + +// components +import Widget from '../../Widget'; +import { Typography } from '../../Wrappers'; +import Themes from '../../../themes'; +import { useThemeDispatch } from '../../../context/ThemeContext'; + +function ColorChangeThemePopper({ open, id, anchorEl }) { + const classes = useStyles(); + let themeDispatch = useThemeDispatch(); + const handleChangeTheme = (e) => { + localStorage.setItem('theme', e.target.value); + themeDispatch(Themes[e.target.value]); + }; + + const toggleDarkTheme = () => { + if (localStorage.getItem('theme') === 'dark') { + localStorage.setItem('theme', 'default'); + themeDispatch(Themes.default); + } else { + localStorage.setItem('theme', 'dark'); + themeDispatch(Themes.dark); + } + }; + + return ( + + + + <> + + color theme + + handleChangeTheme(e)} + > + + + + + + + + + <> + + dark mode + + toggleDarkTheme()} + /> + + + + + ); +} + +export default React.memo(ColorChangeThemePopper, (prevProps, nextProps) => { + return prevProps.anchorEl === nextProps.anchorEl; +}); diff --git a/src/components/Layout/package.json b/src/components/Layout/package.json new file mode 100644 index 0000000..dc67afa --- /dev/null +++ b/src/components/Layout/package.json @@ -0,0 +1,6 @@ +{ + "name": "Layout", + "version": "1.0.0", + "private": true, + "main": "Layout.js" +} diff --git a/src/components/Layout/styles.js b/src/components/Layout/styles.js new file mode 100644 index 0000000..b4584f8 --- /dev/null +++ b/src/components/Layout/styles.js @@ -0,0 +1,96 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + root: { + display: 'flex', + maxWidth: '100vw', + overflowX: 'hidden', + }, + content: { + position: 'relative', + flexGrow: 1, + margin: '0px 35px 0px 35px', + width: `calc(100vw - 240px)`, + minHeight: '100vh', + paddingBottom: 70, + }, + contentShift: { + width: `calc(100vw - (240px + ${theme.spacing(8)}))`, + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen, + }), + }, + fakeToolbar: { + ...theme.mixins.toolbar, + marginTop: 25, + }, + link: { + marginRight: `16px !important`, + textDecoration: 'none', + }, + defaultRadio: { + color: '#536DFE', + '&.MuiRadio-colorSecondary.Mui-checked': { + color: '#536DFE', + }, + }, + successRadio: { + color: '#23a075', + '&.MuiRadio-colorSecondary.Mui-checked': { + color: '#23a075', + }, + }, + secondaryRadio: { + color: '#FF5C93', + '&.MuiRadio-colorSecondary.Mui-checked': { + color: '#FF5C93', + }, + }, + warningRadio: { + color: '#FFC260', + '&.MuiRadio-colorSecondary.Mui-checked': { + color: '#FFC260', + }, + }, + infoRadio: { + color: '#9013FE', + '&.MuiRadio-colorSecondary.Mui-checked': { + color: '#9013FE', + }, + }, + button: { + boxShadow: theme.customShadows.widget, + textTransform: 'none', + '&:active': { + boxShadow: theme.customShadows.widgetWide, + }, + }, + ecommerceIcon: { + color: '#6E6E6E', + }, + calendarIcon: { + color: theme.palette.primary.main, + marginRight: 14, + }, + margin: { + marginBottom: 24, + }, + changeThemeFab: { + position: 'fixed', + top: theme.spacing(15), + right: 0, + zIndex: 1, + borderRadius: 0, + borderTopLeftRadius: '50%', + borderBottomLeftRadius: '50%', + }, + navPadding: { + paddingTop: `${theme.spacing(1)}px !important`, + paddingBottom: `6px !important`, + }, + date: { + marginRight: 38, + color: theme.palette.mode === 'dark' ? '#D6D6D6' : '#4A494A', + }, +})); diff --git a/src/components/Loader/index.js b/src/components/Loader/index.js new file mode 100644 index 0000000..3c0ba4a --- /dev/null +++ b/src/components/Loader/index.js @@ -0,0 +1,20 @@ +import PropTypes from 'prop-types'; +import CircularProgress from '@mui/material/CircularProgress'; + +function Loader({ size }) { + return ( +
+ +
+ ); +} + +Loader.propTypes = { + size: PropTypes.number.isRequired, +}; + +Loader.defaultProps = { + size: 21, +}; + +export default Loader; diff --git a/src/components/Notification/Notification.js b/src/components/Notification/Notification.js new file mode 100644 index 0000000..fc67f03 --- /dev/null +++ b/src/components/Notification/Notification.js @@ -0,0 +1,117 @@ +import React from 'react'; +import { Button } from '@mui/material'; +import { + NotificationsNone as NotificationsIcon, + ThumbUp as ThumbUpIcon, + ShoppingCart as ShoppingCartIcon, + LocalOffer as TicketIcon, + BusinessCenter as DeliveredIcon, + SmsFailed as FeedbackIcon, + DiscFull as DiscIcon, + Email as MessageIcon, + Report as ReportIcon, + Error as DefenceIcon, + AccountBox as CustomerIcon, + Done as ShippedIcon, + Publish as UploadIcon, +} from '@mui/icons-material'; +import { useTheme } from '@mui/material'; +import classnames from 'classnames'; +import tinycolor from 'tinycolor2'; + +// styles +import useStyles from './styles'; + +// components +import { Typography } from '../Wrappers'; + +const typesIcons = { + 'e-commerce': , + notification: , + offer: , + info: , + message: , + feedback: , + customer: , + shipped: , + delivered: , + defence: , + report: , + upload: , + disc: , +}; + +export default function Notification({ variant, ...props }) { + let classes = useStyles(); + let theme = useTheme(); + + const icon = getIconByType(props.type); + const iconWithStyles = React.cloneElement(icon, { + classes: { + root: classes.notificationIcon, + }, + style: { + color: + variant !== 'contained' && + theme.palette[props.color] && + theme.palette[props.color].main, + }, + }); + + return ( +
+
+ {iconWithStyles} +
+
+ + {props.message} + + {props.extraButton && props.extraButtonClick && ( + + )} +
+
+ ); +} + +// #################################################################### +function getIconByType(type = 'offer') { + return typesIcons[type]; +} diff --git a/src/components/Notification/package.json b/src/components/Notification/package.json new file mode 100644 index 0000000..d016252 --- /dev/null +++ b/src/components/Notification/package.json @@ -0,0 +1,6 @@ +{ + "name": "Notification", + "version": "0.0.0", + "private": true, + "main": "Notification.js" +} diff --git a/src/components/Notification/styles.js b/src/components/Notification/styles.js new file mode 100644 index 0000000..1ab52ee --- /dev/null +++ b/src/components/Notification/styles.js @@ -0,0 +1,47 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + notificationContainer: { + display: 'flex', + alignItems: 'center', + }, + notificationContained: { + borderRadius: 45, + height: 45, + boxShadow: theme.customShadows.widgetDark, + }, + notificationContainedShadowless: { + boxShadow: 'none', + }, + notificationIconContainer: { + minWidth: 45, + height: 45, + borderRadius: 45, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + fontSize: 24, + }, + notificationIconContainerContained: { + fontSize: 18, + color: '#FFFFFF80', + }, + notificationIconContainerRounded: { + marginRight: theme.spacing(2), + }, + containedTypography: { + color: 'white', + }, + messageContainer: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + flexGrow: 1, + }, + extraButton: { + color: 'white', + '&:hover, &:focus': { + background: 'transparent', + }, + }, +})); diff --git a/src/components/PageTitle/PageTitle.js b/src/components/PageTitle/PageTitle.js new file mode 100644 index 0000000..cd88335 --- /dev/null +++ b/src/components/PageTitle/PageTitle.js @@ -0,0 +1,29 @@ +import { Button } from '@mui/material'; + +// styles +import useStyles from './styles'; + +// components +import { Typography } from '../Wrappers'; + +export default function PageTitle(props) { + let classes = useStyles(); + + return ( +
+ + {props.title} + + {props.button && ( + + )} +
+ ); +} diff --git a/src/components/PageTitle/package.json b/src/components/PageTitle/package.json new file mode 100644 index 0000000..2bbe12c --- /dev/null +++ b/src/components/PageTitle/package.json @@ -0,0 +1,6 @@ +{ + "name": "PageTitle", + "version": "0.0.0", + "private": true, + "main": "PageTitle.js" +} diff --git a/src/components/PageTitle/styles.js b/src/components/PageTitle/styles.js new file mode 100644 index 0000000..3b362b8 --- /dev/null +++ b/src/components/PageTitle/styles.js @@ -0,0 +1,20 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + pageTitleContainer: { + display: 'flex', + justifyContent: 'space-between', + marginBottom: theme.spacing(4), + marginTop: theme.spacing(5), + }, + typo: { + color: theme.palette.text.hint, + }, + button: { + boxShadow: theme.customShadows.widget, + textTransform: 'none', + '&:active': { + boxShadow: theme.customShadows.widgetWide, + }, + }, +})); diff --git a/src/components/Search/index.js b/src/components/Search/index.js new file mode 100644 index 0000000..4aac396 --- /dev/null +++ b/src/components/Search/index.js @@ -0,0 +1,97 @@ +import { useState } from 'react'; +import classNames from 'classnames'; +import { Search as SearchIcon } from '@mui/icons-material'; +import { InputBase } from '@mui/material'; +import { alpha } from '@mui/material/styles'; +import { makeStyles } from 'styles/mui'; + +const styles = (theme) => ({ + root: { + display: 'flex', + justifyContent: 'flex-end', + }, + search: { + position: 'relative', + borderRadius: 25, + paddingLeft: theme.spacing(2.5), + width: 36, + backgroundColor: alpha(theme.palette.common.black, 0), + transition: theme.transitions.create(['background-color', 'width']), + '&:hover': { + cursor: 'pointer', + backgroundColor: alpha(theme.palette.common.black, 0.08), + }, + }, + searchFocused: { + backgroundColor: alpha(theme.palette.common.black, 0.08), + width: '100%', + [theme.breakpoints.up('md')]: { + width: 250, + }, + }, + searchIcon: { + width: 36, + right: 0, + height: '100%', + position: 'absolute', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + transition: theme.transitions.create('right'), + '&:hover': { + cursor: 'pointer', + }, + }, + searchIconOpened: { + right: theme.spacing(1.25), + }, + headerIcon: { + fontSize: 28, + color: 'rgba(255, 255, 255, 0.35)', + }, + inputRoot: { + color: 'inherit', + width: '100%', + }, + inputInput: { + height: 36, + padding: 0, + paddingRight: 36 + theme.spacing(1.25), + width: '100%', + }, +}); + +const useStyles = makeStyles(styles); + +const Search = () => { + const classes = useStyles(); + const [isSearchOpen, setSearchOpen] = useState(false); + + return ( +
+
+
setSearchOpen(!isSearchOpen)} + > + +
+ +
+
+ ); +}; + +export default Search; diff --git a/src/components/Sidebar/Sidebar.js b/src/components/Sidebar/Sidebar.js new file mode 100644 index 0000000..bbe16cb --- /dev/null +++ b/src/components/Sidebar/Sidebar.js @@ -0,0 +1,114 @@ +import { useState, useEffect, useMemo } from 'react'; +import { ArrowBack as ArrowBackIcon } from '@mui/icons-material'; +import { Drawer, IconButton, List } from '@mui/material'; +import { useTheme } from '@mui/material'; +import classNames from 'classnames'; +import { useLocation } from 'react-router-dom'; + +// styles +import useStyles from './styles'; + +// components +import SidebarLink from './components/SidebarLink/SidebarLink'; + +// context +import { + useLayoutState, + useLayoutDispatch, + toggleSidebar, +} from '../../context/LayoutContext'; + +function Sidebar({ structure }) { + let classes = useStyles(); + let theme = useTheme(); + const location = useLocation(); + + const toggleDrawer = (value) => (event) => { + if ( + event.type === 'keydown' && + (event.key === 'Tab' || event.key === 'Shift') + ) { + return; + } + + if (value && !isPermanent) toggleSidebar(layoutDispatch); + }; + + // global + let { isSidebarOpened } = useLayoutState(); + let layoutDispatch = useLayoutDispatch(); + + // local + let [isPermanent, setPermanent] = useState(true); + + const isSidebarOpenedWrapper = useMemo( + () => (!isPermanent ? !isSidebarOpened : isSidebarOpened), + [isPermanent, isSidebarOpened], + ); + + useEffect(function () { + window.addEventListener('resize', handleWindowWidthChange); + handleWindowWidthChange(); + return function cleanup() { + window.removeEventListener('resize', handleWindowWidthChange); + }; + }); + + return ( + +
+
+ toggleSidebar(layoutDispatch)}> + + +
+ + {structure.map(link => ( + + ))} + + + ); + + // ################################################################## + function handleWindowWidthChange() { + let windowWidth = window.innerWidth; + let breakpointWidth = theme.breakpoints.values.md; + let isSmallScreen = windowWidth < breakpointWidth; + + if (isSmallScreen && isPermanent) { + setPermanent(false); + } else if (!isSmallScreen && !isPermanent) { + setPermanent(true); + } + } +} + +export default Sidebar; diff --git a/src/components/Sidebar/SidebarStructure.js b/src/components/Sidebar/SidebarStructure.js new file mode 100644 index 0000000..6943efc --- /dev/null +++ b/src/components/Sidebar/SidebarStructure.js @@ -0,0 +1,285 @@ +import { + Home as HomeIcon, + FilterNone as UIElementsIcon, + BorderAll as TableIcon, + QuestionAnswer as SupportIcon, + LibraryBooks as LibraryIcon, + HelpOutline as FAQIcon, + BarChart as ChartIcon, + Map as MapIcon, + Apps as CoreIcon, + Description as DescriptionIcon, + ShoppingCart as ShoppingCartIcon, + StarBorder as ExtraIcon, + AddCircle as AddSectionIcon, + FolderOpen as FolderIcon, + Description as DocumentationIcon, + Person as PersonIcon, + AccountCircle as ProfileIcon +} from '@mui/icons-material'; +import ChatIcon from '@mui/icons-material/Chat'; +import ViewCompactRoundedIcon from '@mui/icons-material/ViewCompactRounded'; + +// components +import Dot from './components/Dot'; + +const structure = [ + { id: 100, label: 'Profile', link: '/app/profile', icon: }, + { id: 0, label: 'Dashboard', link: '/app/dashboard', icon: }, + { + id: 1, + label: 'E-commerce', + badge: 'NodeJS', + badgeColor: 'success', + link: '/app/ecommerce', + icon: , + children: [ + { + label: 'Product Manage', + link: '/app/ecommerce/management', + }, + { + label: 'Products Grid', + link: '/app/ecommerce/gridproducts', + }, + { + label: 'Product Page', + link: '/app/ecommerce/product', + }, + ], + }, + { + id: 2, + label: 'User', + link: '/app/user', + badge: 'New', + badgeColor: 'secondary', + icon: , + children: [ + { + label: 'User List', + link: '/app/users', + }, + { + label: 'User Add', + link: '/app/user/new', + }, + { + label: 'User Edit', + link: '/app/user/edit', + }, + ], + }, + { + id: 3, + label: 'Documentation', + link: '/documentation', + icon: , + }, + { id: 4, type: 'divider' }, + { id: 5, type: 'title', label: 'TEMPLATE' }, + { + id: 6, + label: 'Core', + link: '/app/core', + icon: , + children: [ + { + label: 'Typography', + link: '/app/core/typography', + }, + { + label: 'Colors', + link: '/app/core/colors', + }, + { + label: 'Grid', + link: '/app/core/grid', + }, + ], + }, + { + id: 7, + label: 'Tables', + link: '/app/tables', + icon: , + children: [ + { label: 'Tables Basic', + link: '/app/tables/static' + }, + { + label: 'Tables Dynamic', + link: '/app/tables/dynamic', + }, + ], + }, + { + id: 8, + label: 'UI Elements', + link: '/app/ui', + icon: , + children: [ + { label: 'Icons', link: '/app/ui/icons' }, + { label: 'Badge', link: '/app/ui/badge' }, + { label: 'Carousel', link: '/app/ui/carousel' }, + { label: 'Cards', link: '/app/ui/cards' }, + { label: 'Modal', link: '/app/ui/modal' }, + { + label: 'Notifications', + link: '/app/ui/notifications', + }, + { label: 'Navbar', link: '/app/ui/navbar' }, + { label: 'Tooltips', link: '/app/ui/tooltips' }, + { label: 'Tabs', link: '/app/ui/tabs' }, + { label: 'Pagination', link: '/app/tables/dynamic' }, + { label: 'Progress', link: '/app/ui/progress' }, + { label: 'Widget', link: '/app/ui/widget' }, + ], + }, + { + id: 9, + label: 'Forms', + link: '/app/forms', + icon: , + children: [ + { label: 'Form Elements', link: '/app/forms/elements' }, + { label: 'Form Validation', link: '/app/forms/validation' }, + ], + }, + { + id: 10, + label: 'Charts', + link: '/app/charts', + icon: , + children: [ + { label: 'Charts Overview', link: '/app/charts/overview' }, + { label: 'Line Charts', link: '/app/charts/line' }, + { label: 'Bar Charts', link: '/app/charts/bar' }, + { label: 'Pie Charts', link: '/app/charts/pie' }, + ], + }, + { + id: 200, + label: 'Grid', + link: '/app/grid', + icon: , + }, + { + id: 11, + label: 'Maps', + link: '/app/maps', + icon: , + children: [ + { label: 'Google Maps', link: '/app/maps/google' }, + { label: 'Vector Map', link: '/app/maps/vector' }, + ], + }, + { + id: 12, + label: 'Extra', + link: '/app/extra', + icon: , + children: [ + { label: 'Calendar', link: '/app/extra/calendar' }, + { label: 'Invoice', link: '/app/extra/invoice' }, + { + label: 'Login Page', + click: function(...rest) { + const name = 'onLogin' + rest.forEach(c => { + if (c.clickName === name) { + return c() + } + return false + }) + }, + }, + { label: 'Error Page', link: '/404' }, + { label: 'Gallery', link: '/app/extra/gallery' }, + { label: 'Search Result', link: '/app/extra/search' }, + { label: 'Time Line', link: '/app/extra/timeline' }, + ], + }, + { + id: 13, + label: 'Menu Levels', + icon: , + children: [ + { label: 'Level 1.1' }, + { + label: 'Level 1.2', + type: 'nested', + children: [ + { label: 'Level 2.1' }, + { + label: 'Level 2.2', + children: [ + { + label: 'Level 3.1', + }, + ], + }, + ], + }, + ], + }, + { id: 14, type: 'divider' }, + { id: 15, type: 'title', label: 'HELP' }, + { id: 16, label: 'Library', link: 'https://flatlogic.com/templates/', icon: , ext: true }, + { id: 17, label: 'Support', link: 'https://flatlogic.com/forum/', icon: , ext: true }, + { id: 18, label: 'FAQ', link: 'https://flatlogic.com/forum/', icon: , ext: true }, + { id: 19, type: 'divider' }, + { id: 20, type: 'title', label: 'PROJECTS' }, + { + id: 21, + label: 'My recent', + link: '', + icon: , + }, + { + id: 22, + label: 'Starred', + link: '', + icon: , + }, + { + id: 23, + label: 'Background', + link: '', + icon: , + }, + { id: 24, type: 'divider' }, + { + id: 25, + label: 'Add section', + icon: , + click: function(event, ...rest) { + const name = 'addSectionClick' + rest.forEach(c => { + if (c.clickName === name) { + return c(event) + } + return false + }) + }, + }, + { id: 26, type: 'divider' }, + { id: 27, type: 'margin' }, + { id: 28, type: 'divider' }, + { + id: 29, + label: 'Chat', + icon: , + click: function(event, ...rest) { + const name = 'chatSetOpen' + rest.forEach(c => { + if (c.clickName === name) { + return c(event) + } + return false + }) + }, + }, +]; + +export default structure; diff --git a/src/components/Sidebar/components/Dot.js b/src/components/Sidebar/components/Dot.js new file mode 100644 index 0000000..e7c63aa --- /dev/null +++ b/src/components/Sidebar/components/Dot.js @@ -0,0 +1,42 @@ +import { useTheme } from '@mui/material'; +import { makeStyles } from 'styles/mui'; +import classnames from 'classnames'; + +// styles +let useStyles = makeStyles((theme) => ({ + dotBase: { + width: 5, + height: 5, + backgroundColor: theme.palette.text.hint, + borderRadius: '50%', + transition: theme.transitions.create('background-color'), + }, + dotMedium: { + width: 8, + height: 8, + }, + dotLarge: { + width: 18, + height: 18, + }, +})); + +export default function Dot({ size = 'small', color, style }) { + let classes = useStyles(); + let theme = useTheme(); + + return ( +
+ ); +} diff --git a/src/components/Sidebar/components/SidebarLink/SidebarLink.js b/src/components/Sidebar/components/SidebarLink/SidebarLink.js new file mode 100644 index 0000000..2ba6fc2 --- /dev/null +++ b/src/components/Sidebar/components/SidebarLink/SidebarLink.js @@ -0,0 +1,327 @@ +import React, { useState } from 'react'; +import { + Box, + Collapse, + Divider, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, + Popover, + TextField as Input, + Typography, +} from '@mui/material'; +import { + Inbox as InboxIcon, + ExpandMore as ExpandIcon, +} from '@mui/icons-material'; +import { Link } from 'react-router-dom'; +import classnames from 'classnames'; + +// styles +import useStyles from './styles'; +import useStyles2 from '../../styles'; + +// components +import Dot from '../Dot'; +import {Button, Badge, Link as LinkMaterial} from '../../../Wrappers'; + +export default function SidebarLink({ + link, + ext, + icon, + label, + children, + location, + isSidebarOpened, + nested, + type, + toggleDrawer, + click, + ...props +}) { + // local + let [isOpen, setIsOpen] = useState(false); + // Add Section Popover state + const [anchorEl, setAnchorEl] = React.useState(null); + + // Login page onClick + function onLogin() { + localStorage.removeItem('token'); + window.location.reload(); + } + + onLogin.clickName = 'onLogin'; + + let classes = useStyles(isOpen); + const classes2 = useStyles2(); + let isLinkActive = + link && (location.pathname === link || location.pathname.includes(link)); + + if (type === 'title') + return ( + + {label} + + ); + + if (type === 'divider') return ; + + if (type === 'margin') return
; + + // Add Section Popover + + const open = Boolean(anchorEl); + const id = open ? 'add-section-popover' : undefined; + + function addSectionClick(event) { + setAnchorEl(event.currentTarget); + } + + addSectionClick.clickName = 'addSectionClick'; + + const addSectionClose = () => { + setAnchorEl(null); + }; + + if (!children && ext) + return ( + <> + { + if (click) { + return click(e, addSectionClick, onLogin); + } + return toggleDrawer(e); + }} + onKeyPress={toggleDrawer} + component={link ? LinkMaterial : null} + href={link} + className={classes.link} + classes={{ + root: classnames(classes.link, { + [classes.linkActive]: isLinkActive && !nested, + [classes.linkNested]: nested, + }), + }} + > + + {nested ? : icon} + + + + + ); + if (!children) + return ( + <> + { + if (click) { + return click(e, addSectionClick, onLogin); + } + return toggleDrawer(e); + }} + onKeyPress={toggleDrawer} + component={link ? Link : null} + to={link} + className={classes.link} + classes={{ + root: classnames(classes.link, { + [classes.linkActive]: isLinkActive && !nested, + [classes.linkNested]: nested, + }), + }} + > + + {nested ? : icon} + + + + + + Add section + + + + + + + + + ); + + return ( + <> + {props.badge ? ( + + + {icon ? icon : } + + + + + + + ) : ( + + + {icon ? icon : } + + + + + )} + {children && ( + + + {children.map((childrenLink) => ( + + ))} + + + )} + + ); + + // ########################################################### + + function toggleCollapse(e) { + if (isSidebarOpened) { + e.preventDefault(); + setIsOpen(!isOpen); + } + } +} diff --git a/src/components/Sidebar/components/SidebarLink/styles.js b/src/components/Sidebar/components/SidebarLink/styles.js new file mode 100644 index 0000000..0fd12a7 --- /dev/null +++ b/src/components/Sidebar/components/SidebarLink/styles.js @@ -0,0 +1,92 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + link: { + textDecoration: 'none', + '&:hover, &:focus': { + backgroundColor: theme.palette.background.default, + '& > .MuiSvgIcon-root': { + display: 'inline-block', + }, + }, + '&.Mui-focusVisible': { + backgroundColor: 'transparent', + }, + }, + externalLink: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + textDecoration: 'none' + }, + linkActive: { + backgroundColor: theme.palette.background.default, + }, + linkNested: { + paddingLeft: 25, + '&:hover, &:focus': { + backgroundColor: + theme.palette.mode === 'dark' + ? theme.palette.background.light + : '#FFFFFF', + }, + }, + linkIcon: { + marginRight: theme.spacing(1), + color: + theme.palette.mode === 'dark' + ? '#616168 !important' + : theme.palette.text.secondary + '99', + transition: theme.transitions.create('color'), + display: 'flex', + justifyContent: 'center', + }, + linkIconActive: { + color: `${theme.palette.primary.main} !important`, + }, + linkText: { + padding: 0, + color: + theme.palette.mode === 'dark' + ? '#D6D6D6 !important' + : theme.palette.text.secondary + 'CC', + transition: theme.transitions.create(['opacity', 'color']), + fontSize: 14, + }, + linkTextActive: { + color: theme.palette.text.primary, + }, + linkTextHidden: { + opacity: 0, + }, + nestedList: { + paddingLeft: 0, + }, + sectionTitle: { + marginLeft: theme.spacing(4.5), + marginTop: theme.spacing(4), + marginBottom: theme.spacing(2), + }, + divider: { + marginTop: theme.spacing(2), + marginBottom: theme.spacing(2), + height: 1, + backgroundColor: + theme.palette.mode === 'dark' ? 'rgba(151,151,151, .15)' : '#D8D8D880', + }, + expand: { + transform: 'rotate(180deg)', + }, + expandWrapper: { + color: theme.palette.text.secondary + '99', + transition: theme.transitions.create('transform'), + display: (props) => (props ? 'inline-flex' : 'none'), + marginLeft: 'auto', + }, + nestedMenu: { + paddingLeft: 0, + }, + nestedMenuItem: { + paddingLeft: 0, + }, +})); diff --git a/src/components/Sidebar/package.json b/src/components/Sidebar/package.json new file mode 100644 index 0000000..5899c94 --- /dev/null +++ b/src/components/Sidebar/package.json @@ -0,0 +1,6 @@ +{ + "name": "Sidebar", + "version": "0.0.0", + "private": true, + "main": "Sidebar.js" +} diff --git a/src/components/Sidebar/styles.js b/src/components/Sidebar/styles.js new file mode 100644 index 0000000..409c251 --- /dev/null +++ b/src/components/Sidebar/styles.js @@ -0,0 +1,89 @@ +import { makeStyles } from 'styles/mui'; + +const drawerWidth = 240; + +export default makeStyles((theme) => ({ + menuButton: { + marginLeft: 12, + marginRight: 36, + }, + hide: { + display: 'none', + }, + drawer: { + width: drawerWidth, + flexShrink: 0, + whiteSpace: 'nowrap', + }, + drawerOpen: { + width: drawerWidth, + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen, + }), + }, + drawerClose: { + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen, + }), + overflowX: 'hidden', + width: 85, + [theme.breakpoints.down('sm')]: { + width: drawerWidth, + }, + }, + toolbar: { + ...theme.mixins.toolbar, + [theme.breakpoints.down('sm')]: { + display: 'none', + }, + }, + content: { + flexGrow: 1, + padding: theme.spacing(3), + }, + sidebarList: { + marginTop: theme.spacing(1), + }, + mobileBackButton: { + marginTop: theme.spacing(0.5), + marginLeft: theme.spacing(3), + [theme.breakpoints.only('sm')]: { + marginTop: theme.spacing(0.625), + }, + [theme.breakpoints.up('md')]: { + display: 'none', + }, + }, + popover: { + backgroundColor: theme.palette.primary.main, + color: '#fff', + }, + fab: { + width: 36, + height: 34, + }, + noBoxShadow: { + boxShadow: 'none !important', + marginRight: theme.spacing(1), + }, + buttonLabel: { + color: '#fff', + }, + input: { + '& .MuiInputBase-input': { + color: '#fff', + }, + '& .MuiInput-underline:before': { + borderBottom: '1px solid rgba(255, 255, 255, .45)', + }, + }, + chat: { + width: 45, + height: 45, + }, + padding: { + paddingBottom: theme.spacing(2), + }, +})); diff --git a/src/components/Snackbar/index.js b/src/components/Snackbar/index.js new file mode 100644 index 0000000..0b0a1ca --- /dev/null +++ b/src/components/Snackbar/index.js @@ -0,0 +1,83 @@ +import React, { createContext, useContext } from 'react'; +import Snackbar from '@mui/material/Snackbar'; +import Alert from '@mui/material/Alert'; +import Slide from '@mui/material/Slide'; + +export const INITIAL_STATE = { + open: false, + message: '', + anchorOrigin: { + horizontal: 'center', + vertical: 'top', + }, + autoHideDuration: 4000, + type: 'success', +}; + +const ACTIONS = { + open: 'open', + close: 'close', +}; + +function reducer(state, action) { + switch (action.type) { + case ACTIONS.open: + return { + ...state, + open: true, + ...action.options, + }; + case ACTIONS.close: + return INITIAL_STATE; + default: + return state; + } +} + +const getSnackbar = () => { + const SnackbarContext = createContext({}); + let dispatchAction; + + const SnackbarProvider = ({ initialValue = INITIAL_STATE, children }) => { + const [state, dispatch] = React.useReducer(reducer, initialValue); + dispatchAction = dispatch; + + const handleClose = () => { + dispatchAction({ type: ACTIONS.close }); + }; + + return ( + + + + {state.message} + + + {children} + + ); + }; + + const showSnackbar = (options) => { + dispatchAction && dispatchAction({ type: ACTIONS.open, options }); + }; + + return [SnackbarProvider, () => useContext(SnackbarContext), showSnackbar]; +}; + +const [SnackbarProvider, useSnackbar, showSnackbar] = getSnackbar(); + +export { SnackbarProvider, useSnackbar, showSnackbar }; diff --git a/src/components/Table/Actions.js b/src/components/Table/Actions.js new file mode 100644 index 0000000..6b7fa0d --- /dev/null +++ b/src/components/Table/Actions.js @@ -0,0 +1,65 @@ +import React from 'react'; +import { useNavigate } from 'react-router-dom'; + +import IconButton from '@mui/material/IconButton'; +import MoreVertIcon from '@mui/icons-material/MoreVert'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import DeleteIcon from '@mui/icons-material/Delete'; +import EditIcon from '@mui/icons-material/Edit'; + +const Actions = ({ classes, id, openModal, entity }) => { + const navigate = useNavigate(); + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + + const handleClick = (event) => { + event.stopPropagation(); + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( +
+ + + + + { + const editPath = + entity === 'users' + ? `/app/users/${id}/edit` + : `/admin/${entity}/${id}/edit`; + navigate(editPath); + handleClose(); + }} + > + + Edit + + { + openModal(event, id); + handleClose(); + }} + > + + Delete + + +
+ ); +}; + +export default Actions; diff --git a/src/components/Timeline/Timeline.js b/src/components/Timeline/Timeline.js new file mode 100644 index 0000000..26562ab --- /dev/null +++ b/src/components/Timeline/Timeline.js @@ -0,0 +1,43 @@ +import { Box } from '@mui/material'; +import useStyles from './styles'; + +//components +import { Typography, Avatar } from '../Wrappers'; + +const Timestep = (props) => { + return ( + + + + ); +}; + +const Circle = ({ children, ...props }) => { + const classes = useStyles(); + return ( + + + {children ? children : null} + + + ); +}; + +const Annotation = (props) => { + return ( + <> + + {props.children} + + + ); +}; + +export { Annotation, Circle, Timestep }; diff --git a/src/components/Timeline/package.json b/src/components/Timeline/package.json new file mode 100644 index 0000000..c0e9051 --- /dev/null +++ b/src/components/Timeline/package.json @@ -0,0 +1,6 @@ +{ + "name": "Timeline", + "version": "1.0.0", + "main": "Timeline.js", + "license": "MIT" +} diff --git a/src/components/Timeline/styles.js b/src/components/Timeline/styles.js new file mode 100644 index 0000000..b384291 --- /dev/null +++ b/src/components/Timeline/styles.js @@ -0,0 +1,18 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles(() => ({ + border: { + position: 'relative', + '&:before': { + content: "''", + position: 'absolute', + border: '1px solid #bdbdbd', + left: '50%', + height: 'calc(100% + 40px)', + width: 1, + }, + }, + circle: { + border: 'rgba(255,255,255,.2) 5px solid', + }, +})); diff --git a/src/components/UserAvatar/UserAvatar.js b/src/components/UserAvatar/UserAvatar.js new file mode 100644 index 0000000..63342ef --- /dev/null +++ b/src/components/UserAvatar/UserAvatar.js @@ -0,0 +1,26 @@ +import { useTheme } from '@mui/material'; + +// styles +import useStyles from './styles'; + +// components +import { Typography } from '../Wrappers'; + +export default function UserAvatar({ color = 'primary', ...props }) { + let classes = useStyles(); + let theme = useTheme(); + + let letters = props.name + .split(' ') + .map((word) => word[0]) + .join(''); + + return ( +
+ {letters} +
+ ); +} diff --git a/src/components/UserAvatar/package.json b/src/components/UserAvatar/package.json new file mode 100644 index 0000000..ed1f9d1 --- /dev/null +++ b/src/components/UserAvatar/package.json @@ -0,0 +1,6 @@ +{ + "name": "UserAvatar", + "version": "0.0.0", + "private": true, + "main": "UserAvatar.js" +} diff --git a/src/components/UserAvatar/styles.js b/src/components/UserAvatar/styles.js new file mode 100644 index 0000000..c15013a --- /dev/null +++ b/src/components/UserAvatar/styles.js @@ -0,0 +1,15 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles(() => ({ + avatar: { + width: 30, + height: 30, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + borderRadius: '50%', + }, + text: { + color: 'white', + }, +})); diff --git a/src/components/Widget/Widget.js b/src/components/Widget/Widget.js new file mode 100644 index 0000000..5f3deca --- /dev/null +++ b/src/components/Widget/Widget.js @@ -0,0 +1,95 @@ +import { Paper, Box } from '@mui/material'; +import classnames from 'classnames'; + +//components +import { Typography } from '../Wrappers'; + +// styles +import useStyles from './styles'; + +export default function Widget({ + children, + title, + subtitle, + noBodyPadding, + bodyClass, + header, + inheritHeight, + className, + style, + widgetWithDropdown, + ...props +}) { + let classes = useStyles(props); + + return ( +
+ + {!title ? ( + <> + {header ? ( +
{header}
+ ) : null} + + ) : ( + <> + {!widgetWithDropdown && ( +
+ + + + {title} + + + + {subtitle} + + + + +
+ )} + + )} + +
+ {children} +
+
+
+ ); +} diff --git a/src/components/Widget/package.json b/src/components/Widget/package.json new file mode 100644 index 0000000..9f222d7 --- /dev/null +++ b/src/components/Widget/package.json @@ -0,0 +1,6 @@ +{ + "name": "Widget", + "version": "0.0.0", + "private": true, + "main": "Widget.js" +} diff --git a/src/components/Widget/styles.js b/src/components/Widget/styles.js new file mode 100644 index 0000000..e469eb2 --- /dev/null +++ b/src/components/Widget/styles.js @@ -0,0 +1,73 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + widgetWrapper: { + display: 'flex', + }, + inheritHeight: { + minHeight: 'auto', + }, + widgetHeader: { + padding: theme.spacing(3), + paddingBottom: theme.spacing(0), + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }, + widgetRoot: { + boxShadow: theme.customShadows.widget, + }, + widgetBody: { + height: (props) => (props.fullHeight ? '100%' : 'inherit'), + padding: theme.spacing(3), + paddingTop: theme.spacing(1), + }, + noPadding: { + padding: 0, + }, + paper: { + display: 'flex', + flexDirection: 'column', + flexGrow: 1, + width: '100%', + }, + moreButton: { + margin: -theme.spacing(1), + padding: 0, + width: 40, + height: 40, + color: theme.palette.text.hint, + '&:hover': { + backgroundColor: theme.palette.primary.main, + color: 'rgba(255, 255, 255, 0.35)', + }, + }, + searchIcon: { + color: 'rgba(0, 0, 0, 0.23)', + }, + topPart: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + paddingRight: 24, + paddingLeft: 24, + paddingTop: 24, + }, + formControl: { + margin: 0, + minWidth: 65, + '& > div > svg': { + right: '2px', + }, + }, + inputPosition: { + transform: 'translate(7px, 10px) scale(1)', + fontSize: 15, + }, + selectPadding: { + padding: 7, + '& > svg': { + right: 0, + }, + }, +})); diff --git a/src/components/Wrappers/Wrappers.js b/src/components/Wrappers/Wrappers.js new file mode 100644 index 0000000..67ea6ee --- /dev/null +++ b/src/components/Wrappers/Wrappers.js @@ -0,0 +1,436 @@ +import { + Badge as BadgeBase, + Typography as TypographyBase, + Button as ButtonBase, + Chip as ChipBase, + Tooltip as TooltipBase, + Avatar as AvatarBase, + Paper as PaperBase, + AppBar as AppBarBase, + Link as LinkBase, + CircularProgress as CircularProgressBase, + LinearProgress as LinearProgressBase, + Radio as RadioBase, +} from '@mui/material'; +import { useTheme } from '@mui/material'; +import { makeStyles } from 'styles/mui'; +import classnames from 'classnames'; + +// styles +const useStyles = makeStyles(() => ({ + badge: { + fontWeight: 600, + height: (props) => { + if (!props.variant) return 16; + }, + minWidth: (props) => { + if (!props.variant) return 16; + }, + }, +})); + +function Badge({ children, colorBrightness, color, type, ...props }) { + const classes = useStyles(props); + const theme = useTheme(); + const Styled = createStyled({ + badge: { + backgroundColor: + type === 'tag' + ? `${getColor(color, theme, colorBrightness)}44` + : getColor(color, theme, colorBrightness), + color: type === 'tag' ? getColor(color, theme, colorBrightness) : 'white', + borderRadius: type === 'tag' && 4, + padding: type === 'tag' && '6px 6px', + height: type === 'tag' && 'auto', + position: type === 'tag' && 'static', + transform: type === 'tag' && 'none', + marginRight: type === 'tag' && 10, + marginBottom: type === 'tag' && 10, + alignContent: 'center', + }, + }); + + return ( + + {(styledProps) => ( + + {children} + + )} + + ); +} + +function Chip({ colorBrightness, color, ...props }) { + const theme = useTheme(); + const Styled = createStyled({ + root: { + backgroundColor: getColor(color, theme, colorBrightness), + color: 'white', + }, + }); + + return ( + + {(styledProps) => ( + + )} + + ); +} + +function Typography({ + children, + weight, + size, + colorBrightness, + color, + block, + uppercase, + style, + ...props +}) { + const theme = useTheme(); + + return ( + + {children} + + ); +} + +function Button({ children, color, className, style, ...props }) { + const useStyles = makeStyles((theme) => ({ + root: { + color: getColor(color, theme), + }, + contained: { + backgroundColor: getColor(color, theme), + boxShadow: theme.customShadows.widget, + color: + theme.palette.mode === 'dark' && !color + ? '#000' + : `${color ? 'white' : theme.palette.text.primary} !important`, + '&:hover': { + backgroundColor: getColor(color, theme, 'light'), + boxShadow: theme.customShadows.widgetWide, + }, + '&:active': { + boxShadow: theme.customShadows.widgetWide, + }, + }, + outlined: { + color: getColor(color, theme), + borderColor: getColor(color, theme), + }, + select: { + backgroundColor: theme.palette.primary.main, + color: '#fff', + }, + })); + const classes = useStyles(); + + return ( + + {children} + + ); +} + +function Avatar({ children, color, colorBrightness, ...props }) { + const theme = useTheme(); + + const Styled = createStyled({ + colorDefault: { + backgroundColor: getColor(color, theme, colorBrightness), + }, + }); + + return ( + + {({ classes }) => ( + + {children} + + )} + + ); +} + +function Tooltip({ children, color, ...props }) { + const theme = useTheme(); + + const Styled = createStyled({ + tooltip: { + backgroundColor: getColor(color, theme), + color: 'white', + }, + }); + + return ( + + {({ classes }) => ( + + {children} + + )} + + ); +} + +function Paper({ children, color, ...props }) { + const theme = useTheme(); + + const Styled = createStyled({ + root: { + backgroundColor: getColor(color, theme), + }, + }); + + return ( + + {({ classes }) => ( + + {children} + + )} + + ); +} + +function AppBar({ children, color, ...props }) { + const useStyles = makeStyles((theme) => ({ + root: { + backgroundColor: getColor(color, theme), + }, + })); + + const classes = useStyles(); + + return ( + + {children} + + ); +} + +function Link({ children, color, ...props }) { + const useStyles = makeStyles((theme) => ({ + root: { + color: color + ? `${getColor(color, theme)} !important` + : theme.palette.text.primary, + textDecoration: 'none', + }, + })); + + const classes = useStyles(); + + return ( + + {children} + + ); +} + +function CircularProgress({ children, color, ...props }) { + const useStyles = makeStyles((theme) => ({ + root: { + color: color + ? `${getColor(color, theme)} !important` + : theme.palette.primary.main, + }, + })); + + const classes = useStyles(); + + return ( + + {children} + + ); +} + +function LinearProgress({ children, color, ...props }) { + const theme = useTheme(); + + const Styled = createStyled({ + root: { + backgroundColor: getCustomBackgroundColor(color), + }, + bar: { + backgroundColor: color + ? `${getColor(color, theme)} !important` + : theme.palette.primary.main, + }, + }); + + return ( + + {({ classes }) => ( + + {children} + + )} + + ); +} + +function Radio({ ...props }) { + const Styled = createStyled({ + root: { + color: 'green', + '&$checked': { + color: 'green', + }, + }, + checked: {}, + }); + + return ( + + {({ classes }) => ( + + )} + + ); +} + +export { + Badge, + Typography, + Button, + Chip, + Tooltip, + Avatar, + Paper, + AppBar, + Link, + CircularProgress, + LinearProgress, + Radio, +}; + +// ######################################################################## + +function getColor(color, theme, brightness = 'main') { + if (color && theme.palette[color] && theme.palette[color][brightness]) { + return theme.palette[color][brightness]; + } +} + +function getCustomBackgroundColor(color) { + switch (color) { + case 'primary': + return 'rgba(83, 109, 254, .3)'; + case 'secondary': + return 'rgba(255, 198, 208, 0.3)'; + case 'warning': + return 'rgba(255, 219, 198, 0.3)'; + case 'success': + return 'rgba(147, 212, 185, 0.3)'; + case 'info': + return 'rgba(214, 172, 254, 0.3)'; + default: + return '#C4D4FE'; + } +} + +function getFontWeight(style) { + switch (style) { + case 'light': + return 300; + case 'medium': + return 500; + case 'bold': + return 600; + default: + return 400; + } +} + +function getFontSize(size, variant = '', theme) { + let multiplier; + + switch (size) { + case 'sm': + multiplier = 0.8; + break; + case 'md': + multiplier = 1.5; + break; + case 'xl': + multiplier = 2; + break; + case 'xxl': + multiplier = 3; + break; + default: + multiplier = 1; + break; + } + + const defaultSize = + variant && theme.typography[variant] + ? theme.typography[variant].fontSize + : theme.typography.fontStyle + 'px'; + + return `calc(${defaultSize} * ${multiplier})`; +} + +function createStyled(styles) { + const useStyledClasses = makeStyles(styles); + + return function Styled(props) { + const { children, ...other } = props; + const classes = useStyledClasses(other); + + return children({ + ...other, + classes, + }); + }; +} diff --git a/src/components/Wrappers/package.json b/src/components/Wrappers/package.json new file mode 100644 index 0000000..d4fef7d --- /dev/null +++ b/src/components/Wrappers/package.json @@ -0,0 +1,6 @@ +{ + "name": "Wrappers", + "version": "0.0.0", + "private": true, + "main": "Wrappers.js" +} diff --git a/src/components/styles.js b/src/components/styles.js new file mode 100644 index 0000000..311fc69 --- /dev/null +++ b/src/components/styles.js @@ -0,0 +1,84 @@ +import { makeStyles } from 'styles/mui'; +import tinycolor from 'tinycolor2'; + +export default makeStyles((theme) => ({ + layoutContainer: { + height: 200, + display: 'flex', + flexDirection: 'column', + justifyContent: 'space-between', + alignItems: 'center', + marginTop: theme.spacing(2), + border: '1px dashed', + borderColor: theme.palette.primary.main, + position: 'relative', + }, + layoutText: { + color: tinycolor(theme.palette.background.light).darken().toHexString(), + }, + layoutButtonsRow: { + width: '100%', + display: 'flex', + justifyContent: 'space-between', + }, + layoutButton: { + backgroundColor: theme.palette.background.light, + width: 125, + height: 50, + outline: 'none', + border: 'none', + }, + layoutButtonActive: { + backgroundColor: tinycolor(theme.palette.background.light) + .darken() + .toHexString(), + }, + buttonsContainer: { + display: 'flex', + flexDirection: 'column', + alignItems: 'flex-start', + marginTop: theme.spacing(2), + }, + notificationCallButton: { + color: 'white', + marginBottom: theme.spacing(1), + textTransform: 'none', + }, + codeContainer: { + display: 'flex', + flexDirection: 'column', + marginTop: theme.spacing(2), + }, + codeComponent: { + flexGrow: 1, + }, + notificationItem: { + marginTop: theme.spacing(2), + }, + toastsContainer: { + width: 'auto', + marginTop: theme.spacing(6), + right: 0, + background: 'transparent', + boxShadow: 'none', + '& div': { + display: 'flex', + alignItems: 'center', + boxShadow: 'none', + overflow: 'visible', + }, + '& p': { + paddingRight: 32, + }, + }, + progress: { + visibility: 'hidden', + }, + notification: { + display: 'flex', + alignItems: 'center', + background: 'transparent', + boxShadow: 'none', + overflow: 'visible', + }, +})); diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..fb8721b --- /dev/null +++ b/src/config.js @@ -0,0 +1,40 @@ +const isDevelopment = import.meta.env.DEV; +const hostApi = isDevelopment + ? "http://localhost" + : "https://sing-generator-node.flatlogic.com"; +const portApi = isDevelopment ? 8080 : ""; +const baseURLApi = `${hostApi}${portApi ? `:${portApi}` : ``}/api`; +const redirectUrl = isDevelopment + ? "http://localhost:3000" + : typeof window !== "undefined" + ? window.location.origin + : "https://flatlogic.github.io/react-material-admin-full"; +const isBackend = String(import.meta.env.VITE_BACKEND).toLowerCase() === "true"; + +const appConfig = { + hostApi, + portApi, + baseURLApi, + redirectUrl, + remote: "https://sing-generator-node.flatlogic.com", + isBackend, + auth: { + email: 'admin@flatlogic.com', + password: 'password', + }, + app: { + colors: { + dark: '#002B49', + light: '#FFFFFF', + sea: '#004472', + sky: '#E9EBEF', + wave: '#D1E7F6', + rain: '#CCDDE9', + middle: '#D7DFE6', + black: '#13191D', + salat: '#21AE8C', + }, + }, +}; + +export default appConfig; diff --git a/src/context/LayoutContext.js b/src/context/LayoutContext.js new file mode 100644 index 0000000..ac1d1f6 --- /dev/null +++ b/src/context/LayoutContext.js @@ -0,0 +1,57 @@ +import React from 'react'; + +let LayoutStateContext = React.createContext(); +let LayoutDispatchContext = React.createContext(); + +function layoutReducer(state, action) { + switch (action.type) { + case 'TOGGLE_SIDEBAR': + return { ...state, isSidebarOpened: !state.isSidebarOpened }; + default: { + throw new Error(`Unhandled action type: ${action.type}`); + } + } +} + +function LayoutProvider({ children }) { + let [state, dispatch] = React.useReducer(layoutReducer, { + isSidebarOpened: true, + }); + return ( + + + {children} + + + ); +} + +function useLayoutState() { + let context = React.useContext(LayoutStateContext); + if (context === undefined) { + throw new Error('useLayoutState must be used within a LayoutProvider'); + } + return context; +} + +function useLayoutDispatch() { + let context = React.useContext(LayoutDispatchContext); + if (context === undefined) { + throw new Error('useLayoutDispatch must be used within a LayoutProvider'); + } + return context; +} + +const toggleSidebar = (dispatch) => { + dispatch({ + type: 'TOGGLE_SIDEBAR', + }); +}; + +export { + LayoutProvider, + useLayoutState, + useLayoutDispatch, + toggleSidebar, + LayoutStateContext, +}; diff --git a/src/context/ManagementContext.js b/src/context/ManagementContext.js new file mode 100644 index 0000000..3664556 --- /dev/null +++ b/src/context/ManagementContext.js @@ -0,0 +1,512 @@ +import React from 'react'; +import axios from 'axios'; +import config from '../../src/config'; +import { showSnackbar } from '../components/Snackbar'; +import { + createMockUser, + deleteMockUser, + findMockUser, + listMockUsers, + updateMockUser, +} from '../repositories/usersMockRepository'; + +async function list(filter = {}) { + if (!config.isBackend) { + return listMockUsers(filter, filter.request); + } + + const queryParams = new URLSearchParams(); + queryParams.set('users', filter.users || ''); + + if (filter.page !== undefined && filter.page !== null) { + queryParams.set('page', String(filter.page)); + } + + if (filter.limit !== undefined && filter.limit !== null) { + queryParams.set('limit', String(filter.limit)); + } + + if (filter.orderBy && typeof filter.orderBy === 'object') { + Object.entries(filter.orderBy).forEach(([key, value]) => { + if (value !== undefined && value !== null) { + queryParams.set(key, String(value)); + } + }); + } + + const query = queryParams.toString(); + const request = (filter.request || '').replace(/^(\?|&)+/, ''); + const url = request ? `/users?${query}&${request}` : `/users?${query}`; + const response = await axios.get(url); + + return response.data; +} + +function syncUserInLocalStorage(updatedUser) { + const rawUser = localStorage.getItem('user'); + + if (!rawUser || !updatedUser?.id) { + return; + } + + try { + const parsedUser = JSON.parse(rawUser); + const currentUserId = parsedUser?.user?.id; + + if (!currentUserId || String(currentUserId) !== String(updatedUser.id)) { + return; + } + + localStorage.setItem( + 'user', + JSON.stringify({ + ...parsedUser, + user: { + ...parsedUser.user, + ...updatedUser, + }, + }), + ); + } catch { + return; + } +} + +let ManagementStateContext = React.createContext(); +let ManagementDispatchContext = React.createContext(); +const initialData = { + findLoading: false, + saveLoading: false, + currentUser: null, + rows: [], + count: null, + loading: false, + idToDelete: null, + modalOpen: false, +}; + +function managementReducer(state = initialData, { type, payload }) { + if (type === 'USERS_FORM_RESET') { + return { + ...state, + findLoading: false, + saveLoading: false, + currentUser: null, + }; + } + + if (type === 'USERS_FORM_FIND_STARTED') { + return { + ...state, + currentUser: null, + findLoading: true, + }; + } + + if (type === 'USERS_FORM_FIND_SUCCESS') { + return { + ...state, + currentUser: payload, + findLoading: false, + }; + } + + if (type === 'USERS_FORM_FIND_ERROR') { + return { + ...state, + currentUser: null, + findLoading: false, + }; + } + + if (type === 'USERS_FORM_CREATE_STARTED') { + return { + ...state, + saveLoading: true, + }; + } + + if (type === 'USERS_FORM_CREATE_SUCCESS') { + return { + ...state, + saveLoading: false, + }; + } + + if (type === 'USERS_FORM_CREATE_ERROR') { + return { + ...state, + saveLoading: false, + }; + } + + if (type === 'USERS_FORM_UPDATE_STARTED') { + return { + ...state, + saveLoading: true, + }; + } + + if (type === 'USERS_FORM_UPDATE_SUCCESS') { + return { + ...state, + currentUser: payload, + saveLoading: false, + }; + } + + if (type === 'USERS_FORM_UPDATE_ERROR') { + return { + ...state, + saveLoading: false, + }; + } + + if (type === 'USERS_LIST_FETCH_STARTED') { + return { + ...state, + loading: true, + }; + } + + if (type === 'USERS_LIST_FETCH_SUCCESS') { + return { + ...state, + loading: false, + count: payload.count, + rows: payload.rows, + }; + } + + if (type === 'USERS_LIST_FETCH_ERROR') { + return { + ...state, + loading: false, + rows: [], + }; + } + + if (type === 'USERS_LIST_DELETE_STARTED') { + return { + ...state, + loading: true, + }; + } + + if (type === 'USERS_LIST_DELETE_SUCCESS') { + return { + ...state, + loading: false, + modalOpen: false, + }; + } + + if (type === 'USERS_LIST_DELETE_ERROR') { + return { + ...state, + loading: false, + modalOpen: false, + }; + } + + if (type === 'USERS_LIST_OPEN_CONFIRM') { + return { + ...state, + loading: false, + modalOpen: true, + idToDelete: payload.id, + }; + } + + if (type === 'USERS_LIST_CLOSE_CONFIRM') { + return { + ...state, + loading: false, + modalOpen: false, + }; + } + + return state; +} + +function ManagementProvider({ children }) { + let [state, dispatch] = React.useReducer(managementReducer, initialData); + + return ( + + + {children} + + + ); +} + +function useManagementState() { + let context = React.useContext(ManagementStateContext); + if (context === undefined) { + throw new Error( + 'useManagementState must be used within a ManagementProvider', + ); + } + return context; +} + +function useManagementDispatch() { + let context = React.useContext(ManagementDispatchContext); + if (context === undefined) { + throw new Error( + 'useManagementDispatch must be used within a ManagementProvider', + ); + } + return context; +} + +// ########################################################### + +const actions = { + doNew: () => { + return { + type: 'USERS_FORM_RESET', + }; + }, + + doFind: (id, options = {}) => async (dispatch) => { + const { navigate, redirectPath = null } = options; + + dispatch({ + type: 'USERS_FORM_FIND_STARTED', + }); + + if (!id) { + dispatch({ + type: 'USERS_FORM_FIND_ERROR', + }); + if (navigate && redirectPath) { + navigate(redirectPath); + } + return; + } + + if (!config.isBackend) { + const record = findMockUser(id); + + if (!record) { + showSnackbar({ type: 'error', message: 'User not found' }); + dispatch({ + type: 'USERS_FORM_FIND_ERROR', + }); + if (navigate && redirectPath) { + navigate(redirectPath); + } + return; + } + + dispatch({ + type: 'USERS_FORM_FIND_SUCCESS', + payload: record, + }); + } else { + try { + const res = await axios.get(`/users/${id}`); + const currentUser = res.data; + dispatch({ + type: 'USERS_FORM_FIND_SUCCESS', + payload: currentUser, + }); + } catch (error) { + showSnackbar({ type: 'error', message: 'Error' }); + console.log(error); + dispatch({ + type: 'USERS_FORM_FIND_ERROR', + }); + if (navigate && redirectPath) { + navigate(redirectPath); + } + } + } + }, + + doCreate: (values, navigate, redirectPath = '/app/users') => async (dispatch) => { + try { + dispatch({ + type: 'USERS_FORM_CREATE_STARTED', + }); + + if (config.isBackend) { + await axios.post('/users', { data: values }); + } else { + createMockUser(values); + } + + dispatch({ + type: 'USERS_FORM_CREATE_SUCCESS', + }); + showSnackbar({ type: 'success', message: 'Users created' }); + + if (navigate && redirectPath) { + navigate(redirectPath); + } + } catch (error) { + showSnackbar({ type: 'error', message: 'Error' }); + console.log(error); + dispatch({ + type: 'USERS_FORM_CREATE_ERROR', + }); + } + }, + + doUpdate: (id, values, navigate, options = {}) => async (dispatch) => { + const { redirectPath = '/app/dashboard', isProfile = false } = options; + + try { + dispatch({ + type: 'USERS_FORM_UPDATE_STARTED', + }); + + let updatedUser = values; + if (config.isBackend) { + await axios.put(`/users/${id}`, { id, data: values }); + updatedUser = { id, ...values }; + } else { + updatedUser = updateMockUser(id, values); + if (!updatedUser) { + showSnackbar({ type: 'error', message: 'User not found' }); + dispatch({ + type: 'USERS_FORM_UPDATE_ERROR', + }); + return; + } + } + + syncUserInLocalStorage(updatedUser); + + dispatch({ + type: 'USERS_FORM_UPDATE_SUCCESS', + payload: updatedUser, + }); + + showSnackbar({ + type: 'success', + message: isProfile ? 'Profile updated' : 'Users updated', + }); + + if (navigate && redirectPath) { + navigate(redirectPath); + } + } catch (error) { + showSnackbar({ type: 'error', message: 'Error' }); + console.log(error); + + dispatch({ + type: 'USERS_FORM_UPDATE_ERROR', + }); + } + }, + + doChangePassword: + ({ newPassword, currentPassword }) => + async (dispatch) => { + try { + dispatch({ + type: 'USERS_FORM_CREATE_STARTED', + }); + await axios.put('/auth/password-update', { + newPassword, + currentPassword, + }); + dispatch({ + type: 'USERS_PASSWORD_UPDATE_SUCCESS', + }); + + showSnackbar({ type: 'success', message: 'Password updated' }); + } catch (error) { + showSnackbar({ type: 'error', message: 'Error' }); + console.log(error); + + dispatch({ + type: 'USERS_FORM_CREATE_ERROR', + }); + } + }, + + doFetch: + (filter, keepPagination = false) => + async (dispatch) => { + try { + dispatch({ + type: 'USERS_LIST_FETCH_STARTED', + payload: { filter, keepPagination }, + }); + + const response = await list(filter); + + dispatch({ + type: 'USERS_LIST_FETCH_SUCCESS', + payload: { + rows: response.rows, + count: response.count, + }, + }); + } catch (error) { + showSnackbar({ type: 'error', message: 'Error' }); + console.log(error); + + dispatch({ + type: 'USERS_LIST_FETCH_ERROR', + }); + } + }, + + doDelete: (filter, id) => async (dispatch) => { + try { + dispatch({ + type: 'USERS_LIST_DELETE_STARTED', + }); + + if (config.isBackend) { + await axios.delete(`/users/${id}`); + } else { + deleteMockUser(id); + } + + dispatch({ + type: 'USERS_LIST_DELETE_SUCCESS', + }); + + const response = await list(filter); + dispatch({ + type: 'USERS_LIST_FETCH_SUCCESS', + payload: { + rows: response.rows, + count: response.count, + }, + }); + } catch (error) { + showSnackbar({ type: 'error', message: 'Error' }); + console.log(error); + dispatch({ + type: 'USERS_LIST_DELETE_ERROR', + }); + } + }, + doOpenConfirm: (id) => async (dispatch) => { + dispatch({ + type: 'USERS_LIST_OPEN_CONFIRM', + payload: { + id: id, + }, + }); + }, + doCloseConfirm: () => async (dispatch) => { + dispatch({ + type: 'USERS_LIST_CLOSE_CONFIRM', + }); + }, +}; + +export { + ManagementProvider, + useManagementState, + useManagementDispatch, + actions, +}; diff --git a/src/context/ProductContext.js b/src/context/ProductContext.js new file mode 100644 index 0000000..122d6c1 --- /dev/null +++ b/src/context/ProductContext.js @@ -0,0 +1,152 @@ +import React from 'react'; +import axios from 'axios'; + +import config from '../config'; +import { rows as mockProducts } from '../pages/ecommerce/mock'; + +const ProductsContext = React.createContext(); + +const rootReducer = (state, action) => { + switch (action.type) { + case 'UPDATE_PRODUCTS': + return { + isLoaded: true, + products: action.payload, + images: state.images ? state.images : [], + }; + case 'EDIT_PRODUCT': { + const index = action.payload.id; + return { + ...state, + isLoaded: true, + products: state.products.map((c) => { + if (c.id === index) { + return { ...c, ...action.payload }; + } + return c; + }), + }; + } + + case 'GET_IMAGES': + return { + ...state, + images: action.payload, + }; + + case 'CREATE_PRODUCT': + state.products.push(action.payload); + return { + ...state, + isLoaded: true, + products: state.products, + }; + + default: + return { + ...state, + }; + } +}; + +const ProductsProvider = ({ children }) => { + const [products, setProducts] = React.useReducer(rootReducer, { + isLoaded: !config.isBackend, + products: config.isBackend ? [] : mockProducts, + images: config.isBackend ? [] : mockProducts.map((product) => product.img), + }); + return ( + + {children} + + ); +}; + +const useProductsState = () => { + const context = React.useContext(ProductsContext); + return context; +}; + +export function getProductsRequest(dispatch) { + // We check if app runs with backend mode + if (config.isBackend) { + return axios.get('/products').then((res) => { + dispatch({ type: 'UPDATE_PRODUCTS', payload: res.data }); + }); + } + + dispatch({ type: 'UPDATE_PRODUCTS', payload: mockProducts }); +} + +export function deleteProductRequest({ id, navigate, pathname, dispatch }) { + // We check if app runs with backend mode + if (!config.isBackend) return; + + if (Array.isArray(id)) { + for (let key in id) { + axios.delete('/products/' + id[key]).then(() => {}); + } + } else { + axios.delete('/products/' + id).then(() => { + getProductsRequest(dispatch); + if (pathname !== '/app/ecommerce/management') { + navigate('/app/ecommerce/management'); + } + return; + }); + } + getProductsRequest(dispatch); +} + +export function getProductInfo(dispatch) { + // We check if app runs with backend mode + if (config.isBackend) { + axios.get('/products').then((res) => { + dispatch({ type: 'UPDATE_PRODUCTS', payload: res.data }); + }); + } +} + +export function updateProduct(product, dispatch) { + // We check if app runs with backend mode + if (!config.isBackend) return; + + axios.put('/products/' + product.id, product).then((res) => { + dispatch({ type: 'EDIT_PRODUCT', payload: res.data }); + }); +} + +export function createProduct(product, dispatch) { + // We check if app runs with backend mode + if (!config.isBackend) return; + + axios.post('/products', product).then((res) => { + dispatch({ type: 'CREATE_PRODUCT', payload: res.data }); + }); +} + +export function getProductsImages(dispatch) { + // We check if app runs with backend mode + if (!config.isBackend) { + dispatch({ + type: 'GET_IMAGES', + payload: mockProducts.map((product) => product.img), + }); + return; + } + + const replacer = (data) => { + return data.map((c) => { + return c.replace( + /http:\/\/.+\//, + 'https://flatlogic-node-backend.flatlogic.com/assets/products/', + ); + }); + }; + + axios.get('/products/images-list').then((res) => { + dispatch({ type: 'GET_IMAGES', payload: replacer(res.data) }); + }); +} + +export { ProductsProvider, ProductsContext, useProductsState }; diff --git a/src/context/ThemeContext.js b/src/context/ThemeContext.js new file mode 100644 index 0000000..9f7a8e1 --- /dev/null +++ b/src/context/ThemeContext.js @@ -0,0 +1,36 @@ +import React from 'react'; +import Themes from '../themes'; + +const ThemeStateContext = React.createContext(); +const ThemeDispatchContext = React.createContext(); + +function ThemeProvider({ children }) { + let [theme, setTheme] = React.useState( + Themes[localStorage.getItem('theme')] || Themes.default, + ); + return ( + + + {children} + + + ); +} + +function useThemeState() { + let context = React.useContext(ThemeStateContext); + if (context === undefined) { + throw new Error('useThemeState must be used within a ThemeProvider'); + } + return context; +} + +function useThemeDispatch() { + let context = React.useContext(ThemeDispatchContext); + if (context === undefined) { + throw new Error('useThemeDispatch must be used within a ThemeProvider'); + } + return context; +} + +export { ThemeProvider, useThemeState, useThemeDispatch, ThemeStateContext }; diff --git a/src/context/UserContext.js b/src/context/UserContext.js new file mode 100644 index 0000000..a93fcd7 --- /dev/null +++ b/src/context/UserContext.js @@ -0,0 +1,349 @@ +import React from 'react'; +import axios from 'axios'; +import { decodeJwtPayload } from '../utils/jwt'; + +import { mockUser } from './mock'; + +//config +import config from '../../src/config'; +import { showSnackbar } from '../components/Snackbar'; + +let UserStateContext = React.createContext(); +let UserDispatchContext = React.createContext(); + +function userReducer(state, action) { + switch (action.type) { + case 'LOGIN_SUCCESS': + return { + ...state, + ...action.payload, + }; + case 'REGISTER_REQUEST': + case 'RESET_REQUEST': + case 'PASSWORD_RESET_EMAIL_REQUEST': + return { + ...state, + isFetching: true, + errorMessage: '', + }; + case 'SIGN_OUT_SUCCESS': + return { ...state }; + case 'AUTH_INIT_ERROR': + return Object.assign({}, state, { + currentUser: null, + loadingInit: false, + }); + case 'REGISTER_SUCCESS': + case 'RESET_SUCCESS': + case 'PASSWORD_RESET_EMAIL_SUCCESS': + return Object.assign({}, state, { + isFetching: false, + errorMessage: '', + }); + case 'AUTH_FAILURE': + return Object.assign({}, state, { + isFetching: false, + errorMessage: action.payload, + }); + default: { + throw new Error(`Unhandled action type: ${action.type}`); + } + } +} + +function UserProvider({ children }) { + let [state, dispatch] = React.useReducer(userReducer, { + isAuthenticated: () => { + const token = localStorage.getItem('token'); + if (config.isBackend && token) { + const date = new Date().getTime() / 1000; + const data = decodeJwtPayload(token); + if (!data) return false; + return date < data.exp; + } else if (token) { + return true; + } + return false; + }, + isFetching: false, + errorMessage: '', + currentUser: null, + loadingInit: true, + }); + + return ( + + + {children} + + + ); +} + +function useUserState() { + let context = React.useContext(UserStateContext); + if (context === undefined) { + throw new Error('useUserState must be used within a UserProvider'); + } + return context; +} + +function useUserDispatch() { + let context = React.useContext(UserDispatchContext); + if (context === undefined) { + throw new Error('useUserDispatch must be used within a UserProvider'); + } + return context; +} + +export { UserProvider, useUserState, useUserDispatch, loginUser, signOut }; + +// ########################################################### + +function loginUser( + dispatch, + login, + password, + setIsLoading, + setError, + social = '', +) { + setError(false); + setIsLoading(true); + // We check if app runs with backend mode + if (!config.isBackend) { + setError(null); + doInit()(dispatch); + setIsLoading(false); + receiveToken('token', dispatch); + } else { + if (social) { + window.location.href = + config.baseURLApi + + '/auth/signin/' + + social + + '?app=' + + config.redirectUrl; + } else if (login.length > 0 && password.length > 0) { + axios + .post('/auth/signin/local', { email: login, password }) + .then((res) => { + const token = res.data; + setError(null); + setIsLoading(false); + receiveToken(token, dispatch); + doInit()(dispatch); + }) + .catch(() => { + setError(true); + setIsLoading(false); + }); + } else { + dispatch({ type: 'LOGIN_FAILURE' }); + } + } +} + +export function sendPasswordResetEmail(email) { + return (dispatch) => { + if (!config.isBackend) { + return; + } else { + dispatch({ + type: 'PASSWORD_RESET_EMAIL_REQUEST', + }); + axios + .post('/auth/send-password-reset-email', { email }) + .then(() => { + dispatch({ + type: 'PASSWORD_RESET_EMAIL_SUCCESS', + }); + showSnackbar({ + type: 'success', + message: 'Email with resetting instructions has been sent', + }); + }) + .catch((err) => { + dispatch(authError(err.response.data)); + }); + } + }; +} + +function signOut(dispatch, navigate) { + localStorage.removeItem('token'); + localStorage.removeItem('user'); + localStorage.removeItem('user_id'); + document.cookie = 'token=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; + axios.defaults.headers.common['Authorization'] = ''; + dispatch({ type: 'SIGN_OUT_SUCCESS' }); + navigate('/login'); +} + +export function receiveToken(token, dispatch) { + let user; + + // We check if app runs with backend mode + if (config.isBackend) { + user = decodeJwtPayload(token)?.user || {}; + } else { + user = { + email: config.auth.email, + }; + } + + if (user && typeof user === 'object') { + delete user.id; + } + localStorage.setItem('token', token); + localStorage.setItem('user', JSON.stringify(user)); + localStorage.setItem('theme', 'default'); + axios.defaults.headers.common['Authorization'] = 'Bearer ' + token; + dispatch({ type: 'LOGIN_SUCCESS' }); +} + +async function findMe() { + if (config.isBackend) { + const response = await axios.get('/auth/me'); + return response.data; + } else { + return mockUser; + } +} + +export function authError(payload) { + return { + type: 'AUTH_FAILURE', + payload, + }; +} + +export function doInit() { + return async (dispatch) => { + let currentUser = null; + if (!config.isBackend) { + currentUser = mockUser; + + dispatch({ + type: 'LOGIN_SUCCESS', + payload: { + currentUser, + }, + }); + } else { + try { + let token = localStorage.getItem('token'); + if (token) { + currentUser = await findMe(); + } + if (currentUser?.id) { + sessionStorage.setItem('user_id', currentUser.id); + } else { + sessionStorage.removeItem('user_id'); + } + dispatch({ + type: 'LOGIN_SUCCESS', + payload: { + currentUser, + }, + }); + } catch (error) { + console.log(error); + + dispatch({ + type: 'AUTH_INIT_ERROR', + payload: error, + }); + } + } + }; +} + +export function registerUser( + dispatch, + login, + password, + navigate, +) { + return () => { + if (!config.isBackend) { + navigate('/login'); + } else { + dispatch({ + type: 'REGISTER_REQUEST', + }); + if (login.length > 0 && password.length > 0) { + axios + .post('/auth/signup', { email: login, password }) + .then(() => { + dispatch({ + type: 'REGISTER_SUCCESS', + }); + showSnackbar({ + type: 'success', + message: + "You've been registered successfully. Please check your email for verification link", + }); + navigate('/login'); + }) + .catch((err) => { + dispatch(authError(err.response.data)); + }); + } else { + dispatch(authError('Something was wrong. Try again')); + } + } + }; +} + +export function verifyEmail(token, navigate) { + return () => { + if (!config.isBackend) { + navigate('/login'); + } else { + axios + .put('/auth/verify-email', { token }) + .then((verified) => { + if (verified) { + showSnackbar({ + type: 'success', + message: 'Your email was verified', + }); + } + }) + .catch((err) => { + showSnackbar({ type: 'error', message: err.response }); + }) + .finally(() => { + navigate('/login'); + }); + } + }; +} + +export function resetPassword(token, password, navigate) { + return (dispatch) => { + if (!config.isBackend) { + navigate('/login'); + } else { + dispatch({ + type: 'RESET_REQUEST', + }); + axios + .put('/auth/password-reset', { token, password }) + .then(() => { + dispatch({ + type: 'RESET_SUCCESS', + }); + showSnackbar({ + type: 'success', + message: 'Password has been updated', + }); + navigate('/login'); + }) + .catch((err) => { + dispatch(authError(err.response.data)); + }); + } + }; +} diff --git a/src/context/mock.js b/src/context/mock.js new file mode 100644 index 0000000..d8a68d5 --- /dev/null +++ b/src/context/mock.js @@ -0,0 +1,25 @@ +export const mockUser = { + avatars: [], + id: '98cea92c-84e5-4c0d-ac21-9998f4b23883', + firstName: 'Admin', + authenticationUid: null, + avatar: null, + createdAt: '2020-05-12T11:04:00.864Z', + createdById: null, + deletedAt: null, + disabled: false, + email: 'admin@flatlogic.com', + emailVerificationToken: null, + emailVerificationTokenExpiresAt: null, + emailVerified: true, + importHash: null, + lastName: null, + password: '$2b$12$EFuj2XoxivlGr.oiIvnvDulsE5iIBTngrLlrXMM/PkO//iInslWNW', + passwordResetToken: null, + passwordResetTokenExpiresAt: null, + phoneNumber: null, + provider: 'local', + role: 'admin', + updatedAt: '2020-05-12T11:04:00.864Z', + updatedById: null, +}; diff --git a/src/images/1.jpg b/src/images/1.jpg new file mode 100644 index 0000000..4d86516 Binary files /dev/null and b/src/images/1.jpg differ diff --git a/src/images/2.jpg b/src/images/2.jpg new file mode 100644 index 0000000..6ccc83e Binary files /dev/null and b/src/images/2.jpg differ diff --git a/src/images/3.jpg b/src/images/3.jpg new file mode 100644 index 0000000..a9b8b6a Binary files /dev/null and b/src/images/3.jpg differ diff --git a/src/images/a1.jpg b/src/images/a1.jpg new file mode 100644 index 0000000..d24e9d6 Binary files /dev/null and b/src/images/a1.jpg differ diff --git a/src/images/a2.jpg b/src/images/a2.jpg new file mode 100644 index 0000000..17098ce Binary files /dev/null and b/src/images/a2.jpg differ diff --git a/src/images/a4.jpg b/src/images/a4.jpg new file mode 100644 index 0000000..f4591d5 Binary files /dev/null and b/src/images/a4.jpg differ diff --git a/src/images/a6.jpg b/src/images/a6.jpg new file mode 100644 index 0000000..98f0310 Binary files /dev/null and b/src/images/a6.jpg differ diff --git a/src/images/aexpress.svg b/src/images/aexpress.svg new file mode 100644 index 0000000..bb6431f --- /dev/null +++ b/src/images/aexpress.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/cards/isometric.jpg b/src/images/cards/isometric.jpg new file mode 100644 index 0000000..ca6d4e0 Binary files /dev/null and b/src/images/cards/isometric.jpg differ diff --git a/src/images/cards/lifestyle.jpg b/src/images/cards/lifestyle.jpg new file mode 100644 index 0000000..a966033 Binary files /dev/null and b/src/images/cards/lifestyle.jpg differ diff --git a/src/images/cards/mountains.jpeg b/src/images/cards/mountains.jpeg new file mode 100644 index 0000000..781fc42 Binary files /dev/null and b/src/images/cards/mountains.jpeg differ diff --git a/src/images/cards/rns.png b/src/images/cards/rns.png new file mode 100644 index 0000000..60baebd Binary files /dev/null and b/src/images/cards/rns.png differ diff --git a/src/images/carousel/1.jpg b/src/images/carousel/1.jpg new file mode 100644 index 0000000..4d86516 Binary files /dev/null and b/src/images/carousel/1.jpg differ diff --git a/src/images/carousel/2.jpg b/src/images/carousel/2.jpg new file mode 100644 index 0000000..6ccc83e Binary files /dev/null and b/src/images/carousel/2.jpg differ diff --git a/src/images/carousel/3.jpg b/src/images/carousel/3.jpg new file mode 100644 index 0000000..a9b8b6a Binary files /dev/null and b/src/images/carousel/3.jpg differ diff --git a/src/images/flatlogic.jpeg b/src/images/flatlogic.jpeg new file mode 100644 index 0000000..2a7cfef Binary files /dev/null and b/src/images/flatlogic.jpeg differ diff --git a/src/images/gallery/gallery1.jpg b/src/images/gallery/gallery1.jpg new file mode 100644 index 0000000..9d2e666 Binary files /dev/null and b/src/images/gallery/gallery1.jpg differ diff --git a/src/images/gallery/gallery10.jpg b/src/images/gallery/gallery10.jpg new file mode 100644 index 0000000..750bfd3 Binary files /dev/null and b/src/images/gallery/gallery10.jpg differ diff --git a/src/images/gallery/gallery11.jpg b/src/images/gallery/gallery11.jpg new file mode 100644 index 0000000..04aa053 Binary files /dev/null and b/src/images/gallery/gallery11.jpg differ diff --git a/src/images/gallery/gallery12.jpg b/src/images/gallery/gallery12.jpg new file mode 100644 index 0000000..d1cedf9 Binary files /dev/null and b/src/images/gallery/gallery12.jpg differ diff --git a/src/images/gallery/gallery2.jpg b/src/images/gallery/gallery2.jpg new file mode 100644 index 0000000..cf4bcd3 Binary files /dev/null and b/src/images/gallery/gallery2.jpg differ diff --git a/src/images/gallery/gallery3.jpg b/src/images/gallery/gallery3.jpg new file mode 100644 index 0000000..8aa58d7 Binary files /dev/null and b/src/images/gallery/gallery3.jpg differ diff --git a/src/images/gallery/gallery4.jpg b/src/images/gallery/gallery4.jpg new file mode 100644 index 0000000..068f726 Binary files /dev/null and b/src/images/gallery/gallery4.jpg differ diff --git a/src/images/gallery/gallery5.jpg b/src/images/gallery/gallery5.jpg new file mode 100644 index 0000000..5a12637 Binary files /dev/null and b/src/images/gallery/gallery5.jpg differ diff --git a/src/images/gallery/gallery6.jpg b/src/images/gallery/gallery6.jpg new file mode 100644 index 0000000..d095815 Binary files /dev/null and b/src/images/gallery/gallery6.jpg differ diff --git a/src/images/gallery/gallery7.jpg b/src/images/gallery/gallery7.jpg new file mode 100644 index 0000000..2ccf4ad Binary files /dev/null and b/src/images/gallery/gallery7.jpg differ diff --git a/src/images/gallery/gallery8.jpg b/src/images/gallery/gallery8.jpg new file mode 100644 index 0000000..22118d6 Binary files /dev/null and b/src/images/gallery/gallery8.jpg differ diff --git a/src/images/gallery/gallery9.jpg b/src/images/gallery/gallery9.jpg new file mode 100644 index 0000000..569f9ef Binary files /dev/null and b/src/images/gallery/gallery9.jpg differ diff --git a/src/images/gallery1.jpg b/src/images/gallery1.jpg new file mode 100644 index 0000000..9d2e666 Binary files /dev/null and b/src/images/gallery1.jpg differ diff --git a/src/images/gallery10.jpg b/src/images/gallery10.jpg new file mode 100644 index 0000000..750bfd3 Binary files /dev/null and b/src/images/gallery10.jpg differ diff --git a/src/images/gallery11.jpg b/src/images/gallery11.jpg new file mode 100644 index 0000000..04aa053 Binary files /dev/null and b/src/images/gallery11.jpg differ diff --git a/src/images/gallery12.jpg b/src/images/gallery12.jpg new file mode 100644 index 0000000..d1cedf9 Binary files /dev/null and b/src/images/gallery12.jpg differ diff --git a/src/images/gallery2.jpg b/src/images/gallery2.jpg new file mode 100644 index 0000000..cf4bcd3 Binary files /dev/null and b/src/images/gallery2.jpg differ diff --git a/src/images/gallery3.jpg b/src/images/gallery3.jpg new file mode 100644 index 0000000..8aa58d7 Binary files /dev/null and b/src/images/gallery3.jpg differ diff --git a/src/images/gallery4.jpg b/src/images/gallery4.jpg new file mode 100644 index 0000000..068f726 Binary files /dev/null and b/src/images/gallery4.jpg differ diff --git a/src/images/gallery5.jpg b/src/images/gallery5.jpg new file mode 100644 index 0000000..5a12637 Binary files /dev/null and b/src/images/gallery5.jpg differ diff --git a/src/images/gallery6.jpg b/src/images/gallery6.jpg new file mode 100644 index 0000000..d095815 Binary files /dev/null and b/src/images/gallery6.jpg differ diff --git a/src/images/gallery7.jpg b/src/images/gallery7.jpg new file mode 100644 index 0000000..2ccf4ad Binary files /dev/null and b/src/images/gallery7.jpg differ diff --git a/src/images/gallery8.jpg b/src/images/gallery8.jpg new file mode 100644 index 0000000..22118d6 Binary files /dev/null and b/src/images/gallery8.jpg differ diff --git a/src/images/gallery9.jpg b/src/images/gallery9.jpg new file mode 100644 index 0000000..569f9ef Binary files /dev/null and b/src/images/gallery9.jpg differ diff --git a/src/images/google.svg b/src/images/google.svg new file mode 100644 index 0000000..e2fce99 --- /dev/null +++ b/src/images/google.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/grid/a1.jpg b/src/images/grid/a1.jpg new file mode 100644 index 0000000..d24e9d6 Binary files /dev/null and b/src/images/grid/a1.jpg differ diff --git a/src/images/grid/a2.jpg b/src/images/grid/a2.jpg new file mode 100644 index 0000000..17098ce Binary files /dev/null and b/src/images/grid/a2.jpg differ diff --git a/src/images/grid/a3.jpg b/src/images/grid/a3.jpg new file mode 100644 index 0000000..451a0b4 Binary files /dev/null and b/src/images/grid/a3.jpg differ diff --git a/src/images/grid/a4.jpg b/src/images/grid/a4.jpg new file mode 100644 index 0000000..f4591d5 Binary files /dev/null and b/src/images/grid/a4.jpg differ diff --git a/src/images/grid/a5.jpg b/src/images/grid/a5.jpg new file mode 100644 index 0000000..45061e9 Binary files /dev/null and b/src/images/grid/a5.jpg differ diff --git a/src/images/grid/a6.jpg b/src/images/grid/a6.jpg new file mode 100644 index 0000000..98f0310 Binary files /dev/null and b/src/images/grid/a6.jpg differ diff --git a/src/images/img1.jpg b/src/images/img1.jpg new file mode 100644 index 0000000..31fac52 Binary files /dev/null and b/src/images/img1.jpg differ diff --git a/src/images/img2.jpg b/src/images/img2.jpg new file mode 100644 index 0000000..bc56e75 Binary files /dev/null and b/src/images/img2.jpg differ diff --git a/src/images/img3.jpg b/src/images/img3.jpg new file mode 100644 index 0000000..5eb68be Binary files /dev/null and b/src/images/img3.jpg differ diff --git a/src/images/img4.jpg b/src/images/img4.jpg new file mode 100644 index 0000000..1d5a960 Binary files /dev/null and b/src/images/img4.jpg differ diff --git a/src/images/img5.jpeg b/src/images/img5.jpeg new file mode 100644 index 0000000..f5e0e37 Binary files /dev/null and b/src/images/img5.jpeg differ diff --git a/src/images/img6.jpg b/src/images/img6.jpg new file mode 100644 index 0000000..8065737 Binary files /dev/null and b/src/images/img6.jpg differ diff --git a/src/images/invoice/flatlogic.jpeg b/src/images/invoice/flatlogic.jpeg new file mode 100644 index 0000000..2a7cfef Binary files /dev/null and b/src/images/invoice/flatlogic.jpeg differ diff --git a/src/images/isometric.jpg b/src/images/isometric.jpg new file mode 100644 index 0000000..ca6d4e0 Binary files /dev/null and b/src/images/isometric.jpg differ diff --git a/src/images/layers-2x.png b/src/images/layers-2x.png new file mode 100644 index 0000000..200c333 Binary files /dev/null and b/src/images/layers-2x.png differ diff --git a/src/images/layers.png b/src/images/layers.png new file mode 100644 index 0000000..1a72e57 Binary files /dev/null and b/src/images/layers.png differ diff --git a/src/images/lifestyle.jpg b/src/images/lifestyle.jpg new file mode 100644 index 0000000..a966033 Binary files /dev/null and b/src/images/lifestyle.jpg differ diff --git a/src/images/logo.svg b/src/images/logo.svg new file mode 100644 index 0000000..762695c --- /dev/null +++ b/src/images/logo.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + diff --git a/src/images/main-profile.png b/src/images/main-profile.png new file mode 100644 index 0000000..7a6bb57 Binary files /dev/null and b/src/images/main-profile.png differ diff --git a/src/images/map.json b/src/images/map.json new file mode 100644 index 0000000..ca92d9d --- /dev/null +++ b/src/images/map.json @@ -0,0 +1 @@ +{"arcs":[[[7080,7327],[-5,4],[-10,-10],[5,-6]],[[7070,7315],[-16,-12],[-9,5],[-28,-4],[-12,-6],[-1,-5],[-17,-18],[-11,-16],[6,-10],[6,-18],[-2,-15],[3,-8],[-18,-35],[4,-12],[-2,-18],[-7,-5],[-13,0],[-13,4],[3,-16],[6,-6],[-1,-9],[4,-9],[-12,-14],[-8,0],[-6,-18],[2,-7],[-6,-11],[2,-30],[-8,-17],[-6,-1],[-2,8],[-15,4],[-3,-8],[-14,-12],[6,-9],[-11,-7],[-13,6],[-7,-15],[-8,-7],[-3,-19],[2,-9],[-4,-35],[-32,-17],[-16,2],[-11,-11],[-14,6],[-30,-5],[-46,26]],[[6689,6902],[27,56],[1,10],[-4,21],[-24,7],[-1,9],[1,35],[-7,43],[0,9],[7,14],[1,9],[-10,5],[0,31],[11,8],[-5,13],[7,6],[5,26],[-1,11],[4,19]],[[6701,7234],[8,-10],[13,-1],[6,-7],[1,-9],[5,8],[5,-4],[13,13],[0,24],[9,0],[4,6],[20,11],[9,15],[0,16],[5,14],[-1,9],[9,8],[12,0],[4,16],[4,3],[15,-14],[5,2]],[[6847,7334],[14,2],[7,-12],[6,6],[8,-6]],[[6882,7324],[7,-15],[7,10],[15,9],[2,5],[10,-14],[5,7],[-2,13],[4,8],[21,2],[-3,18],[5,4],[12,26],[9,-2],[7,-9],[-1,-21],[6,3],[2,-8],[-3,-14],[-1,-35],[3,-12],[7,-4],[15,19],[9,1],[3,11],[14,14],[13,-2],[-1,-12],[14,8],[12,2],[7,-9]],[[5665,4557],[3,-32],[-3,-9],[0,-36],[2,-12],[-5,-22],[4,-12],[-56,0],[0,-182],[3,-21],[6,-7],[15,-33],[6,-7],[3,-10],[6,-7]],[[5649,4167],[-53,-21],[-11,4],[-8,-4],[-13,9],[-8,-3],[-17,2],[-5,4],[-10,0],[-7,9],[-5,14],[-52,0],[-66,0],[-7,-1],[-12,17],[-4,9],[-6,1],[-18,-16],[-15,4],[-6,-6]],[[5326,4189],[0,28],[2,-1],[-2,58],[7,9],[1,23],[6,24],[2,20],[0,23],[5,12],[0,26],[4,4],[8,20],[0,10],[6,12],[5,0],[8,20],[5,28],[-1,20],[2,29],[-2,15],[-7,15],[-8,46],[-7,29],[6,16],[6,7],[-1,21],[-3,9],[-10,48],[-2,4],[0,21],[-8,16],[-8,30],[16,4],[10,11]],[[5366,4846],[4,-2],[18,2],[12,-3],[21,2],[32,1],[7,-4],[4,-15],[0,-22],[3,-16],[3,-3],[0,-19],[10,-23],[0,-8],[9,-20],[7,4],[6,-4],[2,6],[33,0],[1,20],[4,12],[-2,8],[2,18],[21,0],[9,5],[-3,-22],[36,0],[1,-22],[-2,-20],[5,-23],[-4,-53],[1,-14],[6,-17],[3,-2],[4,-23],[0,-22],[-4,-9],[3,-18],[6,7],[13,-4],[14,9],[12,-3],[2,8]],[[5363,4916],[-7,-5],[-8,-18],[-1,-40],[-8,-2]],[[5339,4851],[-2,5],[2,14],[-6,24]],[[5333,4894],[10,23],[7,3],[4,10],[9,-14]],[[5582,7537],[-1,0]],[[5581,7537],[1,0]],[[5537,7617],[1,0]],[[5538,7617],[-1,0]],[[5557,7633],[4,-13],[7,-4],[3,-22]],[[5571,7594],[-4,-21],[6,-24]],[[5573,7549],[2,-10]],[[5575,7539],[6,-2]],[[5581,7537],[1,-1]],[[5582,7536],[0,0]],[[5582,7536],[0,-5]],[[5582,7531],[1,-5]],[[5583,7526],[0,0]],[[5583,7526],[-2,-13],[-5,-2],[-2,-17],[-11,-8],[3,-12],[-6,-8],[-5,3]],[[5555,7469],[-3,19],[-11,9],[-1,22],[-4,4],[4,16],[-1,29],[5,23],[-7,2]],[[5537,7593],[1,14]],[[5538,7607],[0,13]],[[5538,7620],[9,19],[3,-11],[7,5]],[[5553,8659],[10,-5],[-7,-11],[-10,6],[7,10]],[[5047,7630],[-7,-5],[-1,11]],[[5039,7636],[8,1],[0,-7]],[[6563,6637],[0,0]],[[6563,6659],[2,-2],[1,-36]],[[6566,6621],[-8,-14],[-3,13],[-6,-4],[-1,-38],[7,-9],[-11,-3],[-4,-6],[2,-9],[-10,-44],[0,-17]],[[6532,6490],[-2,-5],[-70,18],[-3,5],[-25,63],[0,9]],[[6432,6580],[6,-1],[0,-13],[12,-3],[10,11],[24,-2],[11,-4],[15,12],[6,14],[1,15],[11,12],[13,31],[11,13],[5,19]],[[6557,6684],[3,-2],[-1,-22],[4,-1]],[[6562,6642],[0,0]],[[3093,2021],[0,6]],[[3093,2027],[0,-6]],[[3093,2028],[0,123]],[[3093,2151],[10,-17],[-8,-15],[11,-6],[5,-17],[12,-13],[7,-13],[17,-13],[11,-14],[12,-7],[20,0],[-5,-16],[-18,1],[-11,-8],[-12,6],[-51,9]],[[3259,3902],[11,-14],[7,-29],[9,-17],[15,-17],[3,-11],[17,-13],[11,-1],[15,-18],[4,-9],[15,-17],[9,-5],[5,-8],[13,-5],[8,-20],[-6,-14],[-3,-19],[-8,-10],[-1,-25],[-3,-14],[-5,-4],[-5,-15],[4,-5],[13,1],[19,-8],[5,-5],[7,4],[5,-5],[6,3],[4,-8],[3,12],[5,5],[10,-9],[5,8],[-1,8],[6,12],[6,0],[11,18],[5,40],[0,22]],[[3483,3710],[5,-4],[6,7],[9,-9],[1,-17],[5,-14],[-2,-9],[0,-25],[-2,-17],[-13,-19],[-15,-5],[-6,-19],[-8,-4],[-6,-13],[-7,-5],[3,-10],[-6,-4],[-20,-39],[-2,-11],[-12,-25],[-5,-2],[-1,-10],[-8,-11]],[[3399,3445],[0,-7],[-7,-12],[2,-23],[-3,-20],[-5,-13],[3,-4],[-2,-14],[-4,-5],[3,-25],[-3,-8]],[[3383,3314],[2,-25],[-2,-12],[-6,0],[-4,-34],[5,-29],[-4,-14],[5,-12],[23,-21],[11,-25],[-7,-19],[0,-13],[7,-17],[12,-6],[1,-29],[-11,-30],[-13,-26],[-2,-16],[-27,-24],[-37,-16],[-27,-8],[-27,0],[-15,11],[3,-32],[5,-9],[-2,-21],[-4,3],[-1,-21],[-4,-5],[6,-17],[-2,-18],[-20,-16],[-21,0],[-26,20],[-8,2],[-4,-10],[5,-32],[-2,-24],[6,-16],[11,-4],[-4,-10],[13,0],[2,10],[-6,0],[14,11],[5,-13],[1,-17],[-3,-12],[-12,-5],[-3,16],[-13,5],[-9,-15],[19,-13],[-20,-17],[-8,-19],[3,-43],[-4,-11],[-9,-7],[0,-20],[-14,3],[-8,-5],[-1,-8],[-14,-5],[-9,-18],[0,-9],[-6,-9],[-2,-14],[7,-25],[7,-6],[8,-16],[6,-4],[17,0],[6,-6],[2,-20],[-5,-33],[-6,-2],[-12,-18],[-16,-14],[-3,-10],[-9,-10],[-6,-22],[2,-16],[-5,-18],[-5,-6],[-23,-14],[-5,-12],[-2,-21],[2,-24],[9,-34],[11,-24],[-3,-1]],[[3098,2168],[-15,10],[-26,10],[-55,1],[-4,12],[-11,13],[6,19],[-5,7],[5,13],[-2,14],[-13,1],[-11,-8],[-3,26],[-7,9],[2,22],[-3,11],[3,15],[9,1],[3,17],[12,10],[1,22],[7,7],[-1,15],[-5,7],[6,30],[8,13],[2,22],[8,9],[-3,32],[4,11],[-4,4],[0,15],[8,5],[5,13],[-8,17],[-14,5],[7,5],[17,3],[2,17],[-18,3],[-1,18],[5,7],[-4,14],[3,7],[-6,16],[5,9],[-11,7],[0,45],[3,8],[8,1],[-5,26],[2,43],[-3,11],[4,27],[5,21],[-2,18],[8,13],[0,25],[15,13],[-3,15],[-1,21],[-5,20],[3,35],[-2,24],[3,12],[10,4],[-1,8],[10,14],[-2,40],[-4,4],[6,6],[0,12],[9,39],[6,2],[-2,34],[3,18],[-9,9],[3,18],[-4,6],[0,16],[-5,12],[-2,14],[3,9],[-5,2],[-3,15],[1,24],[6,8],[0,13],[5,19],[7,8],[2,10],[-4,4],[2,16],[-4,31],[7,10],[1,26],[4,17],[13,33],[9,38],[6,-3],[8,7],[0,10],[-8,21],[0,10],[5,9],[-2,26],[-3,17],[2,15],[5,4],[-6,14],[2,14],[7,13],[25,20],[9,54],[-5,17]],[[3133,3869],[5,9],[0,8],[7,6],[2,12],[9,5],[4,19],[3,-2],[10,-17],[21,0],[12,-5],[6,-38],[3,20],[8,29],[32,1],[4,-14]],[[6265,7522],[0,0]],[[6249,7560],[2,-10],[15,-14],[-6,-16],[6,-11],[11,-10],[-3,-13],[-7,2],[15,-25],[9,-1],[-3,-13],[5,-7],[-5,-5],[3,-15]],[[6291,7422],[-10,-2]],[[6281,7420],[-4,23],[-7,7],[1,10],[-13,-1],[-8,14],[-7,-4]],[[6243,7469],[-8,16],[-12,1],[-11,7],[-3,20],[5,12],[-3,17],[-5,8]],[[6206,7550],[9,0],[11,7],[10,-3],[13,6]],[[6249,7546],[0,0]],[[6255,7542],[0,0]],[[488,408],[24,-7],[-48,-4],[-13,16],[37,-5]],[[542,484],[-90,7],[20,11],[65,-10],[5,-8]],[[3331,592],[8,-3],[-1,-57],[-23,-11],[-52,4],[-17,17],[-32,-10],[-67,20],[3,10],[19,-10],[115,3],[8,27],[39,10]],[[4135,588],[34,-2],[-10,-10],[-44,8],[-5,11],[25,-7]],[[3120,602],[25,-4],[35,-20],[-20,-7],[-40,31]],[[3137,618],[-11,-15],[-30,6],[41,9]],[[4054,618],[1,-6],[-76,3],[30,13],[45,-10]],[[547,618],[21,-9],[14,-23],[-47,-2],[-90,25],[-10,7],[5,17],[24,15],[25,0],[58,-30]],[[3143,666],[-58,-38],[-39,-36],[-31,3],[-10,10],[11,23],[23,11],[92,33],[12,-6]],[[9654,680],[-35,-8],[-8,14],[21,-7],[22,11],[0,-10]],[[3740,650],[1,-7],[44,2],[21,-39],[-7,-30],[-18,-1],[9,-11],[-158,-26],[-16,-9],[-121,-4],[1,17],[22,27],[26,-4],[60,37],[-13,14],[14,40],[31,33],[52,14],[37,-3],[38,-11],[19,-13],[-4,-20],[-38,-6]],[[9641,732],[63,-13],[-27,-10],[-42,-2],[-19,12],[25,13]],[[839,754],[14,-14],[-32,3],[-11,7],[29,4]],[[938,754],[-21,-7],[-2,12],[23,-5]],[[951,834],[16,-10],[-24,3],[8,7]],[[9561,885],[-8,-14],[-7,9],[15,5]],[[1342,903],[19,-12],[-6,-6],[-27,12],[14,6]],[[1458,897],[-1,-13],[-17,20],[18,-7]],[[1760,918],[-17,-8],[-3,7],[26,11],[-6,-10]],[[1680,914],[-12,3],[10,17],[17,-2],[-1,-10],[-14,-8]],[[1635,935],[17,0],[7,-14],[-23,-10],[0,-10],[-32,-4],[-22,7],[3,11],[15,12],[-27,3],[7,10],[55,-5]],[[4425,917],[9,-22],[-14,0],[-4,16],[-29,3],[20,7],[12,19],[11,1],[-5,-24]],[[9717,944],[-11,3],[8,14],[3,-17]],[[1498,961],[13,-7],[9,-16],[-11,-7],[29,6],[17,-9],[7,-11],[-6,-12],[-22,3],[-48,22],[0,8],[-19,7],[-3,16],[34,0]],[[2955,972],[-2,-10],[-13,0],[15,10]],[[2514,979],[-20,-5],[-4,5],[22,8],[2,-8]],[[2918,987],[18,-3],[-8,-40],[-36,14],[-7,10],[11,7],[18,0],[-19,10],[23,2]],[[2474,988],[-3,-19],[-14,-1],[6,17],[-10,16],[23,1],[-2,-14]],[[2365,999],[-10,3],[18,7],[-8,-10]],[[2270,1031],[14,-3],[-2,14],[10,0],[2,-17],[10,19],[19,1],[5,-10],[-23,-11],[8,-3],[27,11],[-6,-10],[13,-10],[-15,-1],[1,-9],[-72,2],[2,5],[-24,-1],[6,7],[-29,6],[-58,7],[6,10],[57,7],[8,-11],[7,7],[23,-12],[-13,13],[17,9],[15,-6],[-8,-14]],[[4919,1112],[8,-10],[14,1],[-17,-19],[-8,18],[-16,10],[19,0]],[[2947,1119],[8,-13],[-22,-10],[-48,-11],[-9,4],[2,12],[33,5],[9,12],[8,-13],[3,14],[16,0]],[[3313,1111],[-7,10],[11,1],[-4,-11]],[[4835,1126],[-5,-10],[-10,9],[15,1]],[[5082,1116],[-11,6],[19,4],[-8,-10]],[[4913,1121],[-10,0],[6,12],[12,3],[2,-14],[-10,-1]],[[7004,1113],[-10,3],[-5,16],[16,-11],[-1,-8]],[[5124,1122],[-12,11],[12,5],[0,-16]],[[5745,1129],[-22,0],[-2,11],[19,6],[5,-17]],[[5040,1146],[-7,-18],[-5,21],[12,-3]],[[2924,1165],[8,-12],[-12,-13],[-23,5],[-1,13],[8,7],[20,0]],[[5449,1148],[-17,8],[11,12],[19,-1],[-11,-8],[-2,-11]],[[3001,1170],[-23,2],[-6,7],[17,4],[12,-13]],[[3283,1179],[-6,-12],[-16,30],[11,2],[11,-20]],[[3055,1197],[19,-24],[1,-17],[16,-26],[11,-25],[3,-60],[-6,-23],[-20,-7],[-2,-10],[-40,-7],[-49,0],[-21,13],[10,8],[16,-3],[45,-2],[14,8],[-7,6],[-28,-9],[-18,10],[35,8],[1,5],[-31,0],[-14,17],[-11,-17],[-31,2],[10,-8],[-14,-9],[-38,14],[-1,15],[15,8],[16,-8],[-4,12],[9,4],[16,-13],[-4,14],[29,-2],[9,7],[-23,7],[10,6],[30,-6],[19,11],[20,0],[13,-11],[-2,16],[-35,7],[5,17],[24,8],[15,-4],[-18,14],[-20,-4],[-27,14],[7,34],[-10,5],[0,20],[45,10],[9,-7],[2,-18]],[[7385,1327],[-15,4],[8,9],[7,-13]],[[3111,1321],[9,-5],[-16,-13],[-8,-22],[-11,0],[-7,9],[22,44],[15,12],[5,-5],[-10,-11],[1,-9]],[[7686,1378],[4,-8],[-14,-2],[10,10]],[[3174,1408],[-3,-16],[-10,-2],[6,17],[7,1]],[[7805,1401],[-19,0],[-1,7],[12,10],[15,-7],[-7,-10]],[[7870,1413],[-16,19],[9,-2],[7,-17]],[[3410,1465],[-6,6],[14,7],[-8,-13]],[[3242,1481],[-2,-9],[14,-8],[-14,-12],[-26,3],[20,26],[8,0]],[[3270,1492],[2,-17],[-12,-8],[10,25]],[[3394,1508],[-2,-9],[20,-7],[-8,-17],[-7,6],[-7,-7],[-14,20],[5,8],[13,6]],[[3446,1521],[-9,7],[15,-2],[-6,-5]],[[0,324],[46,3],[68,-14],[19,8],[194,-14],[21,-11],[128,-2],[122,-11],[81,-3],[-58,13],[54,1],[-124,12],[-104,7],[24,11],[-55,17],[37,2],[-52,17],[-71,-3],[-37,23],[-127,27],[73,-2],[18,-14],[73,-4],[20,4],[70,-3],[6,-14],[50,10],[19,-11],[127,8],[18,9],[-44,5],[81,5],[16,14],[70,14],[-10,10],[-54,26],[31,11],[-19,10],[-74,13],[17,11],[109,6],[135,7],[0,5],[-77,24],[-11,11],[13,10],[43,-4],[46,10],[-17,11],[-75,12],[-55,17],[-3,5],[-68,8],[-43,21],[14,11],[48,6],[-2,14],[-71,-7],[-47,23],[14,18],[-3,26],[9,1],[24,-17],[21,17],[21,-5],[18,4],[38,-10],[-9,-10],[36,-3],[2,10],[72,-30],[30,16],[30,6],[-36,7],[7,14],[32,-17],[21,7],[13,-13],[27,0],[-16,13],[21,1],[-31,15],[29,-5],[-22,20],[-27,16],[-38,-3],[-33,3],[2,9],[28,4],[9,7],[69,-21],[6,8],[-27,13],[9,11],[56,6],[1,10],[41,4],[2,6],[19,-3],[9,-14],[18,0],[-10,14],[29,6],[16,14],[61,4],[30,-4],[-16,9],[4,14],[30,0],[11,11],[22,-4],[18,-16],[30,9],[58,-4],[20,-5],[64,13],[93,0],[8,-7],[45,3],[41,0],[59,10],[-3,10],[24,6],[6,-12],[33,-3],[51,6],[-7,21],[11,10],[21,0],[-9,-7],[19,2],[-8,-12],[4,-14],[15,3],[-18,-16],[-6,-21],[9,6],[46,8],[15,0],[-10,11],[0,20],[15,6],[35,-17],[-5,-19],[-34,-18],[4,-7],[45,4],[84,-10],[53,13],[28,-3],[14,4],[49,-4],[-3,-8],[20,-8],[70,13],[-27,6],[2,10],[-34,3],[17,7],[3,14],[-46,3],[5,11],[-7,15],[-33,5],[-4,20],[42,-4],[3,-6],[47,2],[-5,21],[-41,3],[-46,0],[-11,7],[-4,20],[11,7],[26,-4],[-17,-12],[21,-4],[33,4],[84,-1],[9,-7],[44,-11],[17,7],[24,-7],[21,8],[46,0],[33,-7],[16,10],[25,1],[6,10],[-10,17],[33,-4],[1,-10],[-15,-14],[9,-9],[30,6],[8,-11],[38,11],[5,-13],[28,-10],[20,2],[43,-19],[29,9],[-2,28],[24,-11],[-8,25],[28,-2],[24,-17],[-2,-16],[55,8],[5,-7],[-15,-14],[48,6],[7,5],[34,-5],[26,15],[57,12],[21,-2],[42,10],[35,16],[22,43],[-1,7],[-20,21],[-4,13],[6,23],[-15,38],[-15,16],[4,21],[-13,16],[15,0],[-1,7],[25,-14],[5,14],[11,6],[0,11],[-18,7],[14,5],[-5,17],[6,14],[-9,16],[12,3],[6,21],[-10,5],[-19,-1],[15,30],[6,0],[-2,-17],[15,-6],[1,26],[-4,14],[8,4],[14,-7],[5,34],[14,-2],[-5,11],[19,-4],[3,23],[16,1],[-5,27],[11,6],[16,-7],[-4,11],[20,14],[11,-3],[9,12],[10,1],[-1,10],[14,4],[-1,13],[30,14],[13,-2],[3,10],[12,2],[1,8],[21,4],[7,8],[13,6],[11,-3],[7,-20],[-10,-3],[-2,12],[-15,-12],[-10,0],[-15,-17],[-9,-22],[-9,-6],[-7,7],[-6,-6],[-19,-5],[-17,-29],[-20,3],[6,-10],[-18,-10],[9,-14],[-14,-14],[13,-19],[16,3],[0,10],[21,-2],[-16,-14],[-16,0],[-2,-16],[-5,16],[-19,-3],[1,-28],[-16,27],[-15,3],[-10,-29],[11,-10],[-9,-4],[-14,11],[-12,-15],[6,-16],[-15,-6],[-8,5],[-3,-33],[10,-6],[-12,-11],[21,6],[6,-6],[-20,-7],[14,-6],[-10,-7],[36,-17],[-2,17],[23,7],[-14,-17],[15,-6],[-5,-8],[14,-25],[14,-7],[-2,-21],[15,-13],[-1,-11],[-10,4],[5,-18],[22,1],[-16,-24],[20,4],[9,-21],[-5,-12],[-12,-1],[-14,-13],[14,-1],[11,10],[9,-8],[-7,-12],[-38,-3],[36,-14],[13,10],[0,-26],[-19,-2],[6,-18],[17,8],[-7,-24],[25,4],[-11,-19],[-9,8],[-3,-13],[-15,12],[-21,5],[13,-17],[21,-10],[-7,-23],[-21,5],[21,-13],[-23,-13],[31,7],[-9,-17],[-36,6],[17,-17],[-10,-13],[-13,-3],[-2,17],[-17,2],[6,-15],[-14,3],[-10,-10],[18,2],[7,-9],[-35,-4],[-2,-7],[33,-3],[-85,-34],[-52,-9],[4,-3],[-60,-13],[4,-11],[-17,-7],[-31,-1],[-20,4],[-46,0],[-31,8],[-64,0],[34,-42],[23,-15],[10,6],[66,-8],[-25,-26],[-38,-9],[-61,13],[-95,13],[-30,-6],[118,-34],[-9,-17],[-71,-7],[-61,21],[-37,30],[12,-23],[-13,-4],[17,-20],[42,-17],[17,-23],[18,-7],[2,20],[108,-4],[17,-13],[-20,-24],[-22,-3],[-62,0],[55,-10],[39,6],[24,-26],[-8,-7],[24,-16],[19,7],[38,-10],[7,13],[39,9],[21,-6],[9,-14],[46,-9],[89,-24],[77,-3],[-92,-8],[62,-5],[-2,-4],[-62,-1],[-6,-25],[26,-5],[52,8],[75,3],[-64,-17],[33,-33],[-6,-17],[66,-4],[49,30],[72,31],[52,14],[16,-1],[53,11],[65,5],[59,-2],[6,-17],[-17,-11],[31,-7],[67,24],[-2,10],[36,18],[9,16],[79,27],[42,-13],[34,10],[18,17],[53,0],[40,12],[42,-3],[-21,10],[37,0],[5,7],[153,6],[48,10],[-61,7],[-165,11],[31,17],[-27,0],[9,15],[-73,-12],[-96,23],[-5,14],[12,23],[11,3],[8,18],[24,0],[-7,12],[28,18],[34,10],[17,0],[5,10],[28,7],[15,13],[36,16],[52,10],[29,14],[48,10],[53,7],[31,-4],[22,14],[17,-6],[43,6],[-18,11],[29,26],[-3,10],[14,17],[24,3],[23,-7],[39,33],[-10,4],[-27,-10],[-22,3],[17,4],[-20,7],[1,13],[28,23],[18,3],[12,-9],[16,11],[-15,16],[29,-7],[14,11],[42,13],[3,19],[10,20],[-18,0],[-18,7],[-1,18],[16,2],[1,-9],[21,-10],[7,17],[16,9],[-12,10],[13,4],[3,-10],[22,-7],[10,-28],[15,7],[15,-5],[-4,9],[6,23],[-11,13],[13,5],[25,-7],[16,14],[13,-8],[-20,-29],[71,-3],[7,-9],[4,12],[18,3],[5,-6],[28,-5],[7,11],[12,-7],[-4,-14],[12,-9],[21,25],[13,8],[41,14],[105,20],[19,0],[28,7],[-5,17],[12,2],[-1,-17],[11,-3],[25,9],[-8,8],[9,9],[22,-23],[31,-14],[21,-5],[14,25],[18,7],[-16,10],[16,1],[8,-13],[22,-4],[22,3],[27,-4],[3,9],[17,3],[-3,-18],[45,-4],[11,1],[-6,11],[17,9],[11,-10],[-10,-23],[10,-10],[23,-1],[26,4],[3,13],[16,24],[24,-18],[-21,-6],[14,-7],[26,-5],[13,26],[15,-4],[0,-15],[27,-15],[31,-3],[35,17],[23,3],[38,21],[40,5],[38,11],[7,7],[2,33],[-12,13],[-1,13],[20,12],[28,0],[4,-8],[-21,-13],[24,-1],[20,-13],[-2,-23],[45,4],[8,-15],[7,9],[26,-1],[-5,-7],[19,-19],[2,12],[13,7],[-1,10],[15,4],[-2,32],[4,14],[26,6],[21,15],[28,4],[8,17],[32,8],[24,0],[-6,5],[34,13],[14,-6],[-2,23],[18,5],[14,-8],[-13,-7],[10,-3],[6,-12],[9,8],[16,-6],[-5,-17],[13,20],[-3,14],[16,5],[2,11],[-19,-3],[-6,13],[27,6],[-2,-9],[15,2],[0,-13],[11,8],[11,-7],[10,7],[-14,3],[10,16],[-16,1],[-1,12],[9,14],[23,4],[11,12],[30,4],[25,7],[40,-6],[19,-10],[15,-20],[11,3],[13,-8],[1,-9],[-36,3],[15,-8],[-11,-23],[1,-12],[7,13],[33,10],[23,-11],[12,1],[5,-20],[12,-4],[4,11],[24,0],[18,-7],[45,-7],[24,9],[30,-9],[45,-7],[48,-4],[9,-3],[35,8],[-1,-15],[14,-30],[-13,-3],[-7,-17],[13,0],[-16,-9],[12,-8],[0,-9],[-27,-3],[17,-14],[-13,-6],[9,-5],[-17,-12],[-13,18],[-18,-29],[13,-14],[34,8],[1,-21],[-15,-30],[-17,-8],[-5,-19],[-10,-7],[-6,-33],[-12,-36],[-15,-8],[25,-10],[22,10],[-3,26],[14,11],[34,3],[8,20],[20,6],[-6,7],[17,12],[14,3],[-11,7],[16,40],[17,7],[14,12],[-6,15],[22,23],[15,5],[8,-12],[28,6],[5,-7],[13,8],[-3,16],[35,18],[22,5],[7,21],[16,4],[-7,13],[9,12],[19,10],[73,24],[30,4],[13,-3],[-6,13],[29,18],[36,-4],[9,7],[18,0],[34,17],[8,-5],[14,4],[23,-4],[23,1],[19,14],[25,5],[12,-6],[34,1],[4,-10],[31,17],[11,-4],[8,-10],[13,6],[16,0],[16,6],[13,-10],[14,13],[9,0],[8,-26],[8,11],[13,3],[9,9],[27,7],[14,17],[0,7],[27,0],[8,6],[27,-9],[24,-3],[65,-22],[29,-6],[-3,-17],[12,13],[16,-19],[18,0],[29,17],[7,0],[-5,20],[13,14],[62,17],[35,-27],[-3,-15],[21,2],[16,-8],[3,-10],[-17,-16],[-31,-8],[-11,-15],[25,3],[22,10],[32,6],[13,10],[-3,-10],[19,3],[5,-6],[32,-1],[41,14],[0,-3],[-45,-17],[5,-7],[73,19],[18,14],[58,14],[13,-9],[11,6],[8,14],[14,6],[12,-14],[14,6],[-8,-12],[3,-11],[11,0],[0,-16],[28,6],[11,-7],[10,7],[6,-10],[11,13],[2,21],[16,19],[18,8],[28,-7],[30,4],[8,6],[19,-2],[13,-11],[-5,-11],[19,10],[11,0],[9,12],[4,-14],[13,7],[8,-8],[30,1],[20,-11],[35,-3],[12,-6],[28,-3],[10,-5],[20,3],[14,-13],[27,10],[12,-6],[-4,-11],[21,8],[5,-6],[-22,-38],[0,-10],[11,0],[26,23],[9,-10],[14,7],[14,-31],[13,5],[-8,-14],[8,-7],[23,3],[4,-6],[39,4],[35,-1],[10,4],[-1,-21],[16,-13],[0,14],[24,0],[17,-11],[23,7],[-5,24],[5,3],[24,-14],[2,-10],[16,-13],[14,-3],[17,-14],[19,3],[6,-10],[6,8],[17,-1],[45,-17],[14,-20],[-16,0],[28,-13],[19,-34],[-3,-13],[18,0],[2,34],[16,3],[22,-23],[21,2],[-3,7],[38,-3],[13,-6],[12,5],[13,-6],[-9,-6],[27,2],[18,-20],[10,-3],[48,-30],[2,21],[19,-31],[-5,-6],[-13,7],[-13,-34],[12,6],[-5,-17],[-39,15],[-11,-1],[16,-13],[29,-8],[-8,-19],[-20,-10],[-14,16],[-2,-13],[-32,1],[-12,5],[1,-16],[9,6],[23,-6],[-20,-4],[-5,-9],[-34,0],[9,-14],[-26,-1],[1,15],[-11,9],[-4,-20],[17,-14],[-15,0],[13,-30],[-24,1],[-20,-6],[-3,16],[-30,-30],[9,-7],[-5,-13],[-22,2],[-34,-12],[45,-1],[-4,-7],[21,-16],[-2,-16],[-18,-5],[18,-3],[4,-13],[-13,-11],[14,-5],[-14,-17],[18,0],[20,-30],[-7,-11],[27,-7],[-11,-20],[14,-7],[20,8],[12,-14],[36,-4],[-15,-13],[-12,9],[-47,-2],[-37,-7],[-14,-13],[-34,22],[20,-29],[-38,2],[-9,-8],[9,-14],[-23,-14],[27,3],[-37,-16],[52,-4],[-72,-17],[-6,-13],[61,6],[7,-8],[-35,-4],[40,-4],[-17,-13],[9,-23],[-22,5],[25,-20],[40,-9],[38,-31],[-89,-12],[59,-2],[53,8],[73,-27],[12,-14],[24,3],[-3,-20],[86,-9],[66,-23],[124,-12],[-9955,-15]],[[3456,1546],[12,-3],[-1,-9],[-17,4],[-19,-9],[3,13],[22,4]],[[3431,1556],[12,-2],[-6,-9],[-6,11]],[[3331,1581],[7,-5],[-12,-7],[-4,7],[-20,-3],[-1,6],[30,2]],[[3392,1616],[7,-6],[-33,-7],[10,13],[16,0]],[[3470,1665],[-6,-10],[-5,8],[11,2]],[[6916,2373],[5,-3],[-5,-12],[16,-14],[19,13],[7,-1],[-1,-15],[-9,1],[-11,-5],[2,-7],[13,1],[-1,-9],[-22,3],[-7,8],[-5,-13],[-8,4],[5,20],[-5,14],[1,12],[6,3]],[[9093,2685],[-7,-6],[5,12],[2,-6]],[[9020,2837],[14,-3],[13,-8],[2,-6],[17,-8],[24,13],[5,-4],[5,11],[5,-4],[4,9],[10,-13],[-1,-28],[1,-39],[-7,1],[-1,-22],[-4,-21],[3,-1],[0,-21],[-10,9],[6,10],[-14,1],[-4,-23],[-2,6],[-8,-26],[-9,6],[-14,-1],[-3,20],[-2,-6],[-4,15],[-7,9],[-6,24],[0,13],[9,-9],[-13,31],[-11,37],[-2,13],[4,15]],[[9121,2859],[-9,-6],[0,6],[9,0]],[[9109,2896],[9,-16],[1,-14],[-5,-2],[-11,22],[6,10]],[[9001,2876],[-5,-4],[-1,25],[7,3],[-1,-24]],[[8822,3134],[-1,-10],[12,1],[0,-11],[-11,1],[-5,-10],[-20,1],[-4,17],[21,11],[8,0]],[[9263,3604],[-1,-18],[-2,14],[3,4]],[[9261,3608],[-2,17],[3,2],[-1,-19]],[[8136,3714],[7,-36],[-7,19],[0,17]],[[9257,3758],[2,-20],[-10,-37],[1,32],[5,7],[-2,14],[4,4]],[[9195,3832],[5,-3],[0,-17],[-7,17],[2,3]],[[9061,4133],[3,-7],[-3,-7],[-4,13],[4,1]],[[8880,4236],[-7,-7],[0,-6],[-8,0],[1,8],[10,8],[4,-3]],[[8805,4285],[2,-15],[-4,8],[2,7]],[[8797,4395],[0,-9],[6,2],[-5,-8],[-1,-14],[6,-6],[-8,0],[-6,5],[-1,14],[9,16]],[[8621,4522],[5,-21],[-7,4],[-8,-2],[5,9],[-2,9],[6,10],[1,-9]],[[8624,4533],[6,-6],[14,10],[6,-2],[1,-21],[-14,-18],[-13,16],[-3,29],[3,-8]],[[8682,4547],[1,-13],[-4,6],[3,7]],[[8959,4566],[-1,-8],[6,-7],[3,-19],[0,-30],[10,-9],[-4,-20],[6,-4],[4,-11],[-2,-17],[5,2],[-1,-13],[3,-19],[-2,-19],[5,-20],[3,-22],[5,-2],[15,18],[4,-22],[18,-23],[-3,-12],[2,-6],[2,-37],[3,-8],[-2,-16],[6,-22],[9,-9],[-1,-11],[5,-19],[1,-16],[-3,-34],[9,-15],[-2,-17],[5,-14],[13,-15],[4,7],[2,-12],[8,0],[4,-6],[1,-14],[19,-12],[1,-10],[7,5],[3,-13],[4,1],[1,-10],[-4,-1],[-1,-10],[15,-24],[-1,-8],[8,-30],[0,-14],[3,-20],[8,-7],[5,-13],[-3,22],[4,5],[3,-9],[10,-13],[2,13],[6,-21],[-2,-15],[3,-36],[4,0],[4,-13],[5,-4],[6,-13],[6,3],[4,-6],[6,-27],[8,-7],[4,-25],[10,-6],[0,-27],[6,-16],[-2,-19],[4,-40],[-4,-3],[10,-41],[1,-17],[3,-4],[1,-40],[-7,-21],[-2,-39],[-7,-32],[0,-30],[-3,-28],[-5,-21],[-6,-11],[0,-23],[-13,-15],[-11,-20],[-6,-26],[-5,-3],[0,-26],[-9,-18],[-3,-27],[-4,-14],[2,-9],[-8,-7],[-9,-34],[0,-24],[-7,-34],[4,-21],[-2,-14],[-13,-16],[-33,-2],[-16,-10],[-10,-13],[-13,-24],[-19,-4],[3,-12],[4,7],[-2,-20],[-6,16],[-8,-3],[-4,16],[-3,-3],[-8,9],[5,8],[-2,9],[-6,0],[-1,-10],[-8,-5],[-6,8],[8,1],[3,17],[-6,10],[-15,-14],[10,-2],[-2,-8],[-6,0],[-10,-11],[-14,-22],[-32,28],[-5,-2],[-8,7],[-9,-1],[1,-6],[-8,1],[-4,13],[-14,5],[-10,11],[-3,13],[-13,23],[-3,18],[5,6],[0,13],[-9,34],[-14,26],[6,2],[3,10],[-4,3],[-21,-20],[-8,0],[-1,7],[9,12],[3,33],[-8,16],[-3,16],[-7,-13],[-1,-20],[-5,-23],[-7,4],[-15,-11],[3,23],[11,-3],[3,21],[-1,25],[4,17],[9,19],[-3,19],[6,4],[-8,34],[0,-26],[-3,2],[-6,-11],[-5,-27],[-25,-26],[-8,-24],[-4,-3],[-4,-16],[6,2],[0,-12],[-5,7],[-6,-5],[-6,18],[-1,21],[-3,17],[-11,20],[-4,27],[-12,0],[-2,13],[-4,1],[7,15],[-5,12],[-8,-5],[3,9],[-8,16],[-14,-5],[-10,14],[-7,1],[-9,-6],[-12,18],[-18,14],[-9,-7],[-18,2],[-33,-7],[-27,-23],[-20,-11],[-17,-2],[-14,5],[-18,-19],[-15,-10],[-2,-6],[-17,-8],[-4,-5],[-5,-28],[-7,-16],[-6,-7],[-4,3],[-6,-7],[-3,9],[-19,-3],[-8,-6],[0,8],[-14,3],[-20,-2],[-13,-6],[-16,-1],[-9,-16],[-2,-12],[-16,1],[-3,-11],[-7,-4],[-2,-11],[-20,-8],[-2,-5],[-12,7],[-18,-1],[-15,14],[-10,19],[-10,9],[-4,-3],[-4,15],[0,32],[6,-7],[7,3],[6,18],[-1,36],[3,8],[0,43],[-18,66],[-4,34],[1,32],[-5,22],[-7,17],[0,16],[-11,24],[-2,38],[-5,16],[-11,32],[-7,13],[5,14],[6,-26],[7,6],[0,9],[-9,14],[-4,27],[2,4],[7,-20],[-1,-17],[5,14],[2,-22],[7,-2],[0,30],[-5,13],[-6,26],[-4,4],[-3,21],[-5,16],[1,26],[4,22],[5,6],[0,24],[2,10],[-5,22],[3,7],[7,33],[4,4],[-2,-20],[1,-21],[7,4],[8,34],[23,20],[13,26],[21,22],[5,-3],[8,6],[7,-7],[12,7],[8,14],[17,3],[10,20],[12,-6],[7,6],[12,3],[16,11],[11,13],[9,25],[3,19],[4,4],[16,39],[-4,1],[-2,36],[3,14],[8,17],[6,3],[0,10],[7,12],[-1,-15],[5,-3],[0,-14],[12,-37],[-1,10],[3,13],[-2,11],[7,-10],[-3,24],[-6,5],[6,13],[-5,8],[5,2],[7,-7],[-1,9],[7,-9],[16,-1],[-10,3],[-1,9],[6,4],[1,18],[-4,-11],[-3,18],[1,9],[6,1],[3,9],[5,0],[4,-9],[1,10],[-6,3],[4,17],[11,-10],[0,9],[-8,16],[10,14],[3,-4],[7,6],[1,-11],[3,5],[4,26],[-5,5],[4,7],[3,-19],[9,16],[1,-16],[4,14],[4,0],[-3,11],[6,4],[4,-14],[9,1],[11,-28],[10,-16],[-3,-17],[0,-13],[4,-1],[-1,11],[5,14],[4,3],[12,-5],[9,-11],[-1,11],[7,-5],[3,-14],[4,1],[-3,18],[5,-1],[-6,15],[-7,11],[4,20],[7,4],[1,18],[4,9],[11,12],[-5,9],[0,14],[6,2],[0,12],[6,6],[2,11],[7,-14],[0,17],[4,-2],[-1,12],[9,5],[3,-13],[13,4],[4,-5],[9,5],[7,9],[2,24],[-7,12],[-9,-5],[-5,12],[-5,0],[7,11],[10,-1],[9,-21],[6,10],[7,-21],[14,-7],[4,6],[4,-11],[3,4],[4,-12],[6,-1],[8,7],[11,-18],[13,11],[6,2],[-4,-8],[2,-6],[5,7],[5,-5],[-2,-11],[7,-1],[3,14],[-5,3],[10,9],[4,-17],[3,7],[4,-11],[-12,-28],[4,-6],[-9,-21],[0,9],[-5,-6],[0,8],[-7,-9],[0,-26],[4,3],[-4,-29],[-3,-3],[-7,-24],[-4,-4],[2,-13],[22,-27],[0,-8],[10,-11],[4,-9],[7,1],[10,-14],[10,-7],[9,-21],[7,-8],[20,-9],[4,-7],[1,-15],[22,-24],[14,4],[10,13],[3,24],[7,18],[3,26],[3,9],[-2,9],[3,25],[5,20],[-4,40],[3,16],[-4,13],[1,21],[5,21],[-2,18],[6,14],[-2,11],[-5,-4],[6,28],[6,1],[-2,8],[6,41],[0,14],[5,2],[6,11]],[[5470,7982],[-2,-9],[5,-23],[3,-3]],[[5476,7947],[-3,-17],[-12,3],[-6,-6],[7,-3],[-5,-12],[-1,-22],[-9,-9]],[[5447,7881],[-19,-12],[-16,-2],[-9,-14],[-23,9]],[[5380,7862],[-32,7],[-12,17],[2,7],[-12,-5],[-17,-1],[-4,-11],[-15,6]],[[5290,7882],[-2,7],[-6,-8],[-16,12]],[[5266,7893],[-2,12]],[[5264,7905],[1,14]],[[5265,7919],[4,2]],[[5269,7921],[7,0],[8,-16],[6,15],[12,-1],[2,-7],[9,1],[9,10],[32,4],[6,-11],[3,9],[-5,5],[1,13],[-6,9],[4,7],[12,5],[4,16],[7,-3],[3,13]],[[5383,7990],[7,-9],[18,0],[7,11],[0,12],[11,-1],[20,-13],[10,3],[13,-6],[1,-5]],[[6281,7420],[-19,8],[-9,14],[-9,24]],[[6244,7466],[-1,3]],[[6289,7594],[9,-6],[11,-12],[5,-17],[16,-3],[5,15],[9,6],[5,16]],[[6349,7593],[15,-31],[1,-11],[10,-28],[15,-3],[8,-10],[-11,-3],[-13,-11],[0,-11],[-6,-28],[4,-11],[-5,0],[-1,-17],[-7,10],[-2,-43]],[[6357,7396],[-7,-2],[-6,12],[-11,12],[1,8],[7,2],[-5,18],[6,7],[-10,16],[-4,-1],[-26,-29],[-11,-17]],[[6249,7560],[8,10],[13,-8],[8,-9],[6,1],[6,-8],[4,3],[1,15],[-10,9],[-3,13],[7,8]],[[5848,5045],[-4,-15],[2,-14],[9,-5],[0,-17],[-9,-13],[-9,-34],[-11,-21],[-3,1]],[[5823,4927],[-9,39],[1,21],[-4,4]],[[5811,4991],[0,18],[-4,5],[-2,12]],[[5805,5026],[4,7],[5,-4],[0,-9],[11,1],[5,7],[1,21],[6,-6],[7,7],[4,-5]],[[5166,8104],[10,-14],[1,-10],[-8,-11]],[[5169,8069],[-7,-3],[-4,-16],[2,-14]],[[5160,8036],[-9,-3],[-4,10],[-13,7],[-1,21],[-9,-13],[-10,3],[2,15],[-5,5],[-10,0],[0,6],[-11,5],[-4,15],[-7,-6],[-7,8],[-2,15]],[[5070,8124],[16,14],[7,3]],[[5093,8141],[0,-6],[16,-3],[8,9]],[[5117,8141],[1,0]],[[5118,8141],[3,3],[16,-1],[7,-8],[9,0],[9,-11],[-6,-13],[10,-7]],[[5099,5856],[-3,-17],[7,-16],[0,-19],[3,-5],[-1,-16],[-5,0],[1,-14],[-3,-18],[-6,-3],[0,-9],[-5,-12],[-2,-20],[-8,-4],[-2,-15],[0,-41],[-1,-12],[2,-25],[1,-42],[-2,-18]],[[5075,5550],[-31,-9]],[[5044,5541],[5,3],[-5,18],[1,24],[0,73],[-1,5],[0,43],[-6,13],[-1,37],[-16,23],[0,19],[4,17]],[[5025,5816],[5,3],[1,13],[4,-1],[3,11],[6,-3],[11,2],[8,13],[3,14]],[[5066,5868],[-1,19],[14,10],[10,-21],[2,-8],[6,-4],[2,-8]],[[5006,6041],[-2,-21],[6,-16],[-1,-9],[7,-24],[5,0],[7,-13],[7,-7],[-9,-1],[0,-15],[6,-6],[11,-19],[8,-1],[3,7],[5,-3],[3,-15],[-6,-4],[10,-26]],[[5025,5816],[-12,0],[-18,8]],[[4995,5824],[-8,-3],[-5,-10],[-2,5],[-59,0],[-3,-22],[3,-11],[2,-25],[0,-24],[2,-5]],[[4925,5729],[-4,-4],[-10,24],[-6,5],[-10,1],[-11,-7],[-4,-11],[-11,3],[-4,12],[-3,-1],[-4,24],[-9,1],[-3,7]],[[4846,5783],[3,24],[-2,14],[6,9],[1,19],[-4,14],[8,10],[9,1],[10,18],[-1,24],[6,0],[0,14],[-3,11],[10,13],[15,-13],[5,7],[0,25],[6,-5],[5,21],[11,16],[12,-6],[1,16],[8,3],[11,13],[8,5],[8,15],[8,-4],[8,2],[11,-8]],[[7529,6456],[0,16],[3,-11],[-3,-5]],[[7521,6458],[-5,-7],[2,29],[-4,4],[3,11],[6,-20],[-2,-17]],[[7571,6448],[0,-29],[2,-10],[-12,7],[1,-20]],[[7562,6396],[1,-15],[-7,20],[-1,27],[-3,9],[-2,29],[-11,31],[-5,-14],[-9,0],[-8,26],[1,14],[-4,6],[-9,4],[11,-11],[-4,-10],[2,-12],[-3,-8],[5,-13],[-2,-18],[-6,-9],[-1,-11],[-7,1],[1,7],[-5,6],[-2,-15],[-12,-7],[0,14],[-4,-18],[-4,10],[-1,18]],[[7473,6457],[-6,48],[2,14],[-7,2],[3,13],[-6,8],[0,11],[5,8],[0,22],[-7,0],[-11,12],[-2,7],[4,12],[5,1],[3,18],[13,-1],[-3,18],[-8,1],[-3,11],[-9,14],[2,12],[5,4],[4,14],[5,-9],[11,-3],[7,-14],[7,-2],[2,15],[6,-18],[-2,-4],[1,-32],[15,-8],[23,2],[7,-3],[18,3],[11,-14],[-6,-2],[-5,-31],[-5,-2],[0,-9],[-8,2],[0,-6],[-7,0],[-7,-21],[2,-14],[9,-30],[7,5],[0,15],[5,8],[-1,11],[5,4],[8,-22],[0,-25],[3,-12],[3,-42]],[[5793,7702],[0,-17],[-11,-3],[-6,-14],[-2,-26],[-4,1],[-8,-16],[5,1],[11,-28]],[[5778,7600],[-13,-4],[-6,9],[-21,-5],[-7,-15]],[[5731,7585],[-8,0],[2,-21],[-25,-7],[-9,10],[-8,1],[-2,6],[-14,0],[-8,-7],[-13,0],[-10,-4]],[[5636,7563],[3,22],[-5,18],[-9,5],[-5,11]],[[5620,7619],[5,6],[-3,23],[9,5],[7,17],[-13,15],[-4,15],[1,17],[8,13]],[[5630,7730],[9,-8],[-4,-15],[17,3],[18,-8],[10,3],[21,-5],[4,-4],[11,5],[9,16],[25,10],[10,-10],[15,-2],[8,-13],[10,0]],[[6402,6694],[3,0],[0,-24],[-4,8],[1,16]],[[2971,6401],[-3,-10],[-15,-3],[-1,6],[9,10],[4,-4],[6,12],[0,-11]],[[2969,6475],[8,-3],[-7,-3],[-1,6]],[[2948,6491],[0,-14],[-5,9],[5,5]],[[2889,6546],[9,-13],[-10,9],[1,4]],[[2908,6546],[6,-21],[0,-8],[7,-10],[0,-8],[-7,15],[-1,14],[-5,18]],[[2840,6572],[6,0],[0,-20],[-8,5],[-3,13],[5,2]],[[2908,6577],[-3,0],[-4,16],[7,-16]],[[2830,6632],[3,0],[8,-40],[-8,-11],[-10,14],[7,37]],[[2869,6655],[0,-4],[16,-20],[-1,-29],[-2,7],[3,17],[-6,14],[-11,8],[1,7]],[[2819,6722],[15,-4],[-21,-5],[6,9]],[[2839,6733],[5,0],[16,-25],[0,-11],[-4,-3],[0,-19],[-6,5],[4,8],[0,18],[-8,23],[-7,4]],[[5528,7765],[9,0],[-7,-29],[14,-17],[-10,-5],[7,-13],[-1,-8],[-7,-3]],[[5533,7690],[-8,-3],[0,-8],[-7,-6],[-1,-13],[-4,0],[-1,-26]],[[5512,7634],[-22,19]],[[5490,7653],[-2,3]],[[5488,7656],[0,8],[-35,57],[-8,32],[-7,3],[0,29],[6,2],[10,-12],[3,10],[9,-1],[4,7],[4,-7],[22,-6],[4,4],[19,-3],[2,-11],[7,-3]],[[5781,8416],[4,-6],[9,3],[3,-8],[9,4],[11,-6],[1,-13],[12,9],[16,-3],[11,-11],[-2,-19],[6,-15],[-7,-13],[11,-10],[-3,-7],[7,-14],[15,-15],[-3,-11],[10,1],[11,-9],[6,-11],[-15,-22],[-22,5],[-4,-9],[8,-10],[2,-30],[5,-13]],[[5882,8183],[-23,-2],[-12,-29],[3,-14],[-7,-1],[-6,11],[-15,-1],[-9,-6],[-5,14],[-13,-11],[-11,13],[-16,-10],[1,7],[-13,0],[-1,7],[-21,5],[-10,6],[-28,2],[-19,-4],[-11,-18],[-11,3],[0,-5]],[[5655,8150],[0,34],[-12,10],[6,13],[15,11],[0,18],[-7,25],[-5,28]],[[5652,8289],[20,1],[5,-4],[12,5],[-1,7],[19,11],[1,-8],[8,6],[-7,3],[9,37],[8,1],[3,10],[9,-1],[6,10],[-8,1],[2,20]],[[5738,8388],[11,10],[17,-2],[8,17],[7,3]],[[2547,6247],[-3,-6],[9,0],[-1,-18],[-5,-28],[4,-4],[-4,-10],[2,-16],[-2,-24],[-7,-21],[-5,-2],[-5,-20]],[[2530,6098],[-9,0],[2,51],[0,60]],[[2523,6209],[4,10],[4,-6],[9,26],[0,6],[7,2]],[[3084,4249],[-4,-1]],[[3080,4248],[4,1]],[[3384,4022],[-1,21],[-24,29],[-24,0],[-51,-22],[-4,-23],[-10,-28],[0,-29],[-8,-54],[-3,-14]],[[3133,3869],[-10,-5],[-9,4],[1,16],[-3,11],[0,16],[-4,7],[-3,23],[0,15],[-6,20],[-4,2],[2,18],[-6,6],[1,10],[-3,14],[6,2],[1,8],[-5,11],[7,16],[-13,23],[-3,34],[-3,18],[2,6],[-7,5],[0,8],[-5,18]],[[3069,4175],[-4,17],[7,8],[10,30]],[[3082,4230],[5,-3],[-1,11],[8,5],[0,6],[-7,0],[-1,9],[4,4],[-7,3],[0,7],[-10,17]],[[3073,4289],[6,16],[-7,15],[6,28],[5,6],[3,20],[-6,22],[4,8],[-1,36],[7,11],[2,12],[-16,55],[-9,34]],[[3067,4552],[23,-3],[-1,-8],[10,6],[9,20],[11,3],[11,19],[7,3],[11,20],[19,8],[7,1],[4,-5],[5,9],[3,-32],[-4,-13],[3,-21],[-2,-18],[2,-19],[3,-2],[1,-14],[4,-2],[1,-12],[5,-1],[4,-10],[6,-4],[1,-11],[13,-4],[4,4],[10,-7],[4,-8],[5,4],[9,-20],[4,1],[8,-10],[7,0],[0,-6],[8,-17],[22,4],[18,-27],[-2,-20],[5,-18],[1,-28],[-9,-1],[9,-20],[3,-47],[47,-4],[3,3],[0,-13],[-4,-8],[2,-34],[11,-15],[6,-1],[0,-8],[6,-27],[0,-10],[-6,-46],[-9,-38],[7,-13],[-8,-10]],[[3651,3581],[1,22],[3,0],[-4,-22]],[[3650,3661],[-4,8],[6,7],[-2,-15]],[[3919,4412],[0,-16],[-4,16],[4,0]],[[3660,5124],[-3,3],[4,9],[-1,-12]],[[3588,5149],[0,-7],[-8,-7],[1,9],[7,5]],[[3577,5151],[2,-5],[-4,-19],[-3,-11],[-15,-19],[0,13],[7,10],[0,14],[2,11],[8,8],[3,-2]],[[3573,5156],[5,19],[0,-10],[-5,-9]],[[3608,5175],[11,-6],[9,5],[27,-7],[-2,-14],[-1,-20],[-4,-14],[-5,-5],[0,-14],[-7,-5],[-3,7],[0,-11],[-9,1],[-6,-12],[-14,3],[-4,-6],[-5,2],[-7,28],[1,13],[6,-5],[1,8],[-7,-1],[0,23],[2,17],[4,10],[5,5],[8,-2]],[[3586,5165],[-4,4],[1,13],[7,3],[2,-9],[-6,-11]],[[3625,5187],[3,-5],[-2,-7],[-11,2],[10,10]],[[3599,5183],[-5,0],[-2,9],[6,-1],[1,-8]],[[3624,5200],[-6,-5],[-3,-12],[-14,0],[-1,12],[8,1],[15,9],[1,-5]],[[3600,5213],[1,-14],[-2,-7],[0,23],[1,-2]],[[3609,5216],[-6,-13],[1,14],[5,-1]],[[3608,5236],[0,-10],[-5,0],[5,10]],[[3600,5305],[1,-11],[-5,4],[4,7]],[[3431,5295],[13,-7],[2,14],[-6,10],[5,17],[6,-8],[11,2],[0,4],[10,2],[8,-5],[3,-7]],[[3483,5317],[3,-7],[8,-3],[7,3],[6,9],[5,-7],[6,5],[9,-9],[9,11],[8,31],[1,14],[4,7],[15,44]],[[3564,5415],[5,24],[8,-16],[1,-21],[3,4],[-1,-29],[3,-31],[7,-22],[1,-18],[6,-18],[13,-4],[4,-8],[0,-19],[-7,-4],[7,-3],[-11,-17],[-5,-12],[-4,-17],[-5,-11],[-5,-1],[-9,-17],[-4,-19],[-8,-19],[0,-14],[-7,-8],[-1,-13],[-6,4],[-14,-13],[13,2],[0,-10],[9,7],[7,10],[11,11],[13,17],[-5,-12],[5,-5],[0,-14],[4,-9],[0,-11],[7,-14],[4,9],[6,4],[5,-7],[12,10],[1,-7],[-5,-41],[2,-2],[8,40],[7,18],[2,-8],[8,21],[3,-12],[1,19],[4,-2],[4,16],[1,15],[5,0],[5,12],[2,-11],[4,10],[11,-7],[19,-9],[0,-10],[7,-6],[8,5],[1,-7],[10,-9],[1,-8],[6,9],[-2,-11],[1,-13],[3,11],[5,4],[10,-14],[-3,-5],[6,-1],[3,-8],[-5,-16],[5,5],[3,-14],[-4,0],[-5,-36],[2,-9],[6,14],[1,23],[8,8],[1,-9],[-7,-12],[7,-2],[2,14],[9,4],[6,-4],[-1,12],[4,0],[18,-13],[6,-11],[15,-5],[3,6],[5,-9],[29,4],[3,2],[14,-3],[25,-31],[3,-1],[8,-15],[5,-2],[11,-27],[14,-26],[9,-6],[4,-12],[6,-1],[6,-8],[16,-1],[5,3],[13,-6],[4,-13],[9,-57],[1,-24],[5,-21],[-1,-53],[-7,-40],[-7,-25],[-10,-27],[-3,5],[-2,-16],[-12,-24],[-3,-13],[-10,-10],[-5,-9],[-11,-37],[-15,-52],[-13,-34],[-5,0],[0,14],[-4,9],[-4,-16],[0,-17],[-4,-7],[0,-27],[-2,-5],[2,-28],[-3,-20],[2,-9],[0,-24],[2,-28],[2,-6],[-4,-25],[-6,-53],[1,-31],[-2,-9],[-7,-8],[-7,-30],[2,-51],[-3,-13],[-6,-6],[-9,-44],[-13,-31],[-8,-25],[4,-27],[-5,-10],[-12,-7],[-13,-20],[0,-21],[-17,1],[-11,-3],[0,18],[-7,-5],[2,-13],[-22,-7],[10,7],[-9,3],[-8,-7],[-2,7],[-9,-7],[1,-17],[-10,-3],[-2,-6],[-10,-7],[-1,-11],[-12,4],[-8,-7],[-1,-7],[-11,-6],[-11,-13],[-5,-12],[-10,-9],[-10,-15],[-1,-15],[-8,-7],[-6,4],[1,-17],[-4,-17],[-1,-19],[-5,-6],[4,-6],[-3,-16],[3,-6],[2,-32],[-2,-52],[-4,-17],[-17,-23],[-5,-12],[-14,-39],[-8,-37],[-10,-34],[-12,-25],[-22,-27],[-3,-9],[0,17],[5,-4],[11,20],[5,3],[4,11],[-1,12],[5,1],[0,10],[9,9],[-1,22],[4,-6],[1,12],[-12,-4],[-9,8],[3,-7],[-6,-21],[-1,-24],[-6,-10],[-9,-4],[-3,-21],[-4,-3],[-1,-14],[5,-10],[-5,-7],[-6,-30],[-7,-26],[-18,-28]],[[3517,3240],[-4,10]],[[3513,3250],[2,1],[1,23],[5,4],[2,13],[5,6],[5,-10],[6,18],[-4,16],[-12,-19]],[[3523,3302],[-11,11],[-5,23],[-15,14],[-9,21],[-8,3],[-4,8],[-7,3],[-2,10],[-8,11],[-6,-13],[-4,0],[0,16],[-23,40],[-7,0],[-2,-8],[-11,-2],[-2,6]],[[3483,3710],[0,8]],[[3483,3718],[5,3],[0,26],[4,16],[0,34]],[[3492,3797],[-9,15],[-10,-10],[-13,1],[-3,21],[1,11],[-4,23],[1,21],[-7,19],[-9,1],[-6,12],[-12,-10],[-31,8],[0,36],[3,16],[-9,61]],[[3067,4552],[-11,2],[-7,-8],[-12,3],[0,41],[1,29],[2,20],[-10,-14],[-2,-7],[-9,-11],[-25,0],[-3,27],[-14,7],[-11,0],[7,16],[0,8],[-6,17],[-4,2],[-1,11],[-5,6],[-2,15],[-5,9],[2,9],[-8,14],[1,11],[7,2],[-3,13],[2,13],[11,17],[5,3],[1,12],[-3,14],[8,24],[1,30],[14,14],[14,21],[17,5],[10,6],[5,11],[9,1],[3,-6],[10,-5],[0,5]],[[3056,4939],[6,58],[0,9],[5,46],[0,10],[5,54],[-4,13],[-2,24],[-13,21],[1,42],[12,4],[3,5],[10,-6],[-2,21],[-4,4],[-14,0],[0,37],[8,4],[5,-3],[34,0],[-1,16],[7,-15],[5,4],[9,19],[4,-5],[7,-29],[-1,-21],[6,2]],[[3142,5253],[11,-21],[10,-7],[10,14],[6,-1],[-1,-17],[11,17],[1,10],[11,6],[10,16],[0,-8],[9,16],[0,14],[19,16],[1,14],[-20,4],[2,15],[-6,20],[0,30],[-13,22],[-4,12],[2,5],[4,-10],[12,0],[4,-14],[10,4],[4,-5],[4,7],[4,-5],[7,-18],[7,5],[-1,20],[6,1],[4,9],[7,-6],[18,12],[0,6],[16,10],[10,22],[-2,13],[-3,1]],[[3312,5482],[11,0],[3,4],[8,-12],[-3,-33],[6,0],[5,-8],[-2,-8],[4,-14],[0,-10],[-7,-12],[1,-13],[-4,-17],[-1,-22],[2,-17],[5,-5],[0,-26],[6,-8],[8,-19],[8,-4],[4,-7],[8,5],[0,10],[5,9],[9,-5],[6,11],[7,0],[3,11],[9,7],[9,-8],[9,4]],[[3347,5935],[-4,3],[0,13],[6,-10],[-2,-6]],[[8198,5465],[5,-34],[-7,5],[-2,24]],[[8194,5460],[4,5]],[[8166,5448],[6,-1],[7,5],[7,12],[9,10],[-2,-10]],[[8193,5464],[-7,-9],[2,-17],[0,-14],[-7,-10],[-7,23],[-8,11]],[[7545,6781],[-2,-8],[5,-11],[6,3],[3,-10],[-3,-11],[3,-13],[-5,-4],[-33,-3],[-10,8],[-6,-9],[-11,-3],[-12,9],[-6,-2],[-7,7],[-3,12],[4,10]],[[7468,6756],[3,13],[13,29],[11,14],[12,3],[0,-5],[9,-1],[-4,-10],[18,-5],[5,6],[10,-8],[0,-11]],[[5701,4158],[-1,-8],[8,-27],[7,-13],[6,-21],[4,-29],[8,-13],[14,-17],[7,-3],[3,-9],[0,-15],[12,-1],[-1,-34],[6,-12],[3,-15],[18,-5],[12,-10],[1,-14],[7,-7]],[[5815,3905],[-9,-3],[-3,-13],[-8,-7],[-12,-4],[-12,-27],[-5,-6],[-2,-10],[-11,-7],[-4,-13],[-5,-31],[-8,-10],[-3,-10],[-15,-6],[0,-10],[-8,-41],[-5,-7],[-10,1],[-4,-5],[-17,5],[-10,6],[-13,20],[-7,1],[-7,-5],[-6,-23],[0,-14],[-6,-13],[-8,-7],[-6,-18],[-7,-2],[-2,-10],[-15,0],[-15,4],[0,21],[5,11],[0,19],[-4,13],[-1,14],[-10,29],[-8,10]],[[5554,3757],[0,159],[28,0],[0,212],[23,4],[21,9],[21,5],[9,-27],[15,26],[7,4],[4,-6],[7,13],[12,2]],[[5634,5812],[4,-14],[8,-14],[10,-31],[1,-16],[-1,-21],[-5,-6],[3,-9],[-2,-17],[19,-1]],[[5671,5683],[2,-7],[-4,-11],[3,-6],[16,-5],[8,-17],[5,-3],[1,-11],[-4,-4],[6,-14],[18,-19],[2,-10],[8,-10],[-2,-16],[8,-21],[6,-2],[13,-23],[-1,-15],[6,-14]],[[5762,5475],[-12,7],[-4,-8],[-10,-1],[-12,12],[-6,-3],[-11,9],[-4,-5],[0,-13],[-18,-7],[-5,11],[-6,-10],[-27,-19],[-12,12],[-9,-34],[-3,-5],[-23,9],[-2,-3],[-20,12],[-7,-2],[-6,20],[-13,14],[-3,7],[-10,1],[-17,-34],[-1,-7],[-6,-3],[2,-12],[-1,-27],[1,-13]],[[5517,5383],[-4,9],[-11,-4],[-16,7],[-8,-6],[-15,-2],[-4,-7],[-3,-27],[1,-7],[-8,-34]],[[5449,5312],[-2,8],[0,26],[-4,13],[-5,3],[-15,32],[-6,21],[4,1],[-3,14],[-10,19],[-1,31],[-4,6],[2,8],[1,27],[-7,10],[10,13],[5,24],[3,4],[6,30],[6,14]],[[5429,5616],[9,-4],[7,8],[10,5],[4,11],[2,-12],[5,-7],[23,26],[7,-2],[5,4],[15,1],[15,36],[-6,7],[0,8],[5,5],[17,0],[10,7],[9,-1],[4,12],[8,5],[5,19],[13,24],[5,4],[3,10],[-1,14],[8,5],[0,5],[14,9],[9,-3]],[[2957,7804],[-12,-5],[13,16],[-1,-11]],[[2699,7829],[2,-7],[13,9],[3,-9],[5,9],[9,-4],[2,-11],[-7,-12],[-23,15],[-15,6],[11,4]],[[2665,7849],[6,-2],[-2,-11],[-4,13]],[[3319,7889],[6,-10],[-2,-13],[-7,-22],[5,3],[-19,-34],[10,5],[9,11],[-10,0],[12,21],[4,-8],[11,0],[-7,-23],[-16,-12],[-6,3],[-13,-5],[-5,21],[1,13],[6,7],[10,30],[7,14],[4,-1]],[[3221,7879],[6,-21],[3,6],[12,-8],[33,3],[3,-3],[-17,-10],[4,-13],[-11,-3],[-2,12],[-19,2],[-4,11],[-11,0],[2,14],[-9,-1],[4,16],[7,9],[-1,-14]],[[3503,7956],[10,3],[-1,-7],[-9,4]],[[2562,7993],[-9,-6],[0,8],[9,-2]],[[2924,7774],[20,14],[8,11],[6,0],[2,17],[7,17],[14,11],[5,9],[17,17],[5,-2],[32,22],[14,22],[0,4],[14,20],[0,5],[16,23],[21,20],[44,28],[28,8],[18,-3],[10,-5],[11,-14],[1,-8],[-11,8],[11,-15],[-4,-13],[-11,-4],[-1,-6],[-18,-13],[-16,11],[-3,-5],[-11,0],[18,-11],[9,-15],[8,9],[12,0],[3,-6],[-7,-14],[-1,-10],[-11,-13],[16,0],[-3,-15],[11,-32],[20,-8],[-8,-6],[7,-7],[10,0],[4,-9],[5,5],[24,-6],[10,10],[5,-15],[7,3],[7,-12],[-7,-5],[14,-3],[-1,-4],[-18,-7],[0,-3],[-32,-21],[-9,4],[-4,-9],[-8,1],[1,-9],[-11,0],[1,10],[-9,-5],[-4,-8],[2,-10],[-6,-5],[-8,-19],[-9,-10],[-6,1],[-9,-11],[-5,14],[-9,5],[-1,14],[7,29],[21,24],[22,18],[1,-13],[7,8],[20,9],[-34,2],[-5,-6],[-4,6],[13,15],[-3,9],[-5,-12],[-16,-9],[-17,-16],[-4,4],[-10,-10],[-12,-1],[-8,6]],[[3134,7784],[-9,6],[1,19]],[[3126,7809],[-10,9]],[[3116,7818],[1,1],[-1,74],[-14,17],[-16,-11],[-9,17],[-19,-37],[-4,-23],[-7,-12],[1,-17],[-12,-20],[1,-11],[-18,-5],[-6,-16],[-89,-1]],[[1546,8044],[6,-11],[-14,13],[8,-2]],[[1479,8054],[4,-13],[-7,0],[-4,9],[7,4]],[[3218,8058],[33,-11],[15,-14],[11,-6],[10,-14],[-16,-6],[-24,11],[-14,9],[-2,9],[-22,16],[9,6]],[[1494,8104],[-11,-4],[6,9],[5,-5]],[[1448,8112],[20,-17],[22,-5],[26,-13],[5,-19],[9,-12],[4,-16],[22,-13],[10,-22],[8,-25],[-6,-6],[-11,3],[-22,14],[-14,12],[9,11],[-18,-4],[-9,9],[4,11],[-8,0],[-1,10],[-14,-3],[0,11],[7,3],[-8,5],[-1,10],[-15,-2],[-33,43],[-2,7],[16,8]],[[3447,8155],[6,-8],[7,7],[-5,-17],[-12,4],[2,-12],[7,-5],[-28,-60],[-3,-27],[6,13],[13,21],[12,-13],[7,0],[-17,-14],[11,-17],[15,9],[-2,-16],[12,1],[8,14],[9,-8],[5,3],[15,-10],[-4,-13],[-17,-15],[10,3],[-3,-15],[12,-7],[3,10],[4,-6],[7,9],[-5,-19],[-11,-9],[-7,0],[6,-14],[-6,-9],[8,-15],[2,13],[6,14],[12,6],[-9,-18],[-1,-22],[8,8],[3,14],[5,-19],[-5,-10],[-2,-19],[-5,-17],[-6,3],[-10,-3],[4,26],[-2,5],[-14,-23],[-4,1],[8,31],[1,14],[-5,15],[-18,-29],[-10,-9],[0,-8],[-8,-11],[-9,-1],[-9,5],[3,7],[11,3],[15,28],[-11,3],[-6,-12],[-10,12],[-28,-4],[-25,3],[-6,4],[-18,-6],[-15,-2],[-4,17],[27,37],[-9,3],[-14,-6],[8,9],[6,-3],[9,33],[10,-9],[-2,9],[8,4],[-11,4],[25,78],[8,11],[8,28],[24,18]],[[1448,8147],[-7,0],[2,14],[5,-14]],[[1445,8181],[-2,-17],[-4,14],[6,3]],[[2798,8181],[-3,-7],[-8,3],[11,4]],[[1462,8192],[-15,-17],[2,14],[17,12],[-4,-9]],[[1430,8212],[1,-9],[-8,2],[7,7]],[[2738,8248],[8,-1],[10,-15],[3,-12],[-10,1],[-29,15],[6,10],[12,2]],[[1339,8249],[4,-12],[-6,-9],[6,-21],[17,-18],[-5,-5],[-20,26],[-16,32],[20,7]],[[1427,8244],[3,-10],[-2,-21],[-14,7],[-3,12],[2,20],[14,-8]],[[1419,8255],[-7,1],[4,10],[3,-11]],[[1382,8268],[9,-8],[5,-15],[-7,0],[-15,26],[8,-3]],[[1386,8270],[-9,4],[2,6],[7,-10]],[[1395,8273],[11,-17],[-5,-9],[-21,36],[3,5],[12,-15]],[[1380,8293],[-2,-10],[-7,7],[9,3]],[[1305,8302],[20,-3],[5,-14],[-15,-10],[13,-2],[2,21],[12,6],[-8,-28],[0,-22],[-13,-7],[-9,10],[7,6],[-11,3],[-7,25],[4,15]],[[2815,8428],[-1,-10],[-7,-3],[4,17],[4,-4]],[[2787,8429],[-11,-11],[1,8],[10,3]],[[2801,8446],[-3,-6],[9,-8],[-12,-27],[-8,-3],[2,12],[-9,-16],[-3,4],[14,23],[3,-5],[3,26],[4,0]],[[3293,8462],[1,-19],[-7,7],[6,12]],[[3204,8666],[5,-10],[-11,7],[6,3]],[[3109,8672],[7,-7],[-4,-10],[-10,-6],[-3,7],[5,16],[5,0]],[[3200,8731],[-2,-16],[-16,19],[18,-3]],[[2793,8775],[5,-7],[-8,-30],[-8,-9],[-10,11],[-2,14],[12,23],[11,-2]],[[3203,8784],[8,0],[-6,-10],[-9,3],[7,7]],[[3033,8802],[15,-11],[0,-7],[-13,1],[-7,15],[5,2]],[[2719,8809],[7,-3],[-2,-12],[-27,-27],[-23,-5],[-6,18],[18,27],[8,-5],[9,6],[16,1]],[[2822,8839],[21,-4],[4,-9],[-13,-10],[-16,17],[4,6]],[[3216,8833],[-8,14],[5,2],[3,-16]],[[2857,8849],[12,-6],[0,-11],[-20,14],[8,3]],[[3204,8862],[4,-12],[-12,8],[8,4]],[[3186,8910],[2,-6],[-13,-6],[11,12]],[[2625,8972],[12,-9],[-7,-5],[11,-20],[9,16],[14,-17],[20,-4],[4,-10],[19,-12],[5,2],[16,-14],[5,-23],[19,-8],[-1,8],[22,-21],[-8,-2],[-19,-16],[-26,14],[-12,-1],[-1,17],[-15,-1],[2,13],[-19,-10],[2,-14],[-19,-8],[-9,-19],[-25,-10],[-5,33],[-27,-2],[-14,-5],[8,20],[20,13],[-6,24],[6,15],[0,28],[5,23],[13,12],[1,-7]],[[2638,8984],[9,-10],[0,-16],[-12,13],[3,13]],[[2657,8990],[18,-11],[-3,-6],[15,-10],[-15,2],[-15,25]],[[2936,9103],[24,-5],[1,-12],[-28,0],[-10,16],[13,1]],[[2601,9095],[-7,-12],[-8,5],[-3,16],[9,13],[7,-6],[2,-16]],[[2900,9117],[16,-9],[-4,-11],[3,-24],[-9,-11],[-14,-6],[-31,-1],[-7,12],[0,22],[15,25],[31,3]],[[2096,9122],[-15,8],[14,1],[1,-9]],[[2919,9131],[3,-14],[-16,10],[2,12],[11,-8]],[[2173,9144],[-3,-12],[-12,5],[15,7]],[[2218,9152],[-13,-10],[2,17],[11,-7]],[[2820,9179],[-10,-28],[-16,-3],[26,31]],[[2860,9180],[10,-6],[-13,-11],[-6,16],[9,1]],[[2315,9189],[14,0],[-4,-11],[-10,11]],[[2342,9191],[8,-12],[-14,-3],[6,15]],[[3114,9197],[-2,-10],[-10,3],[12,7]],[[2834,9196],[-16,-12],[-9,1],[20,15],[5,-4]],[[2787,9204],[9,-8],[-21,-3],[4,-8],[-24,10],[16,8],[16,1]],[[2294,9191],[5,5],[10,-12],[22,-14],[6,-20],[18,-3],[-17,-6],[-13,-15],[-33,4],[-9,7],[-25,7],[-3,8],[-11,-6],[-11,11],[33,17],[-4,16],[12,-9],[-6,16],[10,11],[18,-11],[-2,-6]],[[3004,9275],[14,-3],[-20,-12],[-5,8],[11,7]],[[2924,7774],[-11,-4],[-19,-25]],[[2894,7745],[-6,-7],[-19,-10],[-11,-18],[-17,9],[-5,-3],[-30,-8],[-17,-15],[-5,-17],[13,-6],[7,4]],[[2804,7674],[-1,-9]],[[2803,7665],[5,-11],[-36,-7],[-9,-13],[-11,6],[-12,-1],[-32,-36],[-12,-2],[-5,4],[0,12],[5,4],[13,-1],[1,10],[-6,4]],[[2704,7634],[5,9],[1,17]],[[2710,7660],[8,4],[12,20],[-1,38],[4,14],[9,16],[0,12],[-12,25],[11,0],[1,-14],[14,-17],[18,-14],[0,17],[4,6],[6,-5],[-9,17],[2,14],[-10,3],[-10,32],[-12,0],[-10,8],[-39,6],[-3,0],[-30,10]],[[2663,7852],[0,10],[-10,-4]],[[2653,7858],[-3,4],[4,24],[-8,1],[3,23],[-11,14],[5,20],[-25,0],[-8,9],[-12,39],[-22,-2],[-24,14],[-2,-22],[-7,-2],[3,15],[-6,-2],[-5,-26],[-5,-3],[3,16],[-10,-5],[-5,-22],[-7,-6]],[[2511,7947],[-9,-1],[-4,7],[-20,0],[-2,7],[-16,-11],[-8,4],[-10,14],[-8,-7],[-3,12],[-14,11],[-22,-6],[-3,7],[-17,3],[-6,5],[-4,31],[-9,3],[0,-22],[-79,0],[-80,0],[-55,0],[-79,0],[-79,0],[-49,0],[-49,0],[-80,0],[-61,0],[-74,0],[-81,0]],[[1590,8004],[-8,0]],[[1582,8004],[-1,0]],[[1581,8004],[-7,20],[2,14],[-8,-11],[-12,8],[-1,15],[-14,0],[-6,8],[3,18],[-3,5],[-9,0],[-20,12],[-13,-2],[6,17],[-14,1],[-10,6],[-4,-6],[-14,11],[-8,12],[9,23],[13,3],[-9,3],[-10,-15],[-4,12],[0,14],[19,25],[0,13],[-12,-16],[-7,-5],[-8,17],[-4,-12],[4,26],[-10,9],[-10,34],[10,-5],[-8,12],[5,21],[-17,-20],[-3,-14],[-21,32],[-4,26],[-6,-3],[1,17],[7,4],[10,33],[-5,0],[-4,28],[2,8]],[[1387,8402],[0,0]],[[1387,8402],[-1,12],[-9,1],[-9,13],[-10,3],[-14,11],[-7,0],[0,11],[-7,4],[2,10],[-29,56],[-20,40],[-12,8],[-4,12],[-21,22],[3,8],[-13,13],[-25,-11],[-2,-20],[-27,-20],[-5,17],[-43,50],[3,16],[-17,-1],[-9,-8],[-12,6],[-16,1],[0,538]],[[1083,9194],[29,-2],[23,-6],[15,-16],[50,-21],[26,2],[-3,18],[20,5],[-1,8],[29,8],[12,-5],[-9,-9],[24,4],[10,14],[16,0],[45,28],[22,-4],[5,11],[9,-11],[-45,-25],[-27,-6],[-3,-10],[-18,-6],[-4,-15],[-9,3],[-4,-11],[24,-3],[-11,15],[29,13],[15,12],[12,-9],[14,21],[35,9],[0,-10],[23,16],[-2,9],[22,7],[-13,3],[0,17],[23,-16],[14,-32],[15,-16],[20,-9],[9,4],[-8,12],[10,9],[8,18],[10,-1],[-2,-19],[12,0],[-13,-19],[24,-2],[14,8],[6,20],[36,-3],[23,-10],[23,-16],[31,-5],[23,-13],[57,-13],[-9,8],[11,4],[38,-17],[18,-18],[-3,-9],[-26,2],[-8,-18],[-9,-3],[47,-13],[40,-1],[3,4],[36,1],[22,14],[13,-16],[18,0],[7,-21],[6,15],[20,-23],[-7,-21],[25,-29],[-12,23],[1,18],[16,-14],[-4,15],[-9,8],[0,15],[-12,12],[7,19],[35,18],[21,5],[1,13],[-24,-7],[2,-8],[-22,-7],[-16,5],[7,-11],[-22,-3],[-2,12],[-10,-3],[14,20],[27,5],[31,14],[12,-3],[9,-11],[4,-20],[19,-6],[4,-12],[20,-1],[9,8],[5,-11],[27,-14],[21,-3],[23,10],[26,-1],[15,-7],[25,5],[22,-12],[12,11],[-16,12],[-10,-9],[-10,10],[3,9],[-11,11],[27,1],[-8,9],[21,-3],[5,-12],[18,3],[-11,-15],[26,12],[-16,-41],[11,-19],[10,8],[11,-20],[4,16],[-15,26],[7,19],[17,-3],[18,14],[18,33],[-10,8],[-5,-13],[-15,0],[11,34],[18,-2],[2,13],[-22,-5],[-9,14],[-7,-7],[-25,10],[-21,22],[1,14],[9,15],[-12,9],[5,30],[14,6],[8,-7],[5,12],[-13,4],[18,9],[2,13],[18,3],[4,-19],[7,7],[32,-24],[4,-30],[37,-41],[-25,2],[-4,-6],[18,-3],[-25,-18],[20,-9],[18,7],[10,-9],[19,-1],[-23,-12],[14,-11],[6,-20],[-2,-17],[9,-12],[11,12],[4,31],[11,15],[9,1],[28,-27],[5,-32],[-16,2],[1,-19],[8,-19],[17,-15],[-1,-14],[15,7],[-3,7],[14,-1],[1,20],[17,23],[7,37],[25,0],[-10,13],[11,7],[-20,11],[-2,10],[6,23],[7,-4],[20,5],[16,-9],[30,-1],[15,-23],[22,-5],[-6,-12],[-12,-5],[20,-5],[1,-10],[-20,-13],[-17,6],[-2,-7],[18,-11],[-5,-13],[26,-30],[-7,-27],[-13,-1],[-17,-24],[-12,-1],[-10,-11],[-25,21],[16,-30],[-4,-2],[-19,14],[4,-14],[-25,7],[-5,17],[-19,-5],[-18,2],[7,-12],[19,-9],[-16,-15],[-3,-13],[-23,-20],[-16,0],[-17,15],[-31,20],[-10,-3],[-30,2],[32,-7],[14,-11],[11,-16],[56,-5],[2,-11],[-16,-20],[-14,-27],[-18,-15],[-24,1],[-12,10],[4,-14],[-10,-17],[-21,-3],[-19,10],[-14,0],[-37,16],[-8,-2],[11,-10],[4,5],[31,-11],[-10,-11],[18,11],[6,-8],[25,-12],[2,-18],[-22,-16],[-19,5],[-10,-3],[15,-16],[-19,5],[-2,-20],[-8,-12],[-18,-12],[11,-4],[-17,-12],[-19,-60],[-8,-31],[3,-40],[-3,-17],[13,-17],[3,4],[29,-1],[2,-15],[10,-37],[9,-24],[-3,-25],[12,2],[30,12],[15,-3],[15,-12],[30,-8],[12,-15],[13,-10],[7,-15],[10,-12],[11,-1],[32,-17],[21,-20],[12,-3],[19,5],[15,-6],[12,1],[18,-9],[3,-14],[-6,-25],[0,-12],[8,-17],[-2,-23],[3,-13],[-5,-19],[20,-28],[6,-21],[10,-5],[15,-30],[1,-10],[19,-11],[1,16],[10,15],[11,-20],[6,11],[-9,15],[13,19],[2,22],[-6,4],[1,19],[-5,0],[-5,42],[-2,32],[-7,2],[-6,25],[-5,1],[39,22],[16,14],[19,23],[12,21],[4,16],[0,44],[-8,34],[-9,20],[-24,23],[-13,16],[-2,16],[22,21],[-1,20],[14,6],[-1,13],[-7,2],[-7,35],[6,6],[-16,2],[10,15],[2,20],[6,5],[-13,13],[-4,34],[18,16],[21,-4],[32,-14],[34,-1],[14,12],[18,-9],[17,-14],[-1,-8],[30,-19],[-9,-10],[14,-16],[23,-5],[11,2],[2,-11],[12,-1],[2,12],[5,-18],[-12,-15],[6,-26],[2,-26],[-6,-6],[3,-9],[11,-2],[-8,-8],[2,-18],[-19,-7],[10,-3],[15,12],[13,1],[11,-6],[5,-24],[7,10],[9,-20],[28,15],[6,21],[10,-9],[5,18],[7,3],[-2,12],[8,8],[-3,22],[8,2],[7,25],[14,2],[0,-12],[9,-6],[-1,-17],[6,0],[5,-15],[12,-13],[-11,-9],[13,3],[1,-13],[7,1],[4,-11],[-9,-11],[16,0],[-2,-19],[15,-12],[7,-20],[-14,-11],[10,2],[6,-6],[-6,-7],[18,-7],[-8,-18],[-7,0],[5,-13],[-9,-4],[11,-10],[-12,-2],[5,-5],[14,1],[-3,-13],[10,-2],[1,-7],[22,-5],[-4,-5],[3,-16],[-4,-16],[20,12],[-2,-10],[10,-5],[10,9],[6,-22],[30,-6],[14,-10],[-9,-11],[-15,-1],[-1,-6],[-33,-12],[21,5],[3,-3],[-30,-15],[-13,-3],[2,-15],[-11,-14],[38,24],[6,15],[19,9],[-5,7],[24,-1],[11,-22],[-12,-11],[6,-9],[9,15],[30,-19],[4,-15],[-6,-7],[5,-9],[-7,-12],[8,-9],[4,-17],[-8,-15],[-20,-17],[-10,-13],[-8,5],[-25,-14],[-8,3],[-7,-12],[-8,-5],[1,-12],[-13,-8],[0,-8],[-11,-6],[-3,-10],[-38,-3],[-10,-5],[-6,7],[-51,4],[-26,-2],[-37,0],[-5,-5],[-8,5],[-19,-25],[-3,-23],[-4,-6],[-19,-3],[-4,-11],[-24,-18],[-10,-28],[-7,-9],[-19,14],[-5,-2],[22,-14],[-5,-20],[-10,-17],[-6,-3],[-6,-17],[-17,-23],[-15,-1],[-21,-24],[-10,-4],[-7,-18],[-12,-11],[-7,-11],[-6,-2],[5,-8],[-15,-12],[-6,-8]],[[1827,9404],[6,-29],[-17,-11],[32,3],[-4,6],[17,15],[49,-17],[-3,-15],[17,6],[18,-8],[8,4],[-26,29],[23,-2],[24,-23],[11,-1],[-1,-11],[13,-38],[6,-4],[21,15],[-15,14],[-9,45],[0,25],[29,-10],[8,7],[26,-17],[18,-30],[4,-24],[19,-29],[-7,-28],[16,-17],[25,-16],[8,1],[35,-23],[16,4],[4,-24],[-13,-6],[-4,13],[-5,-14],[-19,11],[-14,-26],[22,5],[-2,-17],[9,-10],[-19,-8],[-24,-5],[-49,6],[4,12],[-40,5],[-4,18],[-10,-16],[-17,-13],[-28,-6],[-12,-9],[-56,-11],[-59,-3],[-16,19],[2,22],[-18,5],[-26,-3],[-22,4],[-18,9],[0,6],[-18,12],[-4,14],[39,12],[41,5],[53,-7],[9,7],[22,-3],[-18,14],[-19,2],[-18,8],[-58,-6],[-19,4],[-40,-1],[-19,23],[17,8],[41,11],[13,11],[-48,-10],[-21,6],[13,5],[-36,7],[0,11],[16,17],[13,3],[-13,15],[34,25],[50,16],[27,11],[10,-5]],[[2094,9405],[-16,-22],[-8,1],[-18,19],[-26,12],[13,13],[42,1],[16,-10],[-3,-14]],[[2768,9430],[25,-7],[37,2],[19,-6],[32,-26],[-1,-17],[-52,5],[-28,-9],[-22,6],[-4,22],[-21,5],[1,25],[14,0]],[[2595,9436],[41,-3],[4,-8],[-30,-21],[-18,-26],[10,-20],[-3,-28],[9,-14],[19,-16],[14,-5],[-16,-13],[-13,0],[-8,-10],[21,10],[18,-2],[8,17],[-4,14],[-16,-1],[-8,13],[2,21],[16,1],[-18,12],[-3,25],[14,2],[-6,11],[26,-5],[-19,15],[63,24],[37,-1],[11,-27],[14,-5],[0,-14],[10,-10],[-26,-24],[18,11],[-11,-18],[5,-13],[12,5],[16,25],[23,-13],[11,14],[26,14],[67,-15],[7,-14],[-14,-14],[33,4],[0,-15],[-32,-17],[31,12],[19,-1],[-10,-9],[-4,-17],[12,19],[3,-12],[15,-7],[13,23],[32,-12],[8,-11],[-10,-12],[-11,3],[-13,-14],[4,-6],[25,7],[4,9],[15,2],[3,-9],[-13,-17],[30,15],[-3,-16],[15,10],[31,-11],[-10,-16],[-31,-9],[32,3],[-1,-16],[12,9],[6,14],[24,-23],[2,-12],[-26,3],[-15,-11],[19,-8],[19,1],[16,-11],[-2,-8],[-26,2],[-15,8],[-22,3],[22,-8],[13,-10],[-8,-4],[5,-11],[-43,2],[33,-6],[-9,-8],[29,-2],[23,-6],[-10,-6],[8,-11],[37,-12],[12,7],[-2,-12],[18,-4],[13,-28],[-21,-10],[47,10],[-7,-18],[22,-5],[5,9],[18,-10],[10,-16],[-20,-10],[14,-3],[-30,-8],[14,-7],[-7,-17],[-15,-3],[7,-7],[-17,-1],[-7,16],[3,-21],[-9,-4],[9,-9],[-5,-24],[-17,9],[-9,14],[-1,-9],[-18,16],[-1,14],[-9,5],[19,17],[-31,-5],[-2,9],[-22,20],[2,8],[-13,-6],[-6,-11],[-16,12],[7,-15],[16,-12],[-1,-7],[-20,-1],[-9,18],[-2,-18],[12,-16],[14,3],[-2,-10],[10,-2],[10,-39],[1,14],[31,-16],[-3,-16],[17,0],[-10,-10],[11,-14],[11,-5],[-9,-11],[12,-6],[0,-25],[-7,5],[-4,18],[-2,-14],[10,-29],[-17,5],[8,-19],[-7,-5],[-1,13],[-12,11],[-12,-3],[-13,13],[-5,-5],[-20,21],[-6,12],[-1,-16],[-27,24],[-8,-3],[23,-33],[17,-6],[17,-21],[5,0],[16,-26],[7,-2],[-9,-20],[-30,16],[-35,7],[-12,7],[-25,24],[-9,-2],[-38,22],[-5,14],[15,10],[-16,12],[-2,-7],[-15,9],[-13,14],[-15,33],[-20,-9],[4,15],[-14,-6],[-5,-14],[-30,14],[-5,-12],[-24,-12],[-14,2],[-18,11],[-4,27],[5,9],[18,8],[-3,15],[21,-2],[25,-11],[9,-9],[-6,-7],[10,-12],[-2,16],[-16,17],[23,-3],[1,7],[15,-3],[11,12],[19,-5],[-7,19],[-8,4],[-13,18],[41,32],[5,19],[15,6],[-4,22],[-12,18],[-4,23],[-23,5],[3,18],[-19,-6],[-13,16],[2,15],[-9,-11],[-10,2],[-32,-14],[0,20],[28,3],[1,9],[-30,19],[-15,5],[10,9],[-23,0],[0,21],[-20,2],[-10,12],[-21,2],[21,-15],[3,-13],[-29,-7],[-6,8],[-39,3],[15,-14],[-9,-2],[-14,13],[-15,-11],[-25,12],[-15,-3],[-31,3],[-5,4],[-39,2],[-21,21],[1,-11],[-47,11],[-21,25],[9,7],[22,-4],[27,0],[-15,18],[-6,-3],[-47,6],[-5,7],[5,17],[-9,11],[5,24],[25,52],[36,27],[33,8]],[[2227,9438],[17,-9],[57,6],[4,-12],[-12,-6],[8,-7],[-19,-7],[-19,-16],[35,-3],[9,-16],[12,3],[5,-18],[-9,-6],[3,-27],[-25,-13],[-26,2],[9,-8],[-13,-13],[-19,3],[-13,25],[-27,24],[-21,3],[-34,24],[-4,9],[14,16],[11,-4],[16,-18],[24,2],[10,8],[-4,14],[-11,1],[-28,20],[11,7],[16,-9],[3,8],[-13,12],[33,5]],[[2287,9448],[-13,-11],[-23,-4],[-12,7],[34,10],[14,-2]],[[2423,9449],[18,-8],[8,5],[45,-7],[-28,-33],[-12,-21],[-14,-14],[-33,4],[-13,-4],[10,-16],[-18,-22],[-29,-6],[-2,33],[-11,9],[-2,60],[11,2],[1,14],[44,9],[25,-5]],[[1623,9476],[28,-12],[41,-10],[46,4],[58,-41],[-3,-6],[-28,-9],[-76,-37],[-3,-15],[-14,-8],[-13,1],[-3,-32],[-7,-11],[-22,-7],[-9,5],[-11,-12],[-27,-10],[-26,36],[-34,14],[-14,0],[0,10],[14,22],[9,4],[-4,18],[17,2],[-12,9],[14,21],[16,15],[-10,9],[-14,28],[87,12]],[[2118,9518],[-3,-12],[-30,4],[15,17],[18,-9]],[[2378,9537],[25,-20],[2,-24],[-5,-11],[-41,1],[-43,18],[23,30],[25,8],[14,-2]],[[2325,9539],[-16,-17],[-5,9],[21,8]],[[2164,9558],[-14,-12],[-20,-1],[7,9],[27,4]],[[2380,9546],[-17,10],[11,3],[6,-13]],[[2157,9563],[-38,-10],[11,8],[27,2]],[[1732,9567],[5,-3],[-22,-28],[-10,-5],[-22,5],[20,18],[29,13]],[[2805,9567],[0,-15],[-16,-3],[16,18]],[[2149,9575],[-6,-11],[-43,0],[2,8],[47,3]],[[2113,9595],[25,-12],[-38,-5],[-7,16],[20,1]],[[2266,9598],[21,-11],[7,-58],[-18,1],[14,-20],[-11,-7],[-47,-3],[-20,3],[-11,19],[33,20],[-52,-5],[-33,-7],[2,14],[20,10],[-6,28],[18,3],[35,-31],[7,21],[-30,12],[15,9],[23,0],[13,-10],[20,12]],[[2213,9601],[-38,-8],[20,9],[18,-1]],[[2508,9589],[-10,-2],[-15,15],[17,6],[8,-19]],[[1981,9607],[-3,-11],[20,-20],[-11,-11],[22,-7],[-10,-10],[27,5],[12,10],[31,-10],[1,-18],[-15,-30],[-28,-8],[-21,7],[-19,-7],[-5,8],[-25,-11],[-22,-4],[-24,-12],[-34,-10],[-29,0],[-27,17],[52,17],[27,0],[19,13],[-36,-6],[-3,5],[-44,-9],[-5,24],[-10,-23],[-35,-6],[-55,16],[12,13],[30,0],[31,14],[-30,-8],[-32,0],[10,12],[57,5],[-39,0],[-12,12],[23,10],[10,12],[36,1],[7,-17],[28,5],[33,-21],[14,-22],[62,-1],[6,7],[-32,17],[18,11],[-30,11],[18,11],[15,19],[15,0]],[[1840,9610],[3,-10],[-34,3],[31,7]],[[2354,9618],[44,-6],[16,-16],[46,3],[26,-13],[-26,0],[59,-9],[-2,-7],[-52,-1],[30,-6],[28,-18],[2,-16],[14,11],[11,-8],[26,6],[13,-9],[59,10],[21,10],[23,-5],[16,6],[39,-3],[40,-18],[6,-11],[-25,-15],[16,1],[10,-9],[-23,-7],[-1,-11],[-29,0],[-12,-6],[-33,5],[-7,16],[-11,-16],[-84,-5],[-53,2],[2,20],[-21,-15],[-21,-3],[-30,10],[-10,-4],[-19,9],[1,10],[-13,14],[11,38],[-14,8],[-14,21],[-17,-6],[-37,-3],[6,7],[-27,3],[-11,14],[-18,4],[15,6],[-15,7],[13,6],[32,-1]],[[1774,9644],[20,-9],[-25,-7],[-2,-15],[13,-14],[-30,-8],[-9,-17],[-20,9],[5,24],[-19,-6],[-1,-22],[-34,-26],[-19,-3],[-7,19],[-15,-12],[-46,8],[9,15],[31,5],[9,14],[22,7],[15,17],[27,15],[26,1],[18,-6],[32,11]],[[2491,9653],[17,-10],[-11,-14],[-30,11],[0,13],[24,0]],[[2083,9641],[18,-11],[-11,-7],[-23,12],[-14,25],[13,0],[17,-19]],[[2350,9662],[51,0],[13,-7],[-11,-10],[-70,0],[-6,13],[23,4]],[[2196,9660],[-42,-1],[0,9],[21,1],[21,-9]],[[1824,9675],[20,-11],[-15,-6],[-27,14],[22,3]],[[1955,9679],[-35,-12],[21,-5],[-3,-16],[-52,-10],[-31,11],[3,23],[51,10],[46,-1]],[[1933,9718],[31,-15],[-4,-11],[-50,5],[-52,-7],[-5,8],[40,8],[40,12]],[[2308,9715],[18,-10],[40,-9],[-15,-7],[9,-16],[-51,-11],[-22,18],[22,2],[-33,10],[-10,12],[7,18],[35,-7]],[[2120,9752],[22,-6],[10,-21],[25,12],[58,-29],[-8,-16],[22,-13],[0,-11],[-25,-6],[-19,5],[-12,19],[-45,10],[-50,-6],[-10,18],[38,-3],[1,15],[-18,11],[-27,-9],[10,11],[-26,2],[4,16],[50,1]],[[2237,9796],[21,-8],[-5,-17],[-36,22],[20,3]],[[2423,9866],[56,-44],[40,-1],[1,-15],[22,9],[22,-2],[19,-26],[-9,-26],[20,9],[23,-2],[24,-19],[-46,-14],[-69,-50],[-26,25],[15,-26],[-24,10],[0,-11],[-49,4],[-22,17],[34,3],[-45,2],[-28,21],[25,12],[79,3],[-58,1],[0,12],[-36,-11],[-3,7],[-33,-6],[-14,15],[27,4],[-31,3],[-21,14],[-4,14],[53,-6],[21,9],[-36,-4],[-32,9],[14,17],[41,2],[7,8],[-33,3],[17,15],[39,0],[7,9],[-28,8],[41,-2]],[[3064,9969],[92,-13],[-63,-13],[33,0],[64,14],[63,-22],[36,-2],[8,-17],[-85,-27],[-75,-6],[11,-7],[-78,-18],[137,21],[-4,-9],[-119,-45],[-9,-11],[-28,-4],[-23,-32],[-31,-8],[-32,7],[7,-13],[-52,-10],[-85,-2],[20,-4],[80,-3],[-1,-11],[-35,3],[-9,7],[-57,-2],[56,-5],[-45,-3],[55,-3],[-14,-6],[38,-1],[8,-15],[-22,-5],[-30,2],[38,-10],[-14,-14],[-35,-13],[-43,0],[19,-17],[-14,-13],[-47,-6],[-38,9],[-17,14],[5,-14],[18,-8],[57,-7],[-10,-14],[19,-6],[18,11],[7,-22],[-21,-10],[-5,7],[-22,-15],[-42,-11],[8,17],[-36,5],[-6,-7],[-40,2],[-13,10],[-6,-17],[-23,-1],[-61,10],[-4,-7],[-37,4],[-15,10],[-1,17],[33,15],[23,-1],[15,8],[-21,5],[-15,25],[29,7],[27,-6],[22,-23],[54,-3],[27,35],[-39,-27],[-38,10],[15,39],[-21,-13],[-21,5],[-35,-4],[1,19],[24,20],[44,7],[35,-5],[56,1],[-53,4],[-30,6],[11,9],[-23,27],[-37,6],[0,32],[75,-4],[67,-35],[-7,16],[-44,23],[80,9],[54,8],[-44,0],[94,17],[-62,-3],[-2,9],[57,26],[-37,-9],[-40,-28],[-44,-11],[-53,-5],[27,11],[-48,2],[1,-13],[-55,-1],[-26,5],[26,19],[85,11],[-93,-8],[-33,-21],[-58,14],[99,12],[30,12],[-43,-8],[-98,-8],[-15,8],[12,11],[45,14],[-57,-12],[12,13],[-22,4],[-21,-8],[-14,7],[27,11],[83,15],[87,-6],[-56,12],[43,5],[-12,10],[30,1],[59,-23],[-11,12],[82,-19],[-75,24],[18,17],[41,-8],[-28,15],[47,-2],[16,12],[41,-3],[44,-11],[-31,15],[35,4],[54,-3],[10,-8],[24,12],[91,2]],[[5255,7927],[0,0]],[[5255,7927],[0,0]],[[5255,7927],[10,-8]],[[5264,7905],[2,-12]],[[5290,7882],[-2,-13],[-10,-7],[4,-15],[-6,6],[-12,-4],[-2,10],[-5,0],[-1,-14],[-5,-6],[-1,-18],[-7,10],[2,5],[-11,9],[0,13],[-10,-11],[1,-8],[-9,-12],[-8,4],[-13,-4]],[[5195,7827],[-7,15],[0,14]],[[5188,7856],[-5,6],[-8,-4],[-3,-9]],[[5172,7849],[-4,7],[2,10],[8,9],[0,11],[7,4],[12,28],[8,-5],[5,10]],[[5210,7923],[14,-1],[9,5],[4,9],[9,-9],[9,0]],[[3101,2016],[-9,-10],[13,-7],[6,-18],[-2,-7],[-8,14],[-15,-2],[2,19],[-18,-5],[-1,-4],[-14,10],[3,5],[39,9],[4,-4]],[[3116,2021],[14,-1],[7,-9],[-5,-12],[-7,7],[-9,-6],[-8,1],[-2,15],[10,5]],[[3041,2018],[7,-9],[-19,2],[-1,8],[13,-1]],[[3069,2021],[8,-5],[-19,-3],[-1,8],[12,0]],[[3013,2074],[7,-1],[8,-15],[-5,-7],[-8,10],[-4,-3],[-2,16],[4,0]],[[3003,2080],[6,-2],[-5,-24],[-11,16],[0,7],[10,3]],[[3044,2081],[2,-8],[-9,4],[3,-17],[-9,10],[-1,10],[8,1],[-2,10],[6,7],[2,-17]],[[2972,2103],[2,3],[22,-21],[-6,-2],[-14,-18],[4,15],[-9,1],[-7,-7],[1,12],[-8,1],[3,17],[12,-1]],[[2925,2147],[15,-16],[8,0],[21,-22],[-10,3],[-11,14],[-13,-1],[-10,22]],[[3093,2028],[0,-1]],[[3093,2021],[-12,-3],[-17,9],[-13,-4],[-23,10],[-10,10],[-17,-8],[-1,12],[8,-7],[10,12],[7,-9],[6,12],[-2,12],[20,-15],[7,5],[13,-4],[10,-11],[3,8],[-28,18],[-4,19],[24,15],[-1,8],[-25,-6],[-6,8],[1,17],[9,1],[0,8],[12,7],[2,13],[6,4],[5,-11],[16,0]],[[2952,2165],[-2,-17],[-9,0],[-2,7],[13,10]],[[2921,2176],[8,-2],[-6,-7],[-2,9]],[[2938,2182],[8,-11],[-5,-6],[-3,17]],[[2920,2209],[3,-4],[-3,-19],[-5,7],[5,16]],[[2943,2211],[3,-10],[-9,5],[6,5]],[[2925,2234],[1,-8],[-9,1],[8,7]],[[2931,2257],[2,-13],[-14,-1],[-1,9],[9,-2],[4,7]],[[2924,2263],[1,-11],[-8,7],[7,4]],[[2906,2275],[8,0],[-10,-15],[2,15]],[[2931,2276],[3,1],[5,-22],[-5,0],[-6,13],[3,8]],[[2908,2302],[14,-5],[0,-6],[-18,-9],[1,12],[7,-5],[-4,13]],[[2903,2329],[8,-14],[-12,3],[4,11]],[[2914,2359],[5,-2],[0,-12],[-9,10],[4,4]],[[2906,2359],[2,-6],[-9,-5],[7,11]],[[2925,2377],[5,0],[2,-27],[-3,-27],[3,-13],[-9,-10],[-4,6],[1,25],[-4,-21],[-7,11],[-2,25],[13,-3],[2,12],[-7,18],[10,4]],[[2906,2392],[1,-9],[-7,-5],[-2,13],[8,1]],[[2924,2406],[4,-8],[2,-18],[-14,4],[-1,6],[9,16]],[[2913,2413],[9,-4],[-1,-11],[-7,-2],[-5,19],[4,-2]],[[2907,2415],[7,-32],[-6,0],[0,16],[-5,-5],[-3,20],[7,1]],[[2921,2430],[3,-17],[-11,6],[-1,6],[9,5]],[[2945,2427],[4,-6],[-19,2],[7,7],[8,-3]],[[2914,2436],[-3,-8],[-5,6],[8,2]],[[2924,2545],[-1,-11],[-10,7],[11,4]],[[2936,2556],[-5,-9],[0,15],[5,-6]],[[2955,2556],[-6,-2],[3,11],[3,-9]],[[2948,2591],[3,-16],[-7,2],[-6,12],[10,2]],[[2946,2594],[-9,-4],[3,9],[6,-5]],[[2946,2613],[2,-4],[-11,-6],[-4,10],[13,0]],[[2974,2623],[6,-4],[-12,-23],[-4,-1],[-5,16],[7,2],[-1,11],[9,-1]],[[2948,2662],[3,-7],[-11,0],[8,7]],[[2945,2775],[11,1],[5,-30],[-8,-2],[-4,-15],[9,-10],[-6,-5],[6,-13],[-7,-2],[2,-14],[-17,3],[-3,4],[7,21],[-1,36],[4,8],[2,18]],[[3098,2168],[-21,9],[-7,-4],[-3,-12],[-8,-1],[-27,-20],[-3,-19],[-1,-36],[-7,-5],[-24,11],[-10,15],[5,11],[15,1],[10,5],[6,18],[-5,1],[-22,-19],[-5,6],[-7,-20],[1,-10],[-20,22],[9,0],[-1,20],[14,1],[13,9],[14,0],[-2,5],[-21,3],[-19,-19],[1,-11],[-6,-4],[-8,6],[6,5],[-9,6],[9,1],[2,11],[-11,-5],[0,29],[6,-2],[15,16],[9,-1],[0,13],[-7,-6],[-15,13],[10,-15],[-6,-4],[-4,-13],[-8,7],[0,17],[-9,7],[-1,13],[6,2],[1,13],[-6,-6],[-7,4],[-1,17],[11,-2],[-1,9],[-6,-4],[-5,21],[-13,14],[9,8],[1,26],[3,6],[-5,9],[0,44],[10,11],[-11,13],[-3,13],[21,-4],[6,-13],[5,5],[-10,27],[-1,-6],[-21,1],[-2,12],[9,-2],[-7,11],[6,12],[5,0],[6,11],[-6,2],[-3,12],[-11,0],[-1,-5],[-11,14],[4,11],[-13,-16],[2,-11],[-6,-3],[-4,19],[13,13],[3,10],[12,11],[0,11],[14,3],[6,-14],[-1,-8],[7,-4],[-7,-18],[4,-3],[5,16],[4,49],[8,10],[-3,20],[4,-1],[14,13],[1,15],[-14,13],[4,39],[-1,17],[9,12],[-3,14],[0,18],[5,2],[-3,15],[5,3],[4,-15],[0,27],[-8,-3],[-4,6],[8,12],[-10,13],[-3,-13],[-12,-6],[-7,4],[2,7],[-5,11],[-2,27],[5,20],[1,37],[9,7],[4,19],[1,19],[-9,38],[2,30],[-6,26],[1,22],[9,-3],[5,16],[0,18],[4,-4],[5,42],[6,9],[-1,15],[6,18],[5,6],[1,15],[4,12],[1,31],[6,21],[4,4],[1,12],[-4,23],[6,5],[4,37],[-4,9],[1,25],[-5,52],[0,24],[2,12],[7,5],[2,44],[-5,10],[-1,19],[6,11],[4,20],[0,18],[3,22],[4,2],[-1,30],[4,5],[2,15],[2,41],[-2,11],[2,19],[6,8],[-1,24],[-2,5],[1,62],[3,17],[-6,0],[1,25],[6,1],[4,33],[0,23],[2,25],[2,3],[0,24],[-3,10],[0,37],[2,6],[-1,31],[-5,51],[0,21],[-2,8]],[[3044,4127],[12,4],[4,9],[0,26],[9,9]],[[8073,6343],[8,-9],[1,-20],[-9,-13],[-7,-43],[-4,0],[-5,-15],[-9,-1],[-2,-11],[-14,6],[-14,12],[-1,42],[10,19],[8,9],[-1,10],[7,-3],[5,9],[8,-6],[10,10],[8,-9],[1,13]],[[8066,6398],[4,-5],[-8,-2],[4,7]],[[8393,6916],[2,-7],[-8,4],[6,3]],[[8386,6994],[-10,4],[-11,15],[6,2],[9,-11],[8,-5],[-2,-5]],[[8689,7778],[-2,10],[-10,6],[-11,-7]],[[8666,7787],[-4,7],[-12,-22],[-11,-4],[0,-9],[6,-40],[-2,-28],[3,-6],[-5,-31],[-19,-10],[3,-13]],[[8625,7631],[-8,13],[0,9],[-9,7],[-4,-13],[-1,-19],[-14,-5],[-1,-10],[-7,-10],[-26,-3],[8,-20],[-3,-13],[-30,7],[-2,12],[-9,1],[-12,-34],[-9,-16],[-6,0],[-8,-10],[-16,-14],[-14,-21]],[[8454,7492],[-5,-13],[-6,-5],[-9,3],[-11,-3],[-28,-28],[-3,-9],[-8,-11],[-3,5],[-7,-13],[-10,-4],[0,12],[15,8],[-10,29],[6,0],[-2,11],[12,12],[11,27],[-3,13],[-22,14],[-12,-7],[0,-7],[-10,-13],[-4,-16],[-14,-7],[-17,-19],[-1,-19],[-10,-15],[-10,0],[-7,-8],[-11,11],[-6,-6],[-5,-28],[5,-14],[10,-13],[14,-4],[7,5],[12,-25],[-7,-1],[-2,-21],[10,-12],[13,1],[2,11],[10,10],[3,9],[12,10],[11,-8],[0,-6],[9,-7],[34,-4],[-7,-15],[3,-13],[-9,-5],[-5,9],[-28,-23],[-6,3],[4,-11],[-7,-1],[0,-17],[-11,-5],[2,8],[-8,2],[2,-13],[-7,-22],[-8,-4],[-7,-26],[-5,-3],[1,-16],[12,-14],[17,-12],[6,-38],[11,-36],[-1,-21],[15,-16],[0,-13],[11,-10],[4,-16],[-8,1],[-9,9],[-10,-3],[-4,11],[-11,2],[-5,-7],[-7,4],[-3,16],[-6,2],[3,-11],[11,-13],[16,4],[2,-9],[7,-5],[8,-15],[9,-9],[6,-12],[2,-13],[-9,-2],[-12,-10],[-8,-11],[-5,-15],[6,-2],[6,9],[6,-1],[8,-19],[13,-6],[-13,-19],[7,5],[0,-22],[-4,-6],[-5,3],[1,-27],[-5,-3],[5,-23],[-5,2],[-4,-10],[-3,12],[-9,-28],[-8,-17],[-3,-23],[-6,-4],[-1,-11],[-9,-7],[-1,-8],[-5,9],[-4,-6],[5,-6],[2,-11],[-5,4],[2,-10],[-5,-15],[5,-3],[-3,-18],[-4,0],[6,-17],[-11,10],[-4,-8],[5,-14],[-9,1],[-3,-9],[3,-10],[-10,0],[4,-9],[-3,-8],[-6,3],[-5,-5],[-2,8],[-5,-13],[3,-11],[-5,-4],[-1,-10],[-6,-1],[-7,-13],[-4,1],[-5,-14],[-6,5],[0,-9],[-10,-21],[-1,-10],[-6,1],[-13,-12],[-7,6],[0,-11],[-14,8],[-5,-13],[-6,11],[-5,-7],[4,-8],[-4,-3],[-2,9],[-5,-3]],[[8172,6482],[-4,-2]],[[8168,6480],[-7,-3],[-2,17],[-3,-1],[-2,15],[-6,-8],[6,-17],[0,-15],[-2,-9],[-10,20],[7,-19],[-10,-14],[-5,1],[-13,-12],[-10,3],[-11,-15],[-25,-8],[-3,-10],[-6,-1],[-7,-13],[5,-7],[-1,-13],[7,-9],[-4,-10],[-13,-2],[-1,10],[-7,25],[3,28],[5,0],[0,8],[-8,1],[-2,14],[-1,-16],[-12,1],[0,6],[-9,2],[-9,13],[2,-16],[-6,7],[0,-8],[-9,-5]],[[7999,6420],[-7,10],[-9,-4],[-12,14],[1,6],[-10,2],[0,14],[-4,7],[0,14],[5,0],[0,16],[-14,0],[-18,12],[-7,14],[-14,-13],[1,-9],[-14,-14],[-3,8],[-6,-8],[0,-9],[-11,16],[-4,-12],[-5,11],[-7,-21],[-5,10],[-13,9],[-4,-20],[-3,0]],[[7836,6473],[-13,3],[-4,-12],[1,-10],[5,-15],[0,-39],[-5,6],[-9,-2],[-2,20]],[[7809,6424],[-2,12],[-7,-6],[-3,-8],[-8,-4],[-2,5],[-5,-6],[-2,13],[-4,3],[-1,19],[-14,5],[-6,-1],[0,16],[4,5],[-1,14],[6,11],[-5,13],[-8,-2],[-7,5],[2,6],[-6,40],[6,9],[-9,-3],[-13,1],[-14,-14],[-2,5],[5,10],[-1,18],[-4,0],[0,17],[7,8],[-2,12],[4,11],[2,-3],[6,10],[0,13],[6,-3],[3,13],[7,6],[-4,6],[5,33],[0,29],[-2,31],[-7,4],[-1,-9],[-7,20],[0,16],[-8,13],[-9,9],[-5,-18]],[[7703,6808],[-7,9],[-4,-3],[-7,15],[-7,1],[5,6],[-4,17],[-9,21],[-12,-9],[-6,0],[-6,-9],[-9,4],[-9,11],[-8,-6],[-3,-16],[-9,-6],[-6,-8],[-7,-1],[-9,-16],[-12,-14],[0,-11],[-9,-9],[-12,-5],[-8,2]],[[7468,6756],[-4,12],[3,18],[-1,10],[-6,5],[-13,-14]],[[7447,6787],[-8,2],[-4,-5],[-15,1],[-3,7],[-14,9],[-4,-11],[-9,10],[-3,-11],[-2,13],[-6,7],[-16,3],[2,17],[-4,3],[-7,-6],[-9,11],[-7,12],[-2,16],[-5,5],[-13,-7],[-9,26],[-9,2],[-9,15],[-10,8],[-1,15],[-14,5],[-11,-23],[-7,11]],[[7248,6922],[-11,15],[-10,6],[1,9],[-14,15],[-4,-3],[-9,13],[-5,16],[-9,-8],[-2,12],[4,5],[-4,7],[2,15],[-9,14],[-2,20],[9,4],[6,-16],[10,8],[7,13],[-5,14],[0,12],[-7,3],[-8,16],[-3,33],[8,8],[0,7],[-10,12],[-9,5],[-8,41],[1,9],[-7,0]],[[7160,7227],[-18,1],[-11,8]],[[7131,7236],[-5,6],[0,8],[-13,-4],[-4,10],[1,27],[-7,15],[-9,1],[0,7],[-8,7],[-7,-2],[-9,4]],[[7080,7327],[7,10],[-8,13],[3,7],[-5,17],[-1,26],[-12,9],[-6,0],[-2,-9],[-6,3],[-4,16],[4,9],[-6,12],[1,14]],[[7045,7454],[8,8],[-3,9],[4,18],[11,3],[10,14],[3,10],[11,-4],[8,11],[4,-20],[18,4],[9,13],[0,10],[5,15],[18,-2],[11,5],[5,-2],[8,19],[26,23],[27,15],[-1,8]],[[7227,7611],[1,3],[-3,23],[3,11],[9,6],[-7,5],[13,6],[-4,13],[2,7],[-11,37],[0,32],[5,5],[-18,8],[7,9],[21,5],[23,13],[3,-9],[13,3],[7,-7],[4,17],[-11,7],[7,21],[9,47],[5,14],[0,14],[24,-13],[21,1],[4,-10],[13,13],[7,0],[5,9],[-4,41],[4,25],[25,10],[4,10],[0,17],[4,6],[12,-1]],[[7424,8009],[15,5]],[[7439,8014],[-4,-17],[9,-8],[-2,-9],[16,-10],[2,-12],[14,-12],[11,1],[7,-11],[9,3],[11,-21],[0,-11],[15,-34],[1,-11],[-5,-14],[3,-17],[-7,-13],[-2,-16],[6,-17],[6,2],[16,-9],[23,-4],[11,2],[23,-8],[6,-13],[7,0],[14,-19],[9,-5],[11,2],[-2,-16],[6,-3],[9,-41],[12,-19],[2,-11],[23,4],[63,-13],[14,6],[49,-12],[7,-15],[29,-11],[18,-15],[23,7],[0,-12],[13,-5],[6,10],[44,30],[36,10],[20,-3],[20,4],[25,19],[15,29],[18,12],[10,13],[-9,18],[-7,23],[11,33],[5,4],[13,-1],[5,-10],[14,-6],[13,-3],[16,16],[14,24],[6,-3],[23,5],[15,18],[-1,7],[11,24],[6,3],[15,-1],[1,13],[9,-4],[16,12],[12,-3],[3,5],[14,-8],[11,-1],[5,6],[-4,23],[-18,25],[0,6],[-10,7],[-6,11],[-10,5],[-12,-3]],[[8270,7946],[-7,-13]],[[8263,7933],[-5,-6],[-13,13],[-17,-1],[-11,-9],[-7,10],[-2,13],[8,8],[-1,12],[25,79]],[[8240,8052],[16,-12],[14,-6],[12,9],[13,17],[12,1],[7,6],[1,14],[-4,6],[8,27],[7,10],[1,11],[8,23],[16,14],[3,17],[-4,7],[3,13],[-8,5],[-12,-1],[22,37],[12,1],[26,11],[19,0],[11,6],[28,-11],[4,-9],[20,-1],[17,-13],[23,-49],[-3,-10],[6,-23],[6,-9],[1,-20],[10,-19],[1,-23],[7,-6],[-2,-23],[5,-9],[11,-7],[20,2],[7,-14],[13,-3],[9,-7],[11,-17],[12,0],[-4,-13],[6,-8],[2,-13],[-4,-13],[7,-20],[15,2],[13,-5],[17,3],[3,9],[12,14],[12,-1],[6,9],[18,8],[9,-7],[-4,-13],[6,-17],[-8,-19],[-9,-6],[-4,-38],[-5,-13],[2,-9],[-11,-22],[-1,-15],[-8,-8],[-2,-21],[-8,-3]],[[4913,5477],[0,-1]],[[4913,5476],[0,1]],[[4925,5729],[-2,-26],[3,-1],[4,-47],[-8,-15],[-6,-39],[-7,-28],[2,-31],[2,-4],[4,-31],[5,-1],[2,-13],[-3,-14]],[[4921,5479],[-10,3],[-3,-4],[-15,4],[-5,4],[-18,3],[-3,-9],[16,7],[6,-3],[-22,-5],[-22,-3],[-38,-25],[-5,-8],[-12,-10]],[[4790,5433],[-1,2],[0,41],[5,10],[-1,33],[-10,7],[-1,13],[-6,7],[-10,3],[-6,8],[8,15],[1,23],[-5,23]],[[4764,5618],[7,-1],[3,10],[3,27],[-7,4],[2,14],[7,0],[5,-7],[2,15],[-8,9],[1,12],[5,5],[-5,6],[2,13],[-5,-2],[-3,7],[1,32],[4,6]],[[4778,5768],[4,2],[5,14],[5,1],[3,-12],[9,-6],[2,12],[7,-1],[1,18],[8,-5],[-1,8],[5,2],[2,-15],[-2,-13],[6,-3],[3,9],[11,4]],[[5402,5930],[2,-13],[7,-8],[3,-17],[-1,-10],[5,-3],[2,-34],[-2,-3],[-1,-26],[3,-28],[9,-22],[6,-8],[-7,-3],[-9,3],[-10,-4],[-15,3],[-7,-19],[11,-27],[17,-29],[3,-1],[8,-30],[2,-17],[4,-2],[-3,-16]],[[5449,5312],[-3,-5],[2,-25],[-18,15],[-7,3],[-10,-2],[-8,12],[-9,-3],[-27,0]],[[5369,5307],[-6,5],[-48,3],[-1,-7]],[[5314,5308],[-38,0],[-4,10]],[[5272,5318],[0,12],[4,27],[-1,12],[-8,18],[-2,13],[6,11],[-2,8],[-10,-11],[-10,10],[-2,29],[-11,-4],[2,17]],[[5238,5460],[6,19],[1,41],[4,2],[10,24],[10,13],[2,14],[10,13],[3,-8],[7,1],[1,9],[8,-5],[7,-14],[1,-16],[7,1],[6,15],[-1,8],[10,15],[-2,17],[5,9],[0,9],[5,14],[1,25],[16,23],[2,34],[9,9],[2,17],[-1,14],[6,5],[3,30],[12,34],[6,-1],[11,14],[1,37],[-3,10],[-10,4],[-3,40]],[[5390,5936],[7,0]],[[5397,5936],[-1,-11],[6,5]],[[5398,5936],[1,0]],[[5399,5936],[-1,0]],[[5944,7202],[0,0]],[[5944,7202],[-3,0]],[[5941,7202],[0,0]],[[5941,7202],[3,0]],[[5905,7208],[0,1]],[[5905,7209],[1,0]],[[5906,7209],[1,0]],[[5907,7209],[-2,-1]],[[5935,7200],[1,-2]],[[5936,7198],[-7,-1],[-1,11],[-17,-6],[-3,7]],[[5908,7209],[0,0]],[[5908,7209],[3,-5],[17,6],[1,-10],[6,0]],[[5807,5072],[0,-19],[-2,6],[2,13]],[[5762,5475],[2,-10],[7,-8],[0,-10],[16,-18],[12,12],[6,1],[5,-9],[7,12],[0,6],[10,-5],[0,-12],[4,-3],[7,-21],[10,-6],[0,-14],[6,4],[2,-10]],[[5856,5384],[2,-7],[-5,-19],[3,-15],[-4,-19],[8,-3],[8,-13]],[[5868,5308],[-10,-15],[-12,-24],[0,-15]],[[5846,5254],[-7,-6],[-2,-13],[-6,-5],[0,-21],[-3,-7],[-4,-25]],[[5824,5177],[-7,-9],[-3,-12],[1,-13],[8,12]],[[5823,5155],[-1,-6],[-1,-46]],[[5821,5103],[-7,-8],[-3,-9]],[[5811,5086],[-3,1],[-7,-28],[3,-9],[-3,-10]],[[5801,5040],[4,-14]],[[5811,4991],[-2,-3],[-1,-49],[4,11],[-1,-27],[-3,-5],[0,-30],[7,-28],[-1,-13],[-4,-5],[10,-49],[6,-14],[6,-6],[6,-13],[2,-29],[7,-10],[2,-12]],[[5849,4709],[-28,-8],[-19,-7]],[[5802,4694],[-16,-35],[0,-23],[4,-2],[2,9]],[[5792,4643],[4,-21],[-1,-21],[1,-34],[-5,-16],[0,-10],[-4,-17],[4,-25],[9,-11],[6,-17],[14,-4],[-2,11],[9,5],[0,-75],[-5,1],[-1,12],[-10,-10],[-7,1],[-2,14],[-6,17],[-4,-2],[-1,13],[-5,13],[-16,7],[-6,6],[-3,16],[-5,7],[-1,12],[-5,0],[-1,-16],[-7,-8],[-10,6],[-11,0],[-4,7],[-14,8],[0,26],[-17,-7],[-8,-8],[-4,5],[3,14],[-8,6],[-4,9]],[[5366,4846],[-9,2],[-4,-10],[-7,-3],[-7,16]],[[5363,4916],[8,-9],[0,-6],[8,11],[1,14],[7,-2],[12,12],[2,-8],[-3,-7],[1,-20],[9,0],[4,6],[10,27],[8,8],[1,8],[9,4],[10,35],[-1,29],[1,13],[-1,26],[12,25],[0,7],[11,30],[8,5],[12,27],[0,21],[3,25],[3,7],[-2,14],[1,28],[5,27],[-1,34],[16,57],[0,19]],[[5333,4894],[-5,13],[0,10],[-15,33],[-5,6]],[[5308,4956],[2,12],[8,13],[5,-10],[5,-2],[4,22],[-8,9],[3,10],[-7,12],[2,7],[-1,20],[4,-5],[6,5],[4,-5],[11,5],[-1,24],[5,5],[5,-5],[5,-26],[11,-4],[9,13],[1,6],[9,-22],[5,9],[0,20],[5,5],[1,41],[-2,10],[3,23],[-9,9],[-3,11],[-5,0],[0,27],[5,19],[5,0],[6,16],[-5,18],[0,11],[-14,6],[-7,-9],[-7,-3],[-4,22],[2,23],[3,9]],[[3018,5865],[-19,-13],[-7,-27],[-6,-1],[-7,-26],[-5,-13],[-2,-37],[-11,-37],[11,7],[1,-11],[4,2],[4,-28],[8,-16],[1,-19],[-4,-7],[1,-28],[7,-3],[3,-18],[7,-5],[5,4],[18,-4],[9,7],[10,-10],[7,-1],[18,-46],[5,-2],[7,8],[11,-5],[29,8],[4,-18],[-6,-10],[0,-17],[-5,-6],[0,-66],[5,-28],[4,-2],[5,-17],[-15,-35],[7,-6],[11,-18],[0,-12],[4,-17],[5,-39]],[[3056,4939],[-8,22],[-6,-2],[-7,6],[18,59],[0,7],[-26,25],[-10,-10],[-2,7],[-8,7],[-6,-11],[-10,-7],[-8,6],[-9,-5],[-7,8],[2,12],[-2,17],[-10,6],[1,12],[-4,13],[-7,3],[-5,10],[-5,2],[-4,26],[-6,11],[-5,2],[-8,14],[-5,-2]],[[2909,5177],[-11,11],[-3,-1],[-7,15],[-8,7],[-3,-12],[-9,-1],[-19,10],[-1,14],[-7,11],[-11,5],[-13,16],[-7,13]],[[2810,5265],[-5,10],[5,13],[7,-2],[-3,14],[0,13],[7,19],[10,-5],[0,9],[9,-4],[1,22],[12,29],[0,6],[7,20],[-6,-5],[-4,5],[-1,15],[3,16],[-2,57],[-5,2],[9,12],[0,7],[-7,20],[3,5],[1,19],[-5,6],[-3,17],[-7,14]],[[2836,5599],[2,14],[13,12],[1,13],[4,2],[-6,28],[-3,3],[3,11]],[[2850,5682],[12,-31],[1,-12],[5,0],[-1,29],[-4,10],[7,5],[10,15],[6,23],[12,4],[2,15],[-3,1],[3,13],[-1,20],[3,2],[0,16],[8,14],[11,14],[9,-5],[-3,-8],[7,-4],[4,18],[1,14],[10,-3],[15,1],[6,12],[10,13],[13,10],[3,11],[-1,9],[6,1],[12,10],[8,-6],[3,-18],[-6,-10]],[[6235,4487],[1,-17],[-4,8],[3,9]],[[6207,4496],[-7,9],[1,21],[4,1],[-1,-12],[3,-19]],[[4324,6037],[-5,9],[5,2],[0,-11]],[[4340,6065],[8,-16],[-5,-7],[-4,7],[1,16]],[[4365,6116],[5,-8],[-8,-3],[3,11]],[[4303,6173],[3,-6],[-7,-10],[-3,11],[7,5]],[[2676,5812],[7,-32],[16,-36],[7,-10]],[[2706,5734],[-3,-5],[-5,7],[-2,-8],[0,-23],[6,-10],[-5,-4],[2,-19],[-6,-11],[4,-16]],[[2697,5645],[-2,11],[-5,9],[0,15],[-9,5],[5,-10],[0,-10],[-12,12],[3,27],[-8,14],[-10,11],[-11,8],[1,10],[-12,21],[-4,-7],[9,-12],[-6,-16],[-6,15],[-10,5],[-5,19],[1,16],[3,2],[1,15],[-8,5],[7,2],[0,9]],[[2619,5821],[2,7],[21,-15],[5,7],[13,-10],[0,-5],[8,-5],[8,5],[0,7]],[[2698,6446],[5,-3],[4,-17],[-10,-9],[-8,8],[7,1],[-4,15],[6,5]],[[2836,6454],[6,-1],[-1,-7],[-5,8]],[[2823,6481],[-2,-7],[-7,5],[9,2]],[[2914,6329],[-1,4]],[[2913,6333],[-1,0]],[[2912,6333],[-2,-4]],[[2910,6329],[-10,-1],[-15,6],[-21,-3],[-2,-3],[-21,-3],[6,17],[9,10],[3,9],[-8,15],[-19,-1],[-13,20],[-1,18],[-6,16],[-14,-5],[-10,8],[-8,0],[-10,11],[-5,10],[-13,-1],[-13,8],[-13,4],[-7,11],[12,1],[1,7],[-7,6],[-25,1],[-10,-21],[-7,-9],[-15,0],[-2,-15],[-3,2],[-11,-11],[1,10],[-11,-3],[10,9],[5,0],[-2,15],[3,11],[12,15],[14,8],[3,6],[19,3],[9,8],[27,-2],[3,-6],[15,2],[6,-8],[10,1],[11,-12],[9,-20],[15,-1],[13,-13],[5,-1],[7,-16],[12,-5],[-3,9],[12,-16],[5,-11],[23,-17],[0,-5],[12,2],[3,-6],[-5,-10],[2,-9],[20,1],[7,-5],[9,-19],[5,2],[2,-9],[-3,-6],[-13,0],[-10,-9]],[[3089,5876],[-11,16],[3,2],[8,-18]],[[5905,7209],[1,0]],[[5941,7202],[-6,-2]],[[5908,7209],[6,1],[0,11],[14,-4],[17,8],[15,13],[0,-3],[-19,-22],[3,-11]],[[5938,7197],[0,0]],[[5938,7197],[0,0]],[[5937,7198],[0,0]],[[5944,7202],[-3,-6]],[[5941,7196],[0,6]],[[5936,7198],[0,-1]],[[5936,7197],[-3,-9],[-16,-11]],[[5917,7177],[-8,1]],[[5909,7178],[-7,3],[-5,11],[1,9],[7,7]],[[5907,7209],[1,0]],[[5411,8112],[4,8],[9,-9],[14,-7],[6,-6],[12,-3],[-7,-8],[13,-20],[10,7],[-4,12],[9,-2],[19,-24],[4,4],[7,-7],[8,0],[8,-23]],[[5523,8034],[-8,-1],[-12,-15],[-1,-11],[-15,-14],[-9,4],[-8,-15]],[[5383,7990],[-10,11],[-13,20],[-10,9],[-7,17],[3,13],[-5,11],[6,13],[26,11],[3,8],[9,1],[13,9],[-2,8],[15,-9]],[[5255,7927],[0,0]],[[5394,8289],[0,-4]],[[5394,8285],[0,4]],[[5371,8330],[6,-3],[4,-14],[-11,-5],[-6,4],[1,12],[6,6]],[[5262,8339],[4,3],[12,-11],[5,-15],[13,-5],[11,2],[1,-9],[-10,-8],[12,-2],[8,-7],[5,14],[11,2],[14,11],[13,4],[3,-10],[10,-8],[6,2],[3,-17],[13,-10]],[[5396,8275],[3,-23],[-5,-27],[12,-14],[-3,-9],[7,-21],[-4,-20],[2,-11],[7,-4],[2,-14],[-6,-20]],[[5269,7921],[-15,12],[1,-6]],[[5210,7923],[-2,4],[8,55],[9,11],[2,10],[-16,4],[-4,7],[-18,-1],[-13,17]],[[5176,8030],[4,20],[-6,3],[-5,16]],[[5166,8104],[-3,14],[9,22],[0,9],[-8,12],[5,10],[8,-4],[10,5],[8,28],[-10,5],[2,9],[8,1],[4,18],[0,16]],[[5199,8249],[-3,19],[6,6],[21,2],[6,-18],[0,12],[8,-4],[2,20],[9,1],[-8,29],[10,6],[-9,13],[-1,9]],[[5240,8344],[22,-5]],[[6201,5844],[-9,-28]],[[6192,5816],[-6,4],[-22,-7],[-4,8]],[[6160,5821],[0,12]],[[6160,5833],[0,24],[10,22],[7,22]],[[6177,5901],[8,-6],[3,9],[9,11]],[[6197,5915],[6,-14],[2,-25],[-10,-14],[-7,-3],[-3,-11],[13,3],[3,-7]],[[3294,6081],[4,-5],[0,-15],[-3,-3],[-3,16],[2,7]],[[5312,8347],[17,-10],[-1,-7],[-10,-1],[-8,6],[2,12]],[[5348,8350],[-12,-5],[4,7],[8,-2]],[[5272,8355],[7,-12],[-8,2],[1,10]],[[5413,8363],[6,-13],[-9,3],[3,10]],[[5287,8385],[7,0],[6,-15],[-2,-16],[-19,1],[-11,24],[19,6]],[[5342,8415],[7,-3],[0,-22],[-11,-12],[8,-11],[-13,-8],[5,-3],[-8,-10],[8,-5],[-9,-11],[-4,32],[-13,0],[-2,28],[13,12],[5,-13],[14,26]],[[5247,8463],[-2,-13],[-9,0],[11,13]],[[5240,8344],[-2,32],[-14,7],[3,14],[6,5],[-4,11],[-4,-6],[0,34],[16,1],[7,12],[9,-10],[-3,15],[18,12],[-32,-9],[-5,-13],[-7,3],[11,20],[17,1],[9,6],[10,19],[20,10],[-6,-10],[3,-20],[-7,-15],[2,-23],[12,-1],[5,-6],[-6,-16],[-11,2],[-4,-20],[-20,-21],[6,-16],[-7,-5],[8,-8],[-8,-10]],[[3006,6222],[2,16],[-6,10]],[[3002,6248],[0,0]],[[3002,6248],[-1,2]],[[3001,6250],[-1,4]],[[3000,6254],[8,11],[-2,9],[4,12],[-4,32]],[[3006,6318],[3,11],[14,-4],[4,6],[11,-10],[5,1],[4,-8],[11,0],[4,-20],[6,2],[11,-3],[-2,-5],[-11,2],[0,-8],[24,-7],[12,-20],[-9,-23],[-8,11],[-17,0],[-9,4],[-8,-14],[-9,-2],[-3,12],[-9,-8],[-5,2],[1,-9],[-10,-31],[-6,8],[-4,17]],[[5238,7310],[2,-6],[-7,-4],[1,-6],[-8,-8],[6,-5],[-4,-35],[3,-10],[-1,-19],[4,-5],[-4,-8],[-3,-30],[-11,-11],[-1,-9],[-7,-8],[-1,-14],[7,-25],[0,-11],[10,-7],[6,-15],[2,-20],[19,-24],[7,-62],[6,-44]],[[5264,6924],[-7,-7],[11,-29],[5,-37],[-2,-44],[4,-19],[-5,-34],[2,-21],[3,-4],[-2,-20],[-10,-9],[-3,-10],[18,-52],[0,-25],[5,-5],[1,-10],[6,-6],[7,5],[21,-13],[3,-4],[11,-43]],[[5332,6537],[-28,-35],[-99,-122],[-24,-40],[-17,-32],[-8,-8],[-39,-15]],[[5117,6285],[-26,-9],[-5,7],[4,15],[-2,11],[1,14],[-8,8],[-12,4],[-9,16],[-2,-4],[-9,5],[-4,14],[-14,12],[1,19],[-14,18],[-28,40],[-8,9],[-36,49],[-21,30],[-8,9],[-51,70]],[[4866,6622],[-64,78],[-16,21],[-28,33]],[[4758,6754],[0,22]],[[4758,6776],[0,59],[12,18],[18,22],[7,0],[8,8],[10,0],[27,5],[6,-5],[7,21],[11,17],[11,11],[6,11],[17,8],[3,14],[-8,21],[4,4],[1,15],[23,9],[-3,14],[12,5],[35,-3],[0,17],[6,7],[-11,14],[-4,11],[2,8],[-5,10],[2,18],[-4,8],[2,24],[-4,15],[3,6],[-4,7],[2,9],[-12,19]],[[4938,7203],[8,0],[18,16],[2,12],[11,12],[8,0],[1,7],[6,-5],[8,2],[5,15],[24,22],[25,4],[10,4],[8,-2],[11,13],[3,-4],[12,2],[9,8],[21,-1],[13,-7],[8,-8],[10,11],[14,5],[6,10],[12,-12],[8,2],[0,9],[9,-1],[7,-10],[13,4],[10,-1]],[[2774,5010],[-4,-1],[0,11],[5,9],[5,-3],[-6,-16]],[[2519,5143],[-4,-14],[-5,0],[9,14]],[[2493,5154],[0,-14],[-8,2],[1,11],[7,1]],[[2459,5168],[2,-12],[-7,2],[-1,8],[6,2]],[[2478,5174],[6,-6],[-5,-6],[-4,5],[3,7]],[[2463,5192],[4,-22],[6,-11],[-1,-9],[6,-10],[-4,-13],[-13,-3],[-3,10],[12,14],[-9,21],[-3,18],[5,5]],[[2909,5177],[-10,0],[6,-20],[4,-4],[-1,-13],[2,-13],[-5,0],[-4,-27],[-15,-40],[-16,-25],[-33,-24],[-9,-21],[1,-7],[-6,5],[-1,-22],[-8,-31],[-1,-17],[-4,-3],[-1,-12],[-4,-7],[-8,2],[-5,16],[0,9],[-8,2],[-9,11],[-8,-11],[-2,5],[4,10],[-5,9],[10,10],[-2,22],[-3,6]],[[2768,4987],[11,12],[6,40],[-3,5],[-4,-11],[-1,15],[-7,-22],[-11,18],[-7,5],[5,13],[-1,22],[-2,5],[2,15],[-4,19],[10,7],[3,21],[-1,11],[12,24],[1,31],[-2,13],[12,11],[19,9],[4,15]],[[5949,6986],[2,-6]],[[5951,6980],[17,-99]],[[5968,6881],[-4,-12],[-3,-33],[-5,-16],[0,-26],[-5,-14],[-13,15],[-6,17],[-10,16],[-1,26],[-8,12],[-5,14],[-2,23],[-4,-1],[-4,-16],[6,-10],[3,-16],[0,-14],[4,-6],[14,-42],[5,-5],[5,-36],[4,-4],[5,-25],[0,-11],[11,-43],[15,-51],[8,-35],[15,-29],[-8,3],[2,-41],[3,-16],[6,-13],[10,-6],[2,-8],[16,-29]],[[6024,6449],[-78,0],[-73,0],[0,14],[-6,-14],[-57,0],[-71,0],[-46,0]],[[5693,6449],[0,421],[-3,10],[-1,24],[-4,13],[6,20],[3,17],[-4,22],[0,14],[8,16]],[[5698,7006],[1,-7],[7,-2],[12,7],[14,-6],[27,-8],[1,-7],[8,-5],[5,4],[4,-9],[21,-6],[8,-9],[13,7],[16,22],[4,-4],[4,14],[3,-3],[11,6],[-9,-10],[9,2],[7,11],[13,-9],[8,5],[-3,-15],[7,-4],[1,-7],[6,2],[0,9],[6,-10],[7,-4],[31,7],[9,9]],[[6111,6097],[3,-11],[8,-6],[-12,2],[-2,8],[3,7]],[[6177,5901],[-6,15],[-8,12],[-5,18],[-14,19],[-7,23],[-5,10],[-10,7],[-5,9],[-9,-1],[-10,9],[-10,-6],[-5,10],[-3,-8],[-13,-5],[-6,16],[-3,-1],[-6,12],[-9,-45],[-6,19],[-5,1],[-2,-8],[-10,1],[-6,-4]],[[6014,6004],[-3,51],[6,17],[1,18],[3,5],[5,24],[-2,23],[3,6],[-1,17],[12,-2],[3,17],[21,13],[5,18],[5,9]],[[6072,6220],[9,-35],[0,-9],[6,-31],[1,-24],[3,-23],[4,-4],[0,-17],[5,-2],[2,-22],[4,-1],[-2,18],[3,4],[6,-7],[0,-17],[6,-8],[3,5],[6,-3],[3,-12],[12,-6],[12,-31],[2,-9],[9,-6],[3,-12],[3,1],[4,-13],[1,-13],[4,2],[6,-13],[0,-8],[10,-9]],[[5941,7196],[-3,1]],[[5938,7197],[-2,0]],[[4503,6784],[-3,-9],[-5,3],[8,6]],[[4571,6803],[1,-17],[-5,-6],[-6,6],[2,19],[8,-2]],[[4552,6828],[-7,-11],[-2,-14],[-7,-8],[-6,21],[12,4],[4,8],[6,0]],[[4604,6803],[7,35],[5,-4],[-4,-26],[-8,-5]],[[4503,6844],[4,-7],[-3,-16],[-4,14],[3,9]],[[4626,6861],[0,-6],[-9,-10],[-1,11],[10,5]],[[4919,7214],[-1,3]],[[4918,7217],[1,-3]],[[4851,7247],[-1,5]],[[4850,7252],[1,-5]],[[5043,7435],[2,-6],[-6,-9],[-6,2],[10,13]],[[5088,7483],[0,-11],[8,0],[-7,-23],[-4,-6],[-8,7],[-3,10],[-9,0],[9,14],[14,9]],[[5114,7490],[6,-11],[-3,-3],[-12,12],[9,2]],[[5055,7627],[0,0]],[[4950,7681],[11,-8],[1,-9],[16,-8],[6,-11],[6,3],[8,-7],[20,0],[0,9],[18,-7],[3,-7]],[[5047,7630],[8,-9],[8,4],[6,-5],[12,8],[7,-3]],[[5088,7625],[4,-5],[-6,-6],[3,-18],[-4,-6],[-23,-20],[-3,-10],[-17,-6],[-15,-8],[-8,-13],[5,-6],[-8,-7],[-7,-18],[-8,-14],[-11,-32],[3,-21],[6,-15],[7,-7],[-21,-22],[-9,-36],[4,-6],[-19,-4],[-12,-20],[-2,-15],[-7,-12],[-5,6],[-7,-1],[-3,-8],[-6,4],[-42,-1],[-7,-13],[-15,-5],[-4,-16]],[[4851,7264],[0,0]],[[4851,7264],[-6,-7],[-14,11],[-9,24],[-2,18],[-12,13],[-14,2]],[[4794,7325],[-3,18],[7,27],[6,2],[3,10],[-5,0],[-6,14],[1,17],[6,6],[3,12],[-5,3],[-5,22],[-6,12],[14,0],[4,14],[-4,17],[7,8],[-1,30],[-3,6],[8,16],[6,4],[6,14],[-10,6],[0,16],[-16,2],[-2,-7],[-11,-3],[-3,3],[-13,-3],[3,13],[-4,6],[-15,-10]],[[4756,7600],[-4,7],[8,12],[-7,6],[1,13],[-6,-4],[1,10],[-7,18],[12,17],[5,-3],[11,5],[-2,4],[13,17],[6,2],[13,-13],[36,2],[14,-2],[17,-9],[16,0],[17,6],[3,-6],[11,-2],[10,4],[16,-8],[10,5]],[[5628,8557],[8,2],[12,-10],[-17,-13],[-15,-4],[-10,7],[0,13],[22,5]],[[5631,8581],[8,-10],[-15,-8],[-3,11],[-9,4],[19,3]],[[5778,8608],[4,-7]],[[5782,8601],[-5,-1]],[[5777,8600],[3,-1]],[[5780,8599],[-7,-9]],[[5773,8590],[-4,-10]],[[5769,8580],[-12,1],[-9,-8],[13,-28],[6,-22]],[[5767,8523],[5,-8],[-7,-3],[-6,-16]],[[5759,8496],[-14,5],[-8,-6],[-15,19],[-26,13],[-21,-12]],[[5675,8515],[7,26],[-10,-3],[-13,5],[-6,13],[-3,20],[6,3],[-5,14],[18,5],[6,10],[30,1],[8,10],[35,-13],[27,-2],[3,4]],[[6160,5833],[0,-12]],[[6192,5816],[-8,-22],[5,-23],[5,-13],[6,-8],[1,-13],[4,-12],[5,-4],[12,-21],[51,-34],[31,-23],[28,0]],[[6332,5643],[-21,-43],[-31,-61],[-14,-31],[-14,-34],[-5,-9],[-27,3],[-20,-14],[-8,-12],[-1,-8],[-9,-7],[-12,-2],[-7,-13]],[[6163,5412],[-19,-3],[-3,2],[-9,19],[-26,-24],[-8,-27],[-25,12],[-15,0],[-7,11],[-28,36],[-23,1],[-3,10]],[[5997,5449],[-4,8],[0,27],[-2,9],[-11,-2],[-1,9],[-5,7],[-3,12],[0,13],[-4,11],[-3,24],[-6,5],[0,8],[-6,4],[-7,24],[-9,16],[-19,8],[-1,9],[5,9],[0,17],[12,3],[2,-5],[7,3],[5,9],[-1,50]],[[5946,5727],[4,33],[3,9],[-1,22],[7,18],[6,-7],[5,5],[0,25],[4,16],[-1,14],[6,8],[2,12],[11,31],[11,1],[0,19],[3,19],[6,24],[2,28]],[[5634,8649],[-3,-11],[-9,9],[12,2]],[[5804,9158],[-14,-7],[8,-9],[-8,-12],[7,-21],[18,-7],[18,-21],[-2,-10],[-23,-30],[-1,-9],[13,-20],[11,-25],[5,-23],[-10,-1],[2,-32],[-7,-6],[6,-11],[9,-1],[-2,-23],[14,-8],[1,-11],[-17,-18],[14,-16],[21,-15],[9,-17],[-9,-24],[-25,-28],[-15,-23],[-18,-22],[-10,-7],[-27,-31]],[[5772,8670],[-31,-8],[-19,-2],[-8,-8],[-15,0],[-6,-6],[-38,-11],[-10,-6],[-10,17],[3,10],[-12,-6],[2,10],[-10,0],[-12,14],[-5,-7],[-8,8],[-2,23],[5,3],[3,23],[-5,25],[-5,3],[3,22],[-6,2],[3,27],[13,9],[-5,12],[11,-3],[13,8],[-5,9],[17,9],[3,10],[13,6],[10,18],[17,18],[5,16],[25,8],[-4,14],[2,17],[-33,19]],[[5671,8973],[-15,37],[10,20],[-12,20],[5,16],[-7,26],[5,3],[-23,26],[-21,5],[-41,32]],[[5572,9158],[12,1],[7,14],[10,-2],[21,-31],[22,-6],[20,12],[27,-15],[7,13],[18,12],[-1,17],[6,22],[15,15],[16,-2],[22,10],[17,-16],[18,-7],[6,-12],[-14,-14],[3,-11]],[[9954,4093],[-5,-13],[-7,0],[12,13]],[[9951,4184],[0,-5],[9,-12],[2,-26],[-10,-2],[-3,-6],[-10,-2],[-15,11],[-1,12],[5,7],[-2,6],[7,12],[18,5]],[[0,4252],[9987,-23],[-2,-11],[4,2],[7,14],[0,-17],[-16,-2],[-1,7],[-11,-10],[-4,-9],[-7,15],[12,16],[13,4],[2,8],[-9984,6]],[[3351,2225],[4,-3],[-17,-28],[-11,-4],[-4,-11],[-8,-4],[-11,12],[16,3],[-4,17],[12,1],[-13,15],[11,-5],[9,6],[15,-3],[1,4]],[[3368,2227],[7,2],[4,-8],[12,3],[4,-18],[-17,-11],[-16,0],[8,-4],[-12,-6],[1,-10],[-11,5],[3,-11],[-9,12],[6,17],[13,11],[-3,14],[10,4]],[[6541,3981],[5,-2],[5,-13],[-1,-13],[-7,-1],[-6,6],[-4,14],[8,9]],[[6252,4454],[4,-5],[-1,-13],[-3,-1],[0,19]],[[3483,5317],[7,10],[4,16],[2,29],[4,19],[-10,24],[-3,26],[-1,25],[4,16],[5,9]],[[3495,5491],[3,5],[3,18],[12,-10],[11,-4],[6,-6],[10,-19],[22,-31],[3,-18],[-1,-11]],[[3306,6034],[4,-11],[-1,-7],[-9,13],[1,11],[5,-6]],[[3288,6120],[2,-14],[-4,-5],[-3,22],[5,-3]],[[3295,6124],[5,-5],[-9,-3],[1,18],[3,-10]],[[5262,7641],[2,-7],[1,-27],[-4,-7],[-2,-24],[-7,-9],[-8,9],[3,8],[-7,3],[2,19],[-5,15],[3,10],[13,13],[6,-1],[3,16],[0,-18]],[[5160,8036],[5,-6],[11,0]],[[5172,7849],[16,7]],[[5195,7827],[-7,-5],[5,-18],[5,-6],[-2,-11],[-13,-6],[3,-11],[8,-5],[1,-9],[-6,-11],[4,-14],[10,-7],[9,3],[-4,-22]],[[5208,7705],[-2,-3]],[[5206,7702],[-2,-1]],[[5204,7701],[-11,-10],[-9,-23],[-14,-6],[-22,9],[0,7],[-15,1],[-7,6],[-11,0],[-5,6],[-13,-17],[-10,-6],[-3,-9],[0,-26],[4,-8]],[[4950,7681],[9,13],[6,48],[-1,11],[4,49],[11,-11],[0,8],[-14,16],[3,6],[1,26],[-20,14],[-9,18],[4,14],[-5,12],[-8,1],[-3,15],[-6,-3],[-11,11],[-18,6],[-4,6],[-11,-5],[0,7],[-9,7],[12,5],[-14,12],[1,13],[10,6],[22,0],[2,9],[12,2],[10,-20],[12,9],[16,-4],[4,8],[-1,28],[-6,8],[0,18],[16,0],[-1,-11],[5,-6],[30,-4],[8,7],[-5,3],[2,11],[10,9],[18,7],[11,15],[0,37],[10,8],[17,4]],[[4800,8771],[13,-21],[-14,13],[1,8]],[[4808,8772],[9,-11],[-11,3],[2,8]],[[9394,5584],[3,-9],[-4,-1],[1,10]],[[5308,4956],[-3,13],[-10,15],[0,9],[-17,28],[-8,19],[7,-8],[5,3],[-8,8],[-7,1],[-2,13],[-9,21],[1,10],[8,2],[-2,7],[-4,-5],[-9,16],[-1,11],[-6,18],[5,6],[2,-7],[2,12],[6,13],[1,14],[-1,27],[2,-7],[11,-2],[-8,7],[-5,19],[9,-6],[-2,24],[3,7],[4,-4]],[[5272,5240],[6,1],[36,-1],[0,68]],[[4964,8107],[6,-6],[-7,-6],[-6,6],[7,6]],[[4883,8252],[-4,-10],[-6,16],[10,-6]],[[4825,8298],[-11,-2],[-8,20],[-10,-17],[-14,5],[-9,13],[11,10],[-5,6],[11,2],[8,19]],[[4798,8354],[20,10],[13,-2],[0,-8],[18,-35],[-7,-6],[-11,-19],[-6,4]],[[4857,8375],[-7,14],[7,-1],[0,-13]],[[4830,8398],[2,-9],[-7,-6],[-6,6],[1,10],[10,-1]],[[4839,8409],[-5,-13],[-4,6],[9,7]],[[4832,8443],[11,-10],[-2,-5],[-18,-4],[7,10],[-7,5],[9,4]],[[4795,8489],[3,-18],[-4,1],[1,17]],[[4800,8503],[1,-8],[-10,7],[9,1]],[[4824,8506],[5,-20],[14,-6],[-9,-6],[-10,1],[-13,15],[11,5],[2,11]],[[4827,8543],[-5,-20],[-16,-15],[3,11],[-7,3],[2,15],[23,15],[0,-9]],[[4907,8560],[9,0],[-6,-20],[-22,-20],[6,-7],[-8,-14],[22,8],[20,-3],[16,2],[7,-13],[-6,-9],[-6,-24],[-9,-18],[-10,-8],[8,-10],[-21,-15],[9,-4],[11,6],[13,-8],[14,-19],[4,-29],[8,-27],[19,-9],[4,-13],[8,-7],[-4,-5],[11,-24],[-7,1],[12,-23],[-7,-19],[8,-7],[5,11],[20,-2],[11,-10],[3,-16],[-5,-24],[-4,0],[-14,-26],[-11,-12],[12,-3],[13,1],[-3,-14],[-11,-13],[-5,1],[-14,-11],[-12,6],[-18,-6],[-3,7],[-18,-7],[-14,-1],[2,-8],[-27,9],[-13,-6],[-2,-17],[-8,-7],[-11,10],[-16,-3],[-12,-21],[-8,10],[19,25],[7,14],[1,12],[6,-1],[2,11],[12,3],[11,-4],[11,2],[8,20],[-23,-9],[-8,12],[-13,-3],[0,6],[-10,3],[-8,-7],[-10,18],[13,6],[20,18],[2,9],[-2,24],[-17,-4],[11,12],[5,11],[27,10],[8,19],[-4,11],[5,2],[-1,14],[-9,-6],[-11,23],[9,26],[-19,-10],[-11,5],[1,-10],[-13,10],[-5,-5],[-1,21],[11,19],[-15,29],[-8,-15],[-4,-23],[-5,-1],[3,22],[-1,18],[5,24],[8,18],[-12,-13],[-5,11],[0,17],[5,10],[-6,19],[7,25],[12,0],[-5,20],[11,21],[20,-6],[26,7]],[[4912,8589],[-2,-13],[-4,10],[6,3]],[[4964,8673],[4,-27],[-15,5],[9,7],[2,15]],[[6206,7550],[-23,27],[-5,-9],[-8,5],[-9,-5],[-8,5]],[[6153,7573],[7,17],[-8,51],[-10,6],[-3,11],[-21,13],[-8,10]],[[6110,7681],[2,9],[16,0],[27,-19],[21,2],[7,-6],[6,1],[10,-14],[17,-9],[-2,-8],[6,-4],[16,12],[7,-8],[4,8],[11,-14],[11,0],[-2,-18],[8,-10],[14,-9]],[[4995,5824],[5,-3],[-3,-26],[10,-13],[3,-27],[-4,-30],[8,0],[-2,-24],[2,-8],[-4,-8],[9,-19],[-3,-11],[0,-28],[-3,-15],[4,-3],[-1,-23],[-3,-2],[6,-28],[8,-9],[5,-13]],[[5032,5534],[-7,-19],[-15,1],[-21,-17],[-12,-16],[-6,0],[-6,-7],[-11,-5],[-10,-15],[-7,8],[-24,12]],[[4913,5477],[8,2]],[[4851,7264],[0,0]],[[4683,5897],[-3,-14],[6,-9],[6,11],[4,0],[8,-17],[4,13],[5,5],[16,-11],[2,7],[14,19],[5,-5],[2,-20],[3,-1],[-1,-21],[13,-17],[-9,-23],[5,5],[6,-3],[0,-28],[9,-12],[0,-8]],[[4764,5618],[-6,8],[-1,-12],[-11,-17],[-5,13],[-4,0],[3,19],[-5,25],[0,11],[-8,10],[-7,-7],[-6,3]],[[4714,5671],[-3,1],[-5,-11],[-3,4],[5,15],[-3,10],[0,15],[-4,1],[2,13],[-15,39],[-19,0],[-17,-7],[-5,-26],[-12,-21],[-5,-1]],[[4630,5703],[4,8],[-12,23],[0,12],[-4,-2],[-6,13],[-20,29],[4,20],[-5,-10],[-3,21],[-4,-14],[-2,11]],[[4582,5814],[8,30],[12,8],[16,4],[0,19],[-6,11],[7,3],[-1,24]],[[4618,5913],[19,-3],[-1,-8],[17,-6],[3,-5],[7,6],[20,0]],[[4534,5935],[-2,17],[4,7],[8,-14],[5,5],[-8,2],[-1,13]],[[4540,5965],[29,0],[4,12],[7,2],[8,-5],[2,-7],[6,1],[4,-10],[12,7],[3,-14],[-15,-6],[-5,7],[-11,6],[-6,7],[-1,-9],[-5,-4],[-12,-1],[0,-11],[-24,1],[-2,-6]],[[4553,5826],[1,-7],[-6,3],[5,4]],[[4582,5814],[-1,9],[-5,-7],[-7,20],[5,15],[8,-2],[-9,7],[-2,-8],[-3,8],[2,11],[8,-1],[-5,6],[-6,-7],[-11,-6],[3,14],[-7,-6],[-6,6],[1,13],[-5,-2],[-7,9]],[[4535,5893],[14,7],[15,-1],[13,14],[41,0]],[[5272,5240],[-3,6],[-10,3],[3,15],[10,28],[0,26]],[[5243,5399],[5,-8],[-8,-24],[-6,4],[0,10],[4,1],[1,11],[4,6]],[[5663,7229],[13,-11],[9,5],[22,-8],[8,3],[-1,-12],[9,6],[7,-7],[-2,-5],[-25,-2],[-16,-4],[0,9],[-10,6],[-24,5],[1,17],[4,5],[5,-7]],[[5756,7245],[-1,-17],[-3,-5],[4,22]],[[5640,7268],[-4,-2],[0,12],[4,-10]],[[5784,7281],[-5,-19],[-8,-12],[-2,13],[5,13],[10,5]],[[5710,7319],[-4,-10],[-2,10],[6,0]],[[5731,7350],[-10,-7],[2,7],[8,0]],[[5748,7357],[-5,-6],[-5,6],[10,0]],[[5576,7363],[5,-7],[-4,-5],[-5,10],[4,2]],[[5690,7366],[3,-13],[-8,16],[5,-3]],[[5571,7398],[6,-23],[-8,2],[-3,14],[5,7]],[[5723,7405],[3,-16],[-4,-9],[-5,25],[6,0]],[[5651,7423],[11,-14],[8,0],[5,-29],[7,0],[0,-10],[-7,1],[-8,23],[-11,0],[-1,9],[-12,17],[-9,-1],[13,12],[4,-8]],[[5733,7446],[6,-17],[-13,0],[4,10],[-10,-4],[-2,8],[13,8],[2,-5]],[[5553,7474],[-2,-18],[-5,18],[7,0]],[[5706,7488],[-2,-14],[-9,3],[0,9],[11,2]],[[5688,7522],[-8,1],[4,10],[4,-11]],[[5586,7536],[18,3],[4,11],[23,3],[5,10]],[[5731,7585],[7,-8],[1,-14],[-8,-6],[0,-15],[-8,-13]],[[5723,7529],[-3,5],[-11,2],[-11,8],[-12,-10],[-8,6],[-9,-12],[-11,1],[4,-19],[-4,-10],[8,-6],[-1,-11],[-9,17],[-8,0],[0,-6],[10,-14],[-9,6],[-2,14],[-12,9],[0,14],[-6,-6],[-3,-28],[8,-15],[2,-11],[5,-6],[7,-17],[-11,9],[-4,-7],[6,-16],[-9,-6],[17,-11],[0,-9],[8,-2],[13,-15],[-2,-5],[2,-25],[-3,-1],[-12,22],[-15,-11],[5,-3],[0,-11],[10,-10],[-11,-8],[-11,16],[0,-8],[7,-21],[3,-20],[0,-17],[-11,22],[-5,-6],[-4,-14],[0,13],[-6,19],[-6,-1],[0,-14],[-7,3],[-3,13],[3,14],[-3,15],[-13,17],[7,16],[7,2],[6,9],[19,-10],[10,-12],[9,10],[-5,6],[-17,14],[-1,-6],[-12,4],[-12,-7],[-4,8],[-8,-4],[-5,24],[-4,-1],[-1,16],[-13,20],[-2,14],[-5,4]],[[5583,7526],[0,0]],[[5582,7531],[4,5]],[[3288,5876],[-5,-2],[5,13],[0,-11]],[[3786,8632],[-12,-4],[4,9],[8,-5]],[[3787,8645],[3,-11],[-11,4],[-4,10],[12,-3]],[[3846,8835],[12,-11],[-9,0],[-12,15],[9,-4]],[[3579,8886],[3,14],[6,-4],[-9,-10]],[[3876,8910],[-1,-14],[-10,26],[11,-12]],[[3961,8973],[2,-9],[-18,-2],[0,10],[16,1]],[[3583,9209],[9,-5],[-9,-16],[-11,9],[11,12]],[[3535,9210],[20,-7],[5,-10],[-9,-9],[-40,-14],[-19,9],[8,9],[-21,2],[3,11],[-6,23],[14,9],[30,-7],[15,-16]],[[4292,9258],[5,-6],[-22,-8],[-56,-5],[5,12],[24,14],[11,0],[27,11],[6,-18]],[[3513,9274],[-13,6],[9,10],[4,-16]],[[3537,9281],[-14,10],[21,1],[-7,-11]],[[3472,9375],[-13,-11],[-4,9],[17,2]],[[4335,9380],[22,-3],[33,-25],[-20,4],[17,-11],[-5,-9],[-50,20],[-10,8],[0,15],[13,1]],[[4354,9391],[36,-8],[-3,-13],[-17,-1],[-14,11],[-38,1],[0,5],[36,5]],[[4333,9407],[21,-8],[-47,6],[55,-12],[-48,-4],[-29,9],[13,12],[35,-3]],[[4418,9469],[11,-1],[11,-14],[-32,-5],[-18,7],[3,8],[25,5]],[[4439,9496],[13,-2],[-12,-10],[-14,7],[13,5]],[[4505,9520],[-7,-8],[21,-2],[-15,-6],[-30,-2],[2,17],[29,1]],[[4481,9596],[3,-41],[-16,34],[13,7]],[[2994,9643],[23,-5],[-21,-3],[-2,8]],[[4445,9674],[18,-11],[-32,9],[14,2]],[[4519,9788],[-33,-16],[-26,9],[49,14],[10,-7]],[[3575,9904],[-53,7],[4,13],[49,-20]],[[3722,9942],[44,-15],[-28,-11],[-44,11],[-20,15],[48,0]],[[3880,9983],[38,-14],[-47,9],[9,5]],[[4105,9998],[43,-1],[139,-17],[-12,-6],[-116,-3],[-142,-14],[100,5],[47,8],[96,-4],[39,6],[2,-18],[34,4],[72,-17],[-31,-17],[-54,-4],[-152,-7],[-81,-17],[1,-9],[30,8],[107,13],[89,-4],[-3,-12],[-44,-9],[-2,-11],[85,20],[2,14],[51,4],[11,-19],[-7,-14],[-56,-36],[-16,-18],[53,26],[58,30],[75,-8],[37,24],[53,-1],[57,-12],[13,-8],[-64,-27],[-24,0],[7,-12],[-31,-8],[-46,1],[36,-15],[-18,-11],[-40,-3],[-44,6],[-25,-22],[11,-12],[20,3],[-9,-21],[17,-12],[-27,-8],[0,-11],[-28,-2],[-11,-42],[-18,-22],[18,0],[10,17],[51,-16],[-6,-10],[-19,10],[-22,-2],[38,-26],[10,6],[21,-5],[2,-18],[-10,-12],[-35,13],[-27,-3],[-24,-13],[-13,12],[-14,-8],[10,-12],[18,1],[0,-16],[19,4],[30,-4],[6,-11],[-15,-4],[21,-14],[3,-29],[-17,-4],[-4,9],[-16,-2],[-26,17],[8,-12],[24,-14],[-8,-27],[30,-5],[7,6],[13,-11],[-18,-15],[-16,2],[-7,11],[-36,-2],[-11,-18],[9,-27],[-2,21],[9,3],[36,-10],[-7,-26],[-28,3],[-18,-14],[-36,11],[-14,9],[-1,13],[-10,-16],[-25,-4],[-17,-16],[24,-7],[-16,-14],[22,-6],[6,-12],[-19,-7],[21,1],[23,-15],[33,-16],[-17,-14],[20,9],[14,-3],[-17,-11],[2,-17],[9,14],[10,-1],[0,-35],[8,-18],[-13,-10],[-11,3],[-7,22],[-2,-22],[-19,0],[-16,10],[-9,27],[-24,13],[-15,14],[-20,5],[-16,-3],[-26,23],[-16,-2],[31,-13],[-8,-6],[26,-8],[25,1],[11,-12],[-16,-13],[-24,-7],[-44,2],[14,-7],[-11,-17],[2,-11],[40,7],[13,-6],[-17,-3],[-27,-14],[-16,-3],[34,-3],[11,16],[15,-4],[29,13],[23,-11],[25,-7],[33,0],[0,-8],[-14,0],[-4,-12],[-19,-2],[1,-10],[-13,-8],[-17,-1],[2,-9],[-26,-21],[-31,-10],[-13,-9],[-23,1],[1,-6],[-24,-7],[-9,4],[-5,-11],[-18,10],[-1,-16],[-30,-3],[-30,17],[6,-17],[-4,-12],[-11,1],[-16,-12],[-12,-33],[-13,-5],[-1,-15],[-27,-26],[-15,-2],[-14,-18],[-13,3],[-20,-12],[-17,14],[15,16],[-12,0],[-7,-21],[-14,-1],[8,-16],[-17,1],[-7,-6],[-8,9],[-14,-12],[2,-15],[-14,-14],[-10,8],[-13,-3],[1,-12],[14,-11],[-1,-13],[-13,-9],[-12,1],[3,-8],[18,-1],[7,-27],[-13,0],[6,-7],[-18,-12],[-13,6],[12,-15],[-4,-15],[-21,-8],[-6,-11],[9,-15],[-21,9],[12,-11],[9,-1],[-8,-21],[11,5],[-6,-22],[-8,-6],[7,-7],[-17,-13],[9,-6],[-3,-17],[-20,3],[20,-7],[-12,-15],[-11,5],[14,-18],[0,-9],[-29,6],[-13,-12],[-12,10],[3,19],[-9,0],[6,10],[-15,-11],[-11,20],[6,8],[-3,10],[-10,-9],[-22,-8],[3,7],[-19,-8],[-17,0],[14,12],[-20,6],[-4,9],[7,5],[-20,5],[-1,9],[-10,13],[8,10],[-10,16],[-15,2],[-8,9],[5,28],[-12,7],[15,8],[-28,-3],[-2,19],[-11,10],[3,23],[-6,8],[14,-1],[13,13],[6,16],[9,-13],[-4,16],[-11,4],[-15,-12],[2,10],[-19,-33],[-9,0],[1,29],[22,16],[-10,2],[-8,-13],[-23,50],[-12,0],[-4,23],[19,15],[18,9],[21,21],[-21,-13],[-3,-7],[-33,-23],[-9,1],[1,22],[11,11],[16,-1],[5,10],[-34,3],[-6,14],[49,13],[17,-3],[12,6],[-28,-2],[-28,-7],[-21,-2],[2,10],[25,18],[15,2],[12,-7],[24,4],[-49,5],[-24,-17],[0,18],[22,10],[-5,12],[15,-1],[16,-8],[21,2],[-6,8],[7,12],[-13,0],[9,-8],[-31,-6],[-3,7],[-15,-1],[13,14],[18,4],[23,-2],[-5,11],[7,22],[16,-8],[0,19],[-17,-7],[10,18],[-2,11],[15,4],[-8,11],[-24,0],[-25,5],[-25,17],[-22,4],[-15,18],[11,6],[48,-8],[25,-15],[24,-6],[5,11],[-14,-6],[1,16],[-24,21],[17,-6],[-5,9],[-22,-1],[16,9],[-4,6],[-19,-12],[5,13],[24,4],[-8,4],[-21,-8],[-7,9],[25,4],[-41,6],[-4,7],[-14,-11],[0,-11],[-14,-5],[-24,1],[-17,17],[17,13],[-8,8],[19,13],[-21,11],[17,5],[10,12],[-3,15],[-18,4],[4,18],[-30,38],[7,13],[-16,5],[7,11],[-21,13],[4,8],[-31,10],[-14,17],[13,3],[-7,17],[-16,-2],[-4,10],[-26,9],[-17,-2],[-4,9],[-42,5],[-31,8],[-6,-11],[-27,5],[1,-9],[-35,-1],[7,10],[-15,1],[-6,-12],[-18,11],[-7,-6],[23,-12],[-58,9],[-30,15],[36,17],[-57,7],[-26,11],[12,12],[50,5],[21,6],[50,-3],[14,9],[-19,13],[-24,-11],[-45,-4],[-29,6],[21,8],[-33,-1],[13,9],[-30,-4],[-44,23],[8,21],[91,16],[8,10],[43,9],[42,-2],[31,23],[-5,30],[-56,2],[-12,15],[39,20],[28,7],[8,12],[46,13],[44,-9],[16,6],[6,19],[-19,15],[104,24],[90,11],[24,-14],[-6,-33],[24,17],[-1,11],[85,-18],[-31,13],[44,0],[-31,12],[-15,20],[65,-8],[77,-19],[22,-14],[25,1],[-8,28],[38,-1],[-68,26],[132,2],[-157,7],[28,14],[74,4],[6,5],[54,-17],[95,1],[-42,3],[53,5],[-49,3],[0,13],[180,11]],[[2530,6098],[8,-8],[4,5],[7,-7]],[[2549,6088],[-17,-28],[-9,-9],[-2,-15],[2,-14],[-6,-9]],[[2517,6013],[-6,-1],[2,-10],[-5,-3],[-10,-17],[-1,-9]],[[2497,5973],[-15,12],[-19,1],[-9,9],[-17,25]],[[2437,6020],[3,7],[-1,33],[1,10],[11,38],[36,0],[2,20],[-7,4],[-4,17],[-8,7],[-1,7],[-9,13],[12,0],[1,33],[50,0]],[[9022,5957],[-2,-11],[-3,10],[5,12],[4,-3],[-4,-8]],[[3409,5499],[-2,-9],[4,-10],[-2,-8],[-13,-2],[-5,-8],[2,-9],[-6,-39],[4,-7],[2,-13],[5,-8],[0,-8],[10,0],[2,-28],[6,-15],[0,-8],[9,-27],[6,-5]],[[3312,5482],[-18,43],[8,14],[-2,28],[9,7],[5,-2],[11,21],[-7,0],[-5,21],[5,19],[5,3],[15,22],[-6,18]],[[3332,5676],[4,-9],[7,-3],[15,-20],[17,-36],[1,-15],[-4,-18],[1,-10],[3,13],[4,2],[10,-8],[9,-18],[2,-9],[6,-1],[5,-11],[0,-27],[-3,-7]],[[8172,6482],[5,-7],[-5,-9],[-9,5],[5,9]],[[7037,2130],[10,-6],[-7,-4],[-3,10]],[[2691,6046],[-12,-1],[-4,-8],[-12,-4],[-8,-7],[-8,2],[-3,9],[-6,-6],[-4,-11],[0,-12],[-5,-3],[-5,-13],[-6,-5],[0,-7],[-8,9],[-8,-14],[-13,-2],[2,-26],[-6,-2],[0,-10],[-11,-5]],[[2574,5930],[-4,22],[-10,3]],[[2560,5955],[3,17],[-2,12],[-6,-1],[-3,6],[-10,-8],[0,7],[-7,3],[-8,17],[-10,5]],[[2549,6088],[8,9],[7,2],[7,-7],[2,4],[12,-6],[4,3],[12,-1],[13,11],[15,-6],[11,6],[18,-9],[13,-22],[-8,6],[10,-19],[8,0],[-7,9],[9,-6],[4,-13],[4,-3]],[[5512,7634],[1,-9]],[[5513,7625],[-8,12],[-27,21],[12,-5]],[[5466,7679],[-8,-5],[-2,8],[10,-3]],[[5412,7751],[11,-14],[-10,8],[-1,6]],[[5401,7772],[0,-20],[-5,27],[5,-7]],[[5404,7789],[3,-10],[-5,-3],[2,13]],[[5458,7861],[5,-3],[18,-29],[6,0],[9,-10],[17,0],[11,9]],[[5524,7828],[3,-33],[12,-10],[-10,-3],[-1,-17]],[[5488,7656],[-12,12],[-6,13],[-14,10],[-11,-4],[-2,10],[-14,14],[-9,17],[8,5],[-15,23],[-1,23],[-9,12],[-7,2],[-3,-20],[-8,-11],[-8,20],[0,20]],[[5377,7802],[9,-3],[13,3],[6,6],[20,-9],[-2,17],[12,6],[-2,20],[9,5],[8,12],[8,2]],[[3002,6248],[-1,2]],[[2977,6260],[-12,8],[1,7],[11,-10],[0,-5]],[[3000,6254],[2,-6]],[[3006,6222],[-8,11],[-24,-5],[-11,6],[-8,0],[-6,-5],[1,-8],[-12,16],[-7,4],[2,15],[6,2],[16,-10],[24,-4],[4,8],[7,-2],[0,7],[-13,23],[1,19],[3,2],[-9,11],[-11,1],[-2,6],[8,10],[11,2],[13,-11],[15,-2]],[[5614,7970],[21,-26]],[[5635,7944],[-8,-11],[-4,2],[-13,-17],[-4,-19],[-5,-6],[-4,-21],[-6,-5],[-1,-12],[-6,-10],[-7,2],[-5,-8],[-10,-1]],[[5562,7838],[-16,4],[-11,-11],[-11,-3]],[[5458,7861],[-7,21],[-4,-1]],[[5476,7947],[6,-1],[10,-13],[15,0],[14,3],[-1,10],[7,4],[14,3],[4,7],[8,-7],[12,11],[3,13],[9,3],[9,-5],[11,3],[5,-11],[12,3]],[[8426,4574],[2,-3],[-6,-11],[-11,-6],[0,8],[6,3],[10,17],[-1,-8]],[[8386,4582],[-1,-10],[-6,2],[7,8]],[[8333,4644],[9,-18],[4,2],[10,-24],[-10,-15],[-9,5],[-5,14],[-10,12],[-15,3],[-4,11],[10,10],[20,0]],[[8473,4637],[-2,-11],[-16,-29],[-8,0],[-2,-6],[-12,-5],[-3,9],[7,6],[-5,10],[2,16],[10,18]],[[8444,4645],[2,-5],[7,4],[3,10]],[[8456,4654],[13,13]],[[8469,4667],[7,-5],[0,-8],[-6,-2],[3,-15]],[[8318,4695],[-3,-16],[1,18],[2,-2]],[[8424,4708],[1,-8],[-8,-2],[4,11],[3,-1]],[[8242,4700],[-7,-24],[3,-4],[-11,-3],[-10,6],[6,6],[-1,15],[7,13],[8,-1],[5,-8]],[[8442,4708],[-5,-4],[-10,-16],[-5,4],[7,9],[-2,6],[12,4],[3,-3]],[[8450,4700],[-5,-10],[-4,6],[11,16],[-2,-12]],[[8858,4702],[-10,-1],[7,12],[3,-11]],[[8265,4700],[-2,12],[5,2],[-3,-14]],[[8459,4715],[2,-3],[13,1],[1,-11],[-22,-6],[3,18],[3,1]],[[8550,4716],[8,-3],[-2,-6],[-6,9]],[[8276,4716],[4,0],[5,-15],[6,7],[6,-6],[8,2],[1,-19],[-18,-12],[0,10],[-7,-11],[-12,-2],[-9,-9],[-7,-2],[-11,5],[2,11],[-1,13],[12,14],[6,-8],[4,5],[6,-18],[14,4],[-6,11],[-4,1],[-6,16],[7,3]],[[8415,4713],[2,-8],[-7,-8],[2,-8],[-13,-10],[-8,1],[-9,-9],[-11,5],[-1,-7],[-12,0],[-2,6],[-7,2],[-9,-3],[-13,4],[0,11],[13,18],[19,-4],[15,-16],[15,11],[6,-12],[6,1],[0,7],[12,12],[-4,4],[3,8],[3,-5]],[[8208,4712],[5,-15],[-14,-15],[-7,13],[-11,8],[-3,14],[12,-6],[8,8],[10,-7]],[[8604,4733],[0,-14],[-5,14],[5,0]],[[8519,4741],[-6,-15],[-15,2],[-5,-7],[5,21],[11,-2],[8,7],[2,-6]],[[8857,4720],[-12,-20],[-23,0],[5,24],[6,21],[6,8],[11,6],[5,-1],[7,-11],[-5,-27]],[[8656,4770],[0,-26],[-8,-16],[-7,-6],[3,28],[10,23],[2,-3]],[[8664,4774],[1,-9],[-7,7],[6,2]],[[8166,4787],[3,-6],[-12,-8],[-3,-6],[-12,-1],[-12,5],[4,15],[32,1]],[[8204,4789],[6,-5],[-10,-1],[4,6]],[[8738,4813],[-1,-5],[-6,7],[3,6],[4,-8]],[[8733,4812],[3,-8],[-6,-16],[-7,2],[2,30],[-1,7],[9,-15]],[[7948,4837],[3,4],[13,-9],[8,1],[0,9],[9,-3],[2,-10],[7,-5],[6,2],[5,-8],[8,5],[5,-14],[2,-16],[11,-1],[10,-5],[4,4],[11,-7],[7,4],[5,-7],[7,8],[2,19],[4,5],[7,-1],[3,-15],[12,3],[12,-14],[16,1],[0,-13],[6,-8],[-2,-17],[16,-15],[12,4],[7,6],[13,-11],[-3,-41],[7,-10],[-18,4],[-20,20],[-6,-1],[-10,-8],[-9,6],[-16,4],[-2,-6],[-9,6],[-11,0],[-13,8],[-14,14],[-18,10],[-23,1],[-2,-7],[-18,4],[-11,14],[-25,5],[-4,10],[4,15],[-7,-1],[-7,10],[-20,-2],[3,10],[2,-8],[4,17],[5,1],[1,18],[5,17],[4,-6]],[[8346,4810],[-1,39],[3,-8],[-2,-31]],[[8685,4859],[3,-16],[-4,0],[1,16]],[[8737,4870],[5,-12],[1,-27],[-5,-14],[-8,8],[-1,9],[2,19],[6,17]],[[7843,4868],[-9,8],[9,-3],[0,-5]],[[8386,4889],[2,1],[2,-20],[-3,-2],[-4,10],[3,11]],[[8410,4898],[-4,-6],[0,-18],[-10,-1],[3,23],[-2,8],[11,13],[2,-19]],[[8422,4913],[0,-9],[-5,6],[-2,-24],[7,-6],[-2,-7],[-8,-5],[0,-10],[-6,-1],[-2,9],[5,17],[3,22],[0,15],[4,10],[6,-17]],[[8418,4952],[5,-5],[-3,-8],[-5,6],[3,7]],[[8564,4977],[-2,-8],[-9,-3],[3,10],[8,1]],[[8225,4951],[-3,23],[3,18],[4,5],[1,-36],[-5,-10]],[[8523,5004],[7,-6],[-2,-7],[6,-2],[0,-14],[-15,-15],[-15,15],[-5,14],[1,12],[11,5],[12,-2]],[[8598,5023],[14,-13],[8,1],[7,-8],[1,-15],[7,-11],[-1,-17],[-24,23],[-3,8],[-9,2],[-2,-10],[-15,7],[-2,8],[-6,-10],[-7,-2],[-6,20],[-4,-17],[-6,11],[8,6],[1,12],[21,0],[5,-5],[13,10]],[[7789,5006],[0,-13],[-7,21],[0,8],[6,-7],[1,-9]],[[7994,5036],[13,-12],[-2,-21],[-6,-7],[-3,11],[-8,-10],[0,26],[2,12],[4,1]],[[7782,5024],[-5,-4],[0,20],[5,-16]],[[7769,5060],[4,-12],[-4,1],[-5,11],[5,0]],[[8501,5041],[-3,3],[-3,21],[4,3],[2,-27]],[[8483,5079],[15,1],[11,-2],[-2,-3],[-24,-4],[0,8]],[[8620,5085],[2,-15],[-6,-6],[-14,10],[10,9],[8,2]],[[8458,5089],[22,-6],[0,-9],[-8,-3],[-7,2],[-10,-6],[-1,20],[4,2]],[[8762,5091],[20,-3],[6,-5],[14,-4],[-11,-5],[-15,5],[-14,12]],[[7940,5097],[5,-5],[4,-17],[0,-18],[4,-16],[14,-6],[-5,-8],[-2,-12],[4,-10],[-22,15],[0,21],[-3,4],[-1,14],[-18,4],[0,8],[7,9],[-3,5],[9,9],[2,-13],[3,1],[-2,12],[4,3]],[[8550,5100],[9,-9],[-6,-5],[-11,-3],[-5,6],[1,9],[6,8],[6,-6]],[[8421,5116],[1,-14],[3,9],[6,-1],[0,-10],[-4,-5],[-3,6],[-1,-12],[-3,18],[-6,-15],[-4,10],[3,13],[8,1]],[[8044,5127],[4,-10],[-9,-8],[0,18],[5,0]],[[7746,5129],[7,-31],[4,-7],[-2,-11],[-9,6],[-9,29],[3,13],[6,1]],[[8636,5129],[4,-8],[-2,-16],[-7,6],[-3,15],[8,3]],[[8634,5139],[-7,-9],[-4,6],[11,3]],[[8761,5145],[12,-2],[9,-20],[6,-4],[-7,-7],[-7,2],[-4,22],[-3,-4],[-6,13]],[[8536,5138],[-5,0],[3,9],[2,-9]],[[8915,5033],[0,-218],[-3,-12],[3,-17],[0,-128]],[[8915,4658],[-10,18],[-4,12],[-15,28],[-17,-5],[-3,6],[-7,-8],[-1,19],[5,19],[-4,4],[-7,18],[13,-3],[-12,8],[-4,13],[10,2],[-8,7],[1,5],[-7,13],[-3,32],[-8,7],[0,12],[-4,8],[-15,20],[-21,12],[-18,18],[-14,4],[-7,-1],[-16,20],[1,11],[-4,-6],[-5,9],[-1,-9],[-5,7],[1,8],[-6,-4],[-4,14],[-3,-5],[0,28],[6,6],[-1,9],[-6,-11],[0,-14],[-7,-21],[1,-8],[-5,-11],[-7,-3],[-6,11],[-2,14],[6,8],[-9,15],[-3,12],[-6,8],[-6,-2],[-2,12],[5,5],[10,-2],[4,-6],[9,18],[7,5],[7,-10],[8,7],[4,12],[-1,9],[-7,-8],[-11,2],[-16,-6],[-4,7],[-6,-5],[-8,11],[-4,22],[-5,11],[-9,2],[-5,-3],[-7,4],[3,13],[5,6],[0,18],[7,5],[8,0],[10,17],[8,5],[8,-1],[12,-10],[6,-11],[17,0],[5,-8],[-4,-5],[7,-22],[-1,-12],[-4,-7],[2,-39],[5,-10],[3,-17],[1,17],[5,-3],[1,-23],[5,-17],[6,-6],[11,0],[2,7],[10,16],[1,11],[9,14],[3,18],[9,-2],[14,10],[-3,16],[19,18],[4,0],[11,-13],[9,-4],[5,-10],[7,-3],[20,-21],[10,3],[16,-10],[-2,-6],[8,0]],[[7903,5160],[0,-12],[-8,7],[6,9],[2,-4]],[[8544,5159],[1,-17],[6,0],[-1,-9],[-5,6],[-5,-3],[0,10],[-5,11],[6,9],[3,-7]],[[8533,5168],[1,-14],[-4,-1],[0,14],[3,1]],[[7735,5153],[-4,0],[3,16],[1,-16]],[[7881,5163],[-8,-1],[3,8],[5,-7]],[[8633,5183],[14,-10],[-2,-13],[-6,2],[-11,13],[8,-16],[-6,-1],[-1,8],[-9,2],[-2,9],[15,6]],[[7737,5167],[-5,8],[0,8],[5,-16]],[[7904,5183],[11,-16],[-7,4],[-8,-1],[4,13]],[[7850,5240],[4,0],[7,-11],[-14,-1],[-1,20],[4,-8]],[[7861,5243],[2,-12],[-8,11],[-5,-1],[5,9],[6,-7]],[[7892,5248],[-1,-8],[-5,3],[6,5]],[[7904,5252],[2,-10],[-2,-11],[-3,13],[-6,-3],[2,9],[7,2]],[[7845,5238],[-6,7],[-1,17],[3,2],[5,-9],[-1,-17]],[[7704,5270],[3,-2],[6,-18],[6,-7],[-2,-28],[-4,1],[-3,14],[-5,7],[-8,26],[7,7]],[[7839,5273],[7,-4],[0,-13],[-10,11],[-2,10],[5,-4]],[[8473,5279],[5,-11],[-3,-3],[-6,-26],[-5,-5],[-7,-25],[-24,-11],[-11,3],[-4,10],[-24,0],[-12,-4],[-6,6],[-13,-7],[-11,7],[-10,-4],[-7,-19],[-3,-19],[3,-26],[4,-13],[5,-1],[5,-12],[2,-17],[13,1],[2,12],[8,18],[5,-3],[13,0],[1,9],[15,-2],[7,4],[-7,4],[10,6],[9,-5],[0,-20],[-3,-4],[-4,11],[-9,-3],[-8,-23],[-9,-17],[-12,-6],[-3,-12],[-10,8],[0,-8],[8,-15],[5,-3],[11,-32],[7,-26],[-5,-8],[-1,-14],[13,-17],[-1,-9],[7,-3],[0,-15],[-4,-6],[-4,6],[-14,-7],[-2,-7],[2,-12],[-12,1],[-5,9],[1,25],[3,8],[-8,7],[-13,25],[0,9],[5,10],[1,26],[-8,8],[-17,-20],[6,-16],[0,-25],[-2,-12],[1,-36],[2,-7],[-4,-14],[-1,-14],[5,-24],[-15,-2],[-4,-8],[-11,16],[0,14],[3,7],[0,18],[4,19],[0,23],[-5,19],[2,12],[-6,3],[-10,-8],[-3,14],[2,27],[-4,0],[1,13],[3,-1],[7,11],[-1,15],[3,13],[4,2],[-2,14],[0,26],[5,11],[1,11],[7,11],[1,50],[3,16],[4,4],[-1,10],[9,8],[7,-3],[6,14],[0,15],[3,3],[10,-7],[5,3],[0,-9],[5,-4],[8,2],[8,-5],[7,1],[10,-12],[4,8],[19,-6],[8,1],[10,8],[9,23],[10,19],[2,-4]],[[7825,5301],[0,-16],[-7,-2],[-2,18],[9,0]],[[8556,5309],[-6,-20],[5,-6],[0,-25],[-11,-20],[3,-8],[6,3],[0,8],[7,8],[-3,5],[3,9],[11,11],[4,-1],[-1,-29],[-11,-9],[0,-14],[11,-6],[0,-13],[-20,8],[-3,-10],[1,-20],[5,-25],[10,-24],[-11,11],[-5,20],[-5,6],[1,34],[-4,4],[-2,38],[-3,10],[4,12],[0,12],[4,16],[10,15]],[[8571,5333],[3,-7],[-3,-21],[-8,-7],[-3,16],[5,13],[6,6]],[[7663,5350],[2,-7],[14,-20],[-5,0],[-14,13],[-4,9],[7,5]],[[8268,5370],[-4,6],[4,4],[0,-10]],[[8489,5385],[-4,-3],[0,16],[4,-13]],[[8269,5423],[5,-1]],[[8274,5422],[-2,-7],[-3,8]],[[8008,5418],[2,-16],[-2,-7],[-8,11],[-1,9],[7,11],[2,-8]],[[8265,5422],[-5,1],[11,-21],[-1,-10],[-15,-1],[7,-13],[-5,-10],[11,-13],[-4,-4],[16,-37],[-8,-15],[1,-8],[7,-13],[9,-10],[10,-16],[6,-14],[-7,-9],[-16,4],[-8,12],[4,-17],[-6,2],[-6,-18],[-4,-26],[2,-2],[-3,-17],[1,-14],[4,4],[-3,-14],[4,-4],[-9,-8],[-1,5],[-7,-22],[-14,-16],[1,-8],[-9,-10],[6,1],[-2,-24],[6,0],[-2,-19],[-4,-2],[0,-18],[-5,-7],[-6,-36],[-38,-32],[0,28],[-14,23],[-6,-9],[-9,3],[0,12],[-6,-6],[-9,20],[-3,-10],[3,-3],[-14,-16],[-9,6],[-7,-11],[-4,-1],[1,27],[-4,17],[0,-10],[-4,-4],[-7,5],[-9,-9],[-7,6],[-2,-5],[-3,12],[-7,-8],[-6,62],[-5,8],[3,3],[2,20],[-4,16],[-7,11],[-7,4],[-2,-4],[-7,21],[0,34],[5,-2],[-5,14],[-5,4],[0,20],[3,50],[7,9],[1,14],[9,9]],[[8045,5303],[-3,-16],[3,-12],[17,-35],[7,-8],[8,3],[2,6],[10,4],[7,-6],[9,2],[8,7],[2,18],[8,7],[15,0],[-2,-8],[9,-3],[11,-8],[7,12],[16,-1],[5,12],[1,13],[3,2],[-1,20],[12,14],[-4,12],[1,10],[5,10],[6,-1],[4,65],[5,11],[6,-4],[3,5],[7,-4],[10,4],[13,0],[10,-12]],[[8523,5442],[2,-13],[-3,-14],[-4,-2],[2,32],[3,-3]],[[7652,5506],[11,-6],[4,-11],[10,-6],[12,4],[10,-8],[9,6],[11,-21],[3,-16],[6,-9],[0,-16],[13,-17],[3,-9],[6,-5],[20,-26],[7,-15],[-1,-13],[3,-5],[3,6],[6,-23],[14,-21],[-2,19],[6,1],[8,-16],[1,-14],[10,-6],[12,-18],[1,-19],[7,-15],[13,-3],[5,-14],[-13,-13],[8,1],[12,15],[11,-13],[2,-18],[-7,0],[-6,-21],[7,-4],[-5,-5],[1,-12],[4,-12],[9,-1],[7,-6],[6,2],[2,-16],[1,-28],[4,-14],[7,-5],[-1,-9],[8,-5],[13,-1],[0,-13],[5,-6],[0,-10],[6,-4],[2,-14],[-6,-14],[-1,-15],[3,-5],[-4,-25],[2,-13],[0,-26],[-2,-53],[-7,2],[-7,19],[-3,-6],[0,-12],[-8,6],[-9,11],[-1,-4],[5,-19],[-4,-3],[-3,11],[-10,17],[-5,19],[-7,10],[-11,12],[-28,46],[-1,17],[-17,23],[-8,29],[-9,16],[-5,17],[2,7],[-9,34],[0,8],[-5,3],[1,11],[-9,30],[-9,14],[0,13],[-4,9],[-9,10],[-5,1],[-1,21],[-9,45],[0,20],[-3,0],[-7,14],[-5,2],[-9,14],[-7,6],[-2,27],[-5,5],[-4,14],[-3,5],[-8,23],[-11,6],[-8,21],[-6,5],[-13,28],[-5,27],[-3,6],[0,17],[8,2]],[[4872,8298],[-4,5],[8,13],[4,-7],[-8,-11]],[[7606,5598],[2,-16],[-2,-11],[-5,16],[0,9],[5,2]],[[7571,5804],[0,-12],[-5,0],[-1,12],[6,0]],[[7583,5964],[1,-29],[-3,1],[1,-36],[-3,-2],[1,-13],[-5,-6],[2,-9],[-2,-25],[-5,13],[5,34],[0,29],[2,1],[0,26],[6,16]],[[7448,6428],[-4,1],[4,13],[0,-14]],[[7248,6922],[-16,-24],[0,-12],[-5,-9],[1,-17],[-7,-14],[9,-14],[9,-1],[7,-10],[9,-6],[2,-11],[15,-17],[6,3],[11,-14],[7,2],[1,-11],[12,-4],[18,0],[8,4],[6,-8],[8,-2],[1,-18],[8,-3],[10,-14],[9,7],[7,-16],[4,5],[9,-3],[11,-11],[7,7],[9,-11],[13,6],[7,-5],[4,17],[0,13],[-6,11],[2,24],[3,21]],[[7703,6808],[0,-19],[-13,-15],[0,-11],[7,-21],[-7,6],[-4,10],[-21,-9],[-2,-10],[-14,-19],[-9,-5],[-2,-21],[4,-12],[-4,-6],[0,-10],[-10,-18],[-2,-16],[3,-3],[-2,-22],[-3,-2],[-6,-22],[-5,-27],[-11,9],[-11,-2],[4,-18],[-2,-30],[-9,-21],[2,-34],[-3,1],[-1,-12],[-8,9],[-3,-10]],[[7473,6457],[-4,-11],[5,-18],[-6,2],[-4,-6],[-2,22],[-5,-3],[-1,-16],[-7,0],[-1,26],[-8,-18],[-21,-14],[-8,-19],[6,-28],[-7,-10],[-4,-16],[-4,-3],[-6,-16],[-19,-10],[-5,9],[-5,-13],[5,1],[-15,-26],[-9,-26],[-13,-29],[-9,-8],[-6,-10],[-9,-22],[-21,-21],[-6,-16],[3,-5],[-1,-14],[-6,-9],[-11,-8],[-10,4],[-4,-3],[-1,-20],[-10,-15],[-1,10],[-6,-1],[-9,-10],[-3,-17],[-2,-18],[3,-24],[-1,-30],[3,-29],[-5,-4],[7,-9],[0,-14],[-3,-37],[-8,-24],[-4,-26],[2,-16],[0,-46],[1,-17],[-15,0],[-2,-15],[-8,-21],[-2,-13],[5,-9],[-20,-12],[-5,-12],[-2,-22],[-2,-8],[-16,-16],[-7,6],[-11,22],[-7,19],[-6,25],[-3,32],[4,-10],[0,11],[-6,7],[-2,18],[-6,30],[-1,14],[-9,36],[-9,17],[-6,25],[-6,34],[-2,33],[-8,39],[-1,14],[-7,14],[-2,12],[-4,5],[0,15],[-3,4],[-4,24],[-4,8],[-5,29],[-1,37],[-5,30],[-6,45],[1,7],[-3,22],[-1,23],[-3,24],[2,33],[4,12],[-2,36],[-3,-4],[-3,11],[2,16],[12,11],[-16,-3],[2,14],[-2,14],[9,5],[-13,4],[-2,-15],[-8,-7],[8,-18],[-6,-25],[-17,-17],[-14,-11],[-5,0],[-10,9],[-11,17],[-15,33],[-15,29],[0,10],[7,1],[0,-9],[14,12],[3,-3],[9,7],[7,23],[-10,-1],[-9,-10],[-13,5],[-11,10],[-9,15],[-4,19],[-6,14]],[[6893,6556],[5,7],[10,0],[0,19],[13,-3],[11,2],[5,-7],[6,0],[3,8],[13,7],[0,-8],[6,-3],[9,10],[-4,12],[3,3],[-5,27],[-6,14],[0,17],[-10,1],[-6,14],[2,35],[-9,2],[-10,11],[1,17],[10,20],[6,22],[7,12],[6,1],[4,-16],[4,-2],[9,7],[20,8],[0,9],[8,16],[5,21],[16,16],[9,29],[3,22],[12,8],[4,7],[-2,10],[6,11],[6,19],[10,12],[-4,2],[3,17],[-2,24],[7,10],[14,8],[1,10],[-8,8],[-11,2],[0,14],[-9,2],[0,13],[-9,10],[4,22],[-5,5],[1,10],[7,10],[-9,1],[1,16],[-5,3],[4,19],[13,6],[7,-5],[16,-2],[11,-9],[11,11],[17,3],[3,10],[5,1],[4,11]],[[7140,7205],[20,22]],[[4825,8298],[2,-37],[6,-29],[-6,-16],[-4,-28],[-10,1],[-8,-4],[-12,0],[-5,-10],[-7,0],[-4,-8],[-7,-1],[-12,-14],[-20,0],[-11,-8],[10,14],[-20,-4],[12,13],[-11,-6],[-7,10],[13,14],[-15,-2],[5,10],[13,-2],[-1,11],[8,12],[-10,-5],[12,12],[5,21],[10,8],[-16,-2],[-14,9],[-3,9],[6,13],[0,24],[-5,4],[22,4],[23,-3],[-5,4],[12,9],[3,8],[-15,-1],[-2,7],[10,6],[2,18],[15,2],[6,-6],[4,17],[13,-9],[-9,-9]],[[6560,6732],[-4,-9],[-5,0],[-16,-12],[0,7],[13,7],[13,13],[-1,-6]],[[6357,7396],[3,-38],[4,-9],[9,-7],[13,-2],[9,-5],[2,-13],[21,-24],[23,-9],[43,18],[16,-4],[-3,30]],[[6497,7333],[8,-1],[16,11],[1,13],[9,13],[9,7],[24,0],[3,10],[17,-4],[5,4],[3,-17],[23,-10],[8,-9],[10,3],[11,-10],[10,-21],[13,-7],[8,-22],[23,0],[2,-31],[-3,-8],[4,-5],[0,-15]],[[6689,6902],[14,-27],[0,-8],[6,-21],[10,-20],[14,-8],[5,-10],[5,-1],[-1,-12],[2,-18],[-1,-26],[11,2],[4,-8],[-4,-17],[0,-11],[-12,0],[-12,-7],[-2,-10],[-11,-7],[-7,-59]],[[6710,6634],[-5,-8],[-10,9],[-12,4],[-1,9],[-5,-6],[-24,3],[-2,4],[-12,-4],[-6,10],[-7,2],[-14,-2],[-4,8],[-17,5],[-4,19],[-4,42],[-6,17],[-11,3],[-8,-2],[-5,-8],[-9,-4],[-3,-11],[-6,2],[-13,-17],[-11,5],[-3,7],[-17,0],[-8,16],[-10,6],[-13,16],[-4,16],[-12,11],[-9,-1],[-8,6],[-9,35],[0,12],[-8,13],[2,10],[-6,0],[1,16],[-15,30],[0,10],[-5,6],[-11,-12],[-2,9],[-7,-1],[-9,13],[8,-1],[0,9],[-9,-8],[1,-20],[-11,-4]],[[6347,6908],[-3,15],[-11,14],[0,31],[-9,0],[0,23],[4,21],[-9,22],[-5,19],[-6,-1],[-14,21],[-16,15],[4,5],[-4,15],[-11,15],[-5,22],[3,14],[-4,8],[2,8],[6,-3],[-2,9],[7,21],[7,2],[1,7],[-6,16],[1,10],[6,2],[-4,9],[-6,-3],[-14,14],[-3,21],[-5,0],[-1,18],[-6,5],[2,12],[-3,7]],[[6243,7322],[0,10],[-6,6],[1,17],[-10,17],[6,20],[-4,0],[-3,45],[-5,13],[11,4],[4,19],[7,-7]],[[6347,6908],[-13,5],[-3,-3]],[[6331,6910],[-7,6],[-9,0],[-6,-5],[-8,-33],[-9,-20]],[[6292,6858],[-5,-2],[-46,8],[-62,91],[-11,18],[-47,49],[-34,10]],[[6087,7032],[4,8],[-7,3],[0,11],[-8,51]],[[6076,7105],[4,3],[43,44],[14,11],[7,22],[1,40],[3,8],[-2,23]],[[6146,7256],[0,0]],[[6146,7256],[0,20],[3,10],[13,5],[15,26],[-1,3]],[[6176,7320],[6,2],[6,13],[9,0],[10,-7],[12,-2],[8,4],[1,-18],[11,12],[4,-2]],[[4554,9014],[7,-14],[12,-7],[12,13],[-4,-20],[10,2],[-2,-20],[12,4],[0,-8],[21,-10],[-4,-10],[6,-8],[-13,-25],[-13,-4],[-2,-15],[-24,-8],[-39,-26],[-31,-6],[-1,-11],[-23,-7],[-27,8],[-12,0],[-28,20],[-42,-4],[4,9],[14,4],[10,10],[2,11],[-13,-6],[-9,29],[-32,1],[-11,-4],[-3,8],[23,2],[15,8],[25,-2],[-21,7],[22,16],[-39,7],[-20,-9],[-18,6],[7,8],[12,-7],[-8,15],[17,-5],[-9,12],[10,17],[20,-8],[-5,7],[9,16],[11,-11],[25,-14],[-2,-19],[9,-29],[0,13],[9,15],[9,-10],[5,13],[-5,20],[9,3],[13,-22],[6,-1],[-1,19],[22,6],[16,-26],[-6,27],[10,-1],[10,-11],[12,14],[6,-6],[13,3],[-3,19],[15,2]],[[5993,7068],[-6,-5],[0,-15]],[[5987,7048],[-10,8],[-6,-14],[0,-19],[6,-9],[-7,-11],[-2,-14],[10,1],[5,6]],[[5983,6996],[0,-9]],[[5983,6987],[0,-6]],[[5983,6981],[1,-8]],[[5984,6973],[-8,-34],[0,-21],[-6,-33]],[[5970,6885],[-2,-4]],[[5951,6980],[8,18],[-2,4]],[[5957,7002],[7,21],[6,44],[5,21]],[[5975,7088],[10,0],[1,9],[8,10]],[[5994,7107],[-1,-9],[3,-19],[-3,-11]],[[5434,7386],[-12,-29],[-3,-25],[6,-18],[-6,-11],[1,-8],[-10,1],[-8,6],[-3,10],[-7,8],[-7,-1],[-25,27],[-10,1],[-4,6],[0,19],[7,6],[6,-6],[4,10],[7,1],[10,-13],[9,4],[9,-2],[17,10],[4,-4],[12,11],[3,-3]],[[5256,7557],[8,-6],[8,-34],[-5,-14],[3,-13],[-2,-30],[-6,-24],[-10,6],[-5,-19],[-8,0],[-7,17],[5,39],[-4,1],[2,23],[-5,17],[-4,0],[2,16],[8,-2],[9,6],[11,17]],[[5380,7862],[-9,-16],[7,-7],[-4,-8],[3,-12],[8,-10],[-5,-1]],[[5380,7808],[1,7],[-18,1],[-3,-5],[-16,-12],[-4,2],[-1,-16],[9,-13],[-6,-7],[-2,-13],[2,-18],[8,-16],[9,-7],[19,-21],[12,-54],[18,-28],[12,-11],[25,0],[4,-9],[-8,-15],[19,-17],[13,-7],[14,-18],[13,-8],[0,-6],[12,-15],[2,-10],[-4,-18],[-9,6],[-5,23],[-11,0],[-14,11],[-11,-25],[-2,-21],[9,-5],[9,-11],[-1,-29],[-11,-1],[-5,-8],[1,-18],[-8,-10],[-8,-20],[-10,4],[0,15],[5,3],[3,12],[-3,8],[9,5],[2,12],[-4,8],[-2,21],[-4,6],[-2,20],[-7,11],[-5,-5],[-12,13],[2,8],[-6,18],[-8,1],[-5,8],[-7,3],[-10,22],[-10,1],[-8,-3],[-5,11],[-7,2],[-12,24],[-10,10],[-8,18],[-10,5],[-3,12],[-9,9],[1,6],[-8,2],[1,18],[-7,17],[0,14],[-5,13],[-7,1],[-16,17],[-15,5],[-14,-19],[-3,-11],[-17,-6]],[[5344,7711],[0,0]],[[5345,7596],[0,0]],[[2849,6246],[15,-3],[3,-8],[12,-7],[4,-14],[-9,-3],[-10,6],[-1,-7],[-6,3],[-1,-11],[-7,10],[-8,-1],[-7,10],[-3,10],[-8,2],[5,12],[10,5],[11,-4]],[[6087,7032],[-4,-6],[-57,-30],[15,-28],[13,-29],[-9,-10],[-4,-18],[-21,-8],[-7,-22],[-12,-17],[-31,9]],[[5970,6873],[0,12]],[[5984,6973],[-1,8]],[[5983,6987],[4,0],[0,25]],[[5987,7012],[0,36]],[[5993,7068],[7,-5],[10,-16],[12,-3],[54,61]],[[8563,6721],[-5,-10],[-7,-5],[-4,-21],[0,20],[7,8],[-3,7],[7,-1],[4,12],[1,-10]],[[8603,6820],[-13,-15],[0,9],[11,11],[2,-5]],[[8624,6937],[5,-5],[-7,-8],[2,13]],[[8639,6942],[-5,-5],[6,22],[-1,-17]],[[8616,7056],[0,-12],[-6,-7],[1,18],[5,1]],[[8578,7069],[-1,-10],[-6,2],[7,8]],[[8638,7135],[3,-16],[7,-3],[9,6],[1,-15],[-5,-9],[10,1],[0,-17],[5,-2],[-11,-22],[-6,-38],[0,-16],[-3,-14],[-7,5],[1,-11],[-12,-13],[2,20],[-5,12],[-2,-4],[0,-22],[-9,5],[4,18],[-5,12],[1,21],[2,-2],[8,19],[-2,11],[3,12],[-5,15],[-8,2],[7,-19],[-6,-11],[1,11],[-10,-10],[-6,18],[1,10],[4,-14],[5,-1],[-1,10],[-11,11],[1,10],[6,-2],[18,22],[2,9],[6,4],[7,-3]],[[8726,7162],[8,-9],[5,1],[-1,-13],[4,-10],[-10,-11],[-5,-23],[-8,15],[-5,2],[-13,-11],[0,-7],[-7,-11],[-1,-16],[-10,0],[3,9],[-6,1],[-6,31],[11,14],[2,17],[6,6],[5,-10],[10,2],[3,14],[8,9],[7,0]],[[8747,7160],[-3,-8],[-3,8],[8,15],[-2,-15]],[[8595,7181],[-2,-23],[-3,4],[1,16],[4,3]],[[8845,7375],[1,-10],[-6,-6],[-1,17],[8,13],[-2,-14]],[[8923,7564],[5,3],[-1,-34],[2,-14],[8,-11],[5,-22],[4,-26],[-5,-14],[0,-12],[-7,-6],[-5,-25],[1,-17],[-6,9],[-7,-6],[-3,-24],[3,-14],[-2,-39],[-5,-8],[-5,-19],[-1,-20],[8,-27],[-11,-7],[-2,-21],[-16,-17],[2,30],[5,11],[-8,0],[-4,-12],[1,-16],[-7,11],[-8,-5],[0,-21],[-9,-16],[-1,25],[-6,4],[-6,-11],[-4,-18],[-17,5],[-15,-6],[7,9],[-13,1],[0,16],[-5,-3],[-3,-22],[9,-9],[1,-10],[-7,3],[-10,-9],[0,-10],[-6,-8],[-3,-15],[-5,-7],[-10,5],[-1,8],[-9,11],[3,8],[-3,14],[10,17],[-2,9],[-11,-4],[-6,7],[-7,0],[-20,-18],[-10,1],[-3,-9],[-6,2],[-15,-9],[-1,9],[-8,-6],[-2,-24],[-11,13],[-16,-7],[-4,7],[-3,-8],[-1,25],[3,5],[12,-1],[3,10],[7,5],[17,28],[7,7],[-1,9],[17,8],[5,-8],[24,6],[7,7],[11,-2],[8,7],[-1,-12],[13,-4],[12,10],[-3,18],[5,16],[7,8],[10,28],[-1,26],[11,10],[6,1],[-3,-13],[-9,-5],[4,-6],[-2,-13],[10,-6],[3,10],[21,13],[10,12],[10,29],[14,15],[1,16],[9,23],[3,24],[4,10],[1,17],[-4,11],[-5,-3],[7,19],[1,11],[-5,13],[5,10],[7,3],[1,26],[9,-5],[3,-20],[3,9],[8,-6],[3,19],[-13,-5],[3,23],[10,-10]],[[8944,7799],[15,-24],[4,-13],[19,-27],[11,-7],[0,-6],[12,0],[3,-7],[13,-4],[15,25],[1,-8],[-7,-17],[-1,-9],[8,-28],[8,6],[-4,-12],[-6,0],[-8,-10],[-27,-4],[-11,-14],[-8,-20],[-3,-23],[-8,11],[-14,9],[-8,11],[-12,9],[-8,-3],[-12,-15],[-9,15],[-5,0],[-6,-18],[12,-8],[13,-20],[-13,-1],[-8,-7],[-6,-13],[-7,10],[5,14],[-3,17],[-7,6],[3,26],[12,7],[5,11],[-5,13],[6,8],[8,-9],[10,-3],[7,10],[-3,22],[9,14],[0,22],[3,6],[1,20],[-6,23],[3,12],[9,3]],[[6762,7807],[-15,8],[-3,11],[1,13],[12,14],[11,-3],[7,-11],[1,-13],[-4,-11],[-10,-8]],[[7140,7205],[-9,31]],[[6651,7782],[-20,19]],[[6631,7801],[12,18],[8,-37]],[[7227,7611],[-6,13],[-15,4],[-12,17],[-14,6],[-14,0],[-19,2],[-14,5],[-13,-5],[-16,1],[-3,-6],[-13,2],[-12,8],[-12,13],[-21,-10],[-5,-27],[3,-9],[-22,14],[-27,9],[-10,-1],[-10,-13],[-5,-15],[3,-3]],[[6970,7616],[-6,-3],[-4,-11],[-4,5],[-9,-16],[-20,-15],[0,-5],[-10,-5],[0,-10],[-13,-17],[1,-19],[-4,0],[-13,13],[4,14],[-5,7],[-33,-3],[-5,20],[-2,30],[-14,0],[2,57],[-8,-7],[-8,26],[-7,5],[-10,19],[-12,-10],[-37,4],[-32,-8],[-23,38],[-2,12],[-28,28]],[[6668,7765],[0,34],[-2,9],[-7,-1],[3,20],[17,-5],[8,16],[12,7],[2,14],[-11,2],[-3,9],[-13,3],[-8,-7],[4,-13],[17,0],[2,-11],[-4,-6],[-24,2],[-2,12],[-7,0],[7,-14],[-3,-17],[-8,-6],[-4,5],[4,13],[-15,-3],[-6,-23]],[[6627,7805],[-73,-31],[0,-212]],[[6554,7562],[-14,-3],[-15,32],[0,6],[-20,23],[-20,-3],[-14,-9],[-15,-21]],[[6456,7587],[-1,20],[6,15],[3,22],[-15,9],[-8,-3],[-6,18],[-12,0],[1,23],[-4,4],[-8,33],[-17,9],[1,17],[16,-1],[4,-6],[16,-2],[-17,20],[12,28],[9,5],[22,0],[11,-6],[10,2],[-15,10],[0,6],[9,18],[4,40],[-8,19],[-13,2],[-10,-10],[-16,14],[-9,3],[-12,-11],[-9,-2],[-18,-21],[-13,2],[-2,-14]],[[6367,7850],[-9,9],[-10,5],[0,12],[6,-6],[7,6],[-9,19],[-4,15],[-14,23],[-11,0],[-7,5],[-1,-9],[-7,7],[0,26],[-18,8],[8,30],[8,10],[-7,14],[3,28],[12,12],[-1,14],[9,9],[22,-37],[13,11],[-5,20],[0,13],[20,17],[0,15],[11,0],[15,12],[6,17],[5,6],[14,-3],[1,-11],[11,-1],[6,12],[11,6],[5,-16],[23,0],[9,-7],[1,-9],[7,-1],[6,-13],[10,-7],[-3,-16],[8,2],[1,24],[10,-13],[16,-15],[13,11],[11,20],[18,0],[5,-11],[11,1],[1,13],[22,-4],[0,-11],[10,-11],[16,-3],[1,-9],[7,4],[5,18],[9,-10],[15,-1],[17,10],[2,19],[4,6],[-7,11],[-10,1],[-3,8],[-16,3],[3,8],[-12,4],[11,15],[7,1],[10,11],[-10,23],[22,16],[17,-3],[1,7],[-13,9],[-14,3],[2,12],[-6,8],[5,11],[-6,3],[12,10],[4,-6],[43,7],[25,14],[25,5],[9,-4],[-1,10],[7,7],[15,-1],[15,6],[33,8],[13,6],[2,13],[10,0],[2,9],[8,-4],[-1,9],[8,-6],[13,0],[14,-11],[8,9],[14,-12],[1,-18],[6,-3],[-1,-23],[-6,0],[6,-13],[3,6],[11,-4],[10,5],[3,9],[9,-14],[-3,-13],[9,3],[-4,10],[11,-1],[3,-8],[11,-2],[8,7],[-3,-12],[-6,1],[-6,-17],[6,-8],[13,12],[14,-10],[1,12],[9,9],[7,-2],[12,11],[-2,4],[31,15],[12,8],[-7,-19],[-8,1],[3,-9],[34,-36],[7,-11],[42,-97],[12,-38],[15,7],[-1,14],[6,6],[15,-7],[-3,-15],[9,2],[2,-13],[11,3],[6,-4],[17,5],[18,12],[13,-7],[11,-20],[0,-15],[23,-14],[-2,-7],[9,-19],[19,-1],[6,-7],[12,20],[0,-10],[12,-22],[7,-9]],[[6163,5412],[-17,-50],[-9,-17],[0,-175],[1,-39],[15,-39],[0,-7]],[[6153,5085],[-6,-15],[-9,-4],[-4,-20],[-5,-9],[-5,0],[-9,-13],[2,-12],[-3,-18],[-6,-12],[-3,-25],[-4,-11],[-7,-30],[-6,-3]],[[6088,4913],[-21,33],[-19,27],[-5,13],[4,6],[-1,14],[-100,116]],[[5946,5122],[3,12],[-4,7],[0,10],[4,7],[9,-1],[-2,6],[11,4],[-4,11],[-10,-6],[2,-6],[-9,7],[-3,12],[1,12]],[[5944,5197],[4,21],[7,12],[2,15],[9,9],[2,18],[3,6],[0,26],[-3,18],[2,3],[-14,40],[-2,17],[2,13],[-8,5],[-3,24],[-2,2]],[[5943,5426],[11,23],[15,14],[14,9],[4,-7],[2,-16],[8,0]],[[7045,7454],[-13,-5],[-15,2],[-9,-5],[-2,-6],[-5,10],[-7,-7],[-2,12],[-8,8],[-12,-11],[-8,-1],[-4,11],[-36,-5],[-2,14],[7,20],[14,6],[18,-12],[1,7],[8,8]],[[6970,7500],[12,3],[11,-7],[9,15],[8,-3],[0,14],[7,-6],[4,9],[10,8],[-13,3],[-5,9],[-9,-1],[0,10],[-8,0],[-6,22],[-1,-10],[-6,-2],[0,-13],[-6,-1],[-12,7],[-4,14],[-4,-4],[-9,10],[8,7],[22,29],[-8,3]],[[6976,7489],[-6,4],[2,-14],[4,10]],[[6993,7480],[0,0]],[[6961,7477],[0,0]],[[7901,5783],[-6,7],[-11,2],[-7,-4],[-3,5],[5,13],[0,15],[-4,5],[-3,-16],[-9,2],[-2,38],[-3,3]],[[7858,5853],[0,7],[-6,22],[0,22],[-6,7],[0,21],[-3,7],[-2,25],[6,0],[10,26],[1,11],[9,8],[12,5],[9,-5],[5,3],[11,-2],[5,4],[6,-3],[2,-10],[4,8]],[[7921,6009],[3,-14],[13,-1],[3,-9],[6,-1],[2,7],[-6,19],[7,7],[6,-2],[3,6],[8,-14],[4,0],[8,11],[5,2],[2,10]],[[7985,6030],[0,-14],[-3,-2],[-2,-19],[3,-10],[0,-10],[5,-22],[-5,-20],[4,-24],[-2,-15],[-2,-6],[-4,5],[-8,-14],[-8,-7],[-8,-1],[0,-17],[-11,7],[-4,-13],[-1,-15],[9,-13],[1,-17],[-9,3],[-3,10],[-10,-2],[-3,-7],[-7,6],[1,-11],[-6,-13],[-9,0],[-2,-6]],[[627,5299],[5,-18],[-8,8],[3,10]],[[8522,7115],[1,-14],[-17,-6],[-2,8],[5,8],[13,4]],[[8508,7172],[1,-8],[-7,2],[6,6]],[[8575,7196],[-1,-14],[-5,11],[6,3]],[[8518,7361],[8,22],[5,6],[27,0],[7,17]],[[8565,7406],[7,-27],[14,-31],[6,-25],[4,-25],[-2,-7],[-1,-33],[4,-6],[-2,-25],[-9,-23],[-18,0],[-1,-15],[-3,6],[-17,1],[-2,-20],[-4,14],[0,-13],[-5,-9],[-3,13],[-6,-5],[-3,-11],[-4,3],[-4,-10],[-2,15],[-7,2],[0,9],[6,-7],[2,11],[-4,1],[-2,18],[2,17],[6,9],[-4,4],[8,7],[-7,10],[5,1],[-5,11],[-1,31],[-3,8],[3,12],[7,-1],[-6,42],[4,3]],[[5598,7616],[-9,-9],[-3,6],[-10,-8],[0,-11],[-5,0]],[[5557,7633],[8,15]],[[5565,7648],[9,17],[-2,6],[14,-7],[8,-19],[10,-5],[-6,-24]],[[6338,6909],[5,-15],[-4,-7],[-5,12],[4,10]],[[6345,6826],[-22,0],[-6,27],[-25,5]],[[6331,6910],[7,-26],[-6,2],[-7,-12],[10,-1],[2,-19],[8,-28]],[[7836,6473],[2,-9],[8,-12],[6,-22],[2,9],[5,-5],[0,-9],[-2,-23],[7,-19],[15,-11],[2,8],[9,10],[5,-4],[9,-13],[-1,-9],[-6,-3],[9,-6],[0,-8],[7,-2],[0,-11],[-2,-10],[-9,-12],[-8,6],[-4,-15],[-6,-7],[18,-21],[4,-8],[9,-5],[5,-6],[-2,-12],[6,-14],[5,0],[7,-30],[13,-24],[9,-17],[0,-18],[4,-11],[5,5],[4,-14],[8,-12],[4,-1],[-1,-8],[-6,-5],[2,-12],[7,-8],[5,-12],[-5,-33]],[[7921,6009],[9,11],[0,20],[1,5],[-3,11],[3,6],[2,24],[-5,5],[0,13],[-11,7],[0,8],[-8,15],[0,29],[2,20],[-3,9],[-7,7],[-6,14],[-7,24],[-18,8],[-2,-10],[-9,-15],[-9,-6],[-16,16],[-4,-9],[-19,-26],[-4,-7],[-5,6],[3,19],[4,9],[0,17],[-3,3],[5,14],[0,15],[3,7],[-3,6],[-1,19],[2,7],[-12,2],[-2,-7],[-7,0],[-3,9],[3,29],[-5,15],[-6,-5]],[[7780,6353],[0,15],[7,14],[4,-1],[0,13],[6,16],[3,0],[9,14]],[[5975,7088],[14,52],[1,19],[9,12],[0,7]],[[5999,7178],[13,-3],[4,-23],[-9,-14],[2,-8],[-6,2],[-6,-12],[3,-5],[-6,-8]],[[4790,5433],[-19,13],[-21,22],[-9,12],[-21,40],[-9,19],[-12,7],[-1,10],[-14,13],[-3,12]],[[4681,5581],[3,14],[6,12],[15,23],[0,16],[8,8],[1,17]],[[5693,6449],[0,-115],[-27,0],[0,-28]],[[5666,6306],[-66,66],[-3,4],[-45,45],[-34,36],[-45,45],[-30,31],[-27,-26]],[[5416,6507],[-22,-22],[-20,33],[-42,19]],[[5264,6924],[10,7],[11,30],[-5,31],[6,17],[5,1],[10,22],[19,18],[-2,10],[1,34]],[[5319,7094],[10,-6],[12,-14],[15,-2],[14,6],[6,-6],[17,-5],[8,-12],[20,-6],[5,-13],[0,-14],[7,-25],[4,-7],[17,-9],[10,0],[18,-8],[23,-18],[3,-7],[18,-22],[8,0],[14,14],[10,24],[1,18],[-6,24],[0,16],[3,12],[15,24],[14,13],[10,1],[5,7],[21,-3],[21,-14],[-1,-18],[6,-6],[19,-7],[2,-5],[25,-2],[5,-18]],[[3307,5973],[-4,11],[5,10],[-1,-21]],[[7235,5735],[7,-13],[17,-49],[5,-36],[5,-8],[4,-24],[0,-20],[-2,-22],[-12,-22],[-22,-17],[-9,5],[-4,7],[-7,43],[-1,50],[1,40],[2,10],[0,17],[6,17],[-2,7],[4,10],[6,1],[-14,10],[2,7],[7,-3],[7,-10]],[[5798,3530],[6,-12],[10,-10],[3,-14],[-4,-17],[-5,-7],[1,-10],[-8,-9],[-13,-4],[-5,-7],[-4,-22],[-8,2],[-16,35],[-5,22],[8,6],[12,35],[8,2],[4,10],[13,8],[3,-8]],[[5582,8366],[-1,0]],[[5581,8366],[1,0]],[[5652,8289],[0,9],[-14,16],[-6,-1]],[[5632,8313],[-3,6],[5,24],[-8,11],[-15,1],[-21,9]],[[5590,8364],[-6,32],[0,16]],[[5584,8412],[8,9],[22,11],[15,-4],[8,3],[29,-5],[4,-4],[22,8],[5,-12],[15,-2],[26,-28]],[[5759,8496],[14,-14],[-6,-26],[14,-17],[0,-23]],[[5584,8412],[-2,19],[2,24],[10,12],[0,15],[8,15],[22,11],[18,-21],[4,-17],[12,-7],[19,15],[-2,37]],[[3249,6221],[-2,2]],[[3247,6223],[2,-2]],[[4851,7247],[2,-14],[14,-21],[11,-5],[19,8],[6,-5],[15,7]],[[4919,7214],[2,-9],[17,-2]],[[4758,6776],[-3,0],[1,-30],[-18,-3],[-7,-11],[-16,-2],[-9,7],[-10,1],[-13,-7],[2,-15],[-4,-6],[-8,-25],[-8,-3],[-4,-23],[-3,-30],[-3,-13],[-6,-12],[-12,-16],[-6,-22],[-16,-16],[-4,-13],[-6,-53],[0,-16],[-12,-26],[1,-7],[-4,-14],[-11,-4],[-22,4],[-18,-1],[-12,-4]],[[4527,6416],[1,21],[4,20],[10,13],[4,26],[5,11],[-2,5],[13,42],[-4,0],[8,12],[11,26],[5,4],[5,17],[0,22],[10,45],[0,9],[9,16],[7,4],[10,14],[10,53],[7,16],[24,8],[16,14],[11,23],[15,15],[21,49],[5,19],[1,14],[-7,13],[0,26],[2,26],[3,11],[9,18],[3,24],[-1,7],[11,17],[10,23],[26,19],[21,25],[15,48],[2,15],[9,39],[14,7]],[[5206,7702],[-2,-1]],[[5783,7801],[-3,21],[1,26],[3,22],[-4,18],[-6,5],[-17,36],[-10,30],[-8,3]],[[5739,7962],[20,10],[14,-2],[6,-9],[21,-8],[10,-13],[-1,-25],[7,-10],[5,2],[0,-20],[10,-9],[-1,-16],[6,-9],[-15,0],[-3,6],[-7,-6],[-1,9],[-7,-4],[1,-26],[-13,-19],[0,-11],[-8,-1]],[[6384,4200],[0,8],[5,14],[-5,-22]],[[6370,4487],[-2,-11],[7,-4],[1,-18],[7,-8],[4,-13],[-1,-9],[5,-25],[3,-37],[0,-29],[8,-27],[-4,-34],[-3,-9],[-6,7],[-3,25],[-8,-7],[3,-23],[-2,-5],[5,-11],[-1,-25],[-5,-13],[-6,-24],[2,-29],[-4,-39],[-3,-11],[-10,-59],[-2,-19],[-7,-32],[-3,-29],[-10,-57],[-4,-16],[-2,-24],[-7,-48],[-1,-16],[-4,-13],[-8,-47],[-14,-15],[-11,-2],[-13,-11],[-6,-9],[-12,-2],[-11,17],[-10,2],[-10,15],[-2,20],[-7,14],[-1,45],[3,10],[-4,6],[-1,16],[-6,12],[-4,36],[3,27],[4,6],[0,17],[7,4],[11,46],[4,7],[6,29],[-3,4],[2,24],[-6,18],[1,16],[-6,22],[-1,35],[-3,15],[15,49],[0,30],[12,-1],[11,16],[10,-2],[0,7],[8,4],[4,-6],[1,9],[6,5],[18,25],[3,-7],[-3,-10],[7,2],[-4,18],[4,5],[2,12],[6,8],[-3,-22],[11,28],[-3,11],[3,11],[4,-2],[3,11],[-4,9],[0,19],[7,-1],[1,-10],[4,-1],[0,14],[5,1],[-1,9],[6,-4],[3,5],[1,16],[3,8],[-2,22],[3,13],[5,4],[3,18],[2,-8]],[[2590,6367],[-7,-17],[2,17],[5,0]],[[1889,6595],[7,-4],[1,-9],[-8,13]],[[1800,6801],[-5,-1],[5,12],[0,-11]],[[1880,6866],[3,-12],[-3,-16],[-7,7],[2,17],[5,4]],[[1847,6884],[4,-14],[5,-1],[2,-17],[-11,17],[-3,9],[3,6]],[[2186,6889],[0,-8],[7,-2]],[[2193,6879],[11,-20],[1,-12],[9,-31],[6,-12],[9,-27],[7,-6],[-1,-15],[2,-15]],[[2237,6741],[3,-16],[3,2],[2,-14]],[[2245,6713],[2,-9],[20,-12],[4,-8],[16,-2],[9,-10],[5,6]],[[2301,6678],[0,-14],[-8,-31],[-6,-38],[-2,-30],[-1,-43],[1,-16],[-4,-22],[3,-29],[5,-34],[15,-57],[9,-17],[9,-27],[3,-25],[5,-5],[1,-9],[7,-19],[7,-4],[11,2],[5,-9],[6,-2],[8,-21],[10,3],[16,11],[17,3],[15,13],[10,2],[6,-12],[10,-3],[6,17],[-5,8],[14,16],[5,11],[1,21],[7,14],[-1,6],[1,39],[3,15],[16,17],[19,4],[17,12],[14,2],[20,-9],[6,9],[6,-10],[2,-17],[-3,-16],[-9,-18],[-7,-19],[-1,-19],[-8,-16],[9,-8],[-6,-40],[-3,-10],[-2,-23],[-3,14],[-4,3],[2,18],[-5,-4],[-3,-15]],[[2437,6020],[-20,42],[-19,33],[-11,16],[-10,10],[-1,-6],[-8,1],[-4,13],[-5,-9],[9,-4],[-11,-1],[-8,-12],[-15,-9],[-7,-8],[-8,-2],[-15,10],[-4,6],[-17,3],[-8,13],[-13,6],[-6,14],[-5,0],[-15,8],[-5,0],[-5,9],[-31,22],[-6,11],[-13,14],[-4,13],[-7,6],[-5,-4],[-32,20],[-8,21],[-9,14],[-12,13],[-15,12],[-3,14],[-5,6],[-8,22],[0,10],[-4,8],[3,8],[10,6],[-7,15],[7,12],[1,22],[-6,8],[-7,23],[-2,32],[-9,17],[-15,34],[-12,32],[-21,28],[7,-7],[0,9],[-5,-1],[-9,13],[-6,18],[7,0],[-22,24],[0,5],[-9,-3],[6,9],[-7,-1],[-8,9],[0,14],[4,9],[0,19],[-4,9],[-10,3],[-5,23],[-9,2],[-7,13],[-2,26],[2,3],[-14,4],[-8,12],[-5,13],[-5,5],[-13,29],[-2,20],[-5,2],[1,9],[-11,23],[0,16],[-10,36],[3,20],[-16,10],[-1,10],[-7,6],[-9,-6],[-10,15],[-8,2],[0,-41],[4,-8],[3,-27],[-1,-19],[7,-21],[4,-1],[17,-27],[3,-23],[7,-3],[11,-32],[3,-25],[4,-12],[8,-6],[4,-20],[6,-7],[-1,-6],[8,-25],[-3,20],[8,-10],[0,-9],[5,-13],[1,-29],[9,-25],[10,-36],[-2,-15],[3,-15],[8,-8],[0,13],[14,-16],[4,-23],[7,-10],[0,-14],[-11,-19],[-7,0],[-6,36],[-8,9],[-12,22],[-14,16],[-5,14],[-4,-3],[-4,14],[-3,-1],[-2,25],[3,3],[0,27],[-9,30],[-3,0],[-17,21],[-1,21],[-4,-13],[-10,-1],[-5,13],[-8,9],[-10,6],[0,9],[-16,20],[-1,8],[15,-5],[7,6],[5,-13],[-1,17],[2,28],[-9,26],[-4,3],[-12,26],[-6,2],[-14,19],[-4,12],[0,19],[-5,4],[-1,26],[-7,9],[0,11],[-10,22],[1,15],[-8,14],[-6,28]],[[1746,7056],[66,10],[-1,-12],[46,-30],[58,-37],[79,0],[0,26],[46,0],[11,-20],[8,-8],[14,-26],[6,-4],[7,-12],[6,-21],[-1,-10],[5,-21],[14,-20],[25,-19],[8,14],[4,30],[8,2],[3,6],[5,-5],[20,-2],[3,-8]],[[2290,6649],[-4,-5],[0,-32],[-2,-53],[6,67],[4,13],[-4,10]],[[5582,7536],[0,0]],[[5586,7536],[-4,1]],[[5581,7537],[0,0]],[[5575,7539],[-2,10]],[[5598,7616],[20,7],[2,-4]],[[5117,6285],[0,-124],[-1,-33],[-4,-7],[-4,-29],[-11,-17],[0,-8],[-14,4],[0,-5],[-47,-3],[-9,-17],[-9,-3],[-13,3],[1,-5]],[[4683,5897],[-1,36],[-6,21],[-5,-5],[-8,23],[4,5],[-2,28],[-5,6],[1,18],[-2,5]],[[4659,6034],[5,-2],[7,8],[0,24],[3,11],[6,7],[14,-22],[3,-2],[4,13],[12,1],[14,-4],[13,7],[65,0],[41,0],[5,45],[-8,15],[-1,33],[-2,21],[-1,36],[-2,22],[-6,109],[0,17],[-3,39],[-6,104],[0,14],[-3,39],[0,16],[-3,37],[50,0]],[[7737,5862],[0,-11],[-4,-2],[-1,13],[5,0]],[[7733,5907],[-2,-14],[-1,20],[3,-6]],[[7622,6095],[-2,9],[7,13],[2,-6],[-7,-16]],[[7710,6117],[-4,12],[2,5],[2,-17]],[[7602,6269],[-2,-10],[-5,9],[7,1]],[[7604,6305],[6,-6],[-6,-6],[-3,10],[3,2]],[[7780,6353],[-9,6],[0,-6],[-10,2],[3,-11],[-6,-6],[-8,1],[-1,-17],[-21,-7],[-6,8],[0,-9],[-5,-4],[-2,-10],[1,-18],[-4,-10],[3,-19],[-10,-8],[5,-6],[5,-22],[-2,-10],[11,-23],[4,-17],[7,-8],[-1,-11],[6,-28],[6,5],[-2,-15],[-7,-3],[0,-40],[-9,-4],[-2,-12],[2,-16],[6,-13],[3,-15],[11,-14],[4,-11],[3,-67],[6,-9],[1,-25],[2,1],[3,-19],[-6,-12],[-1,-12],[-5,-17],[-6,-8],[0,-8],[-5,-4],[-2,-23]],[[7742,5779],[-7,-20],[0,24],[-1,18],[7,10],[1,45],[-5,2],[4,20],[-6,11],[5,21],[-3,32],[-9,31],[-4,-1],[0,27],[-3,9],[-5,30],[0,32],[-2,26],[-4,14],[2,25],[-8,-2],[-5,13],[0,18],[-3,12],[-6,8],[0,-23],[-2,-16],[-5,-11],[-11,3],[2,-12],[-16,-8],[-2,-16],[-7,-13],[-9,8],[-6,-4],[0,12],[-5,-9],[-3,5],[3,21],[-12,-19],[-1,11],[4,22],[2,38],[4,9],[0,22],[-2,3],[-2,30],[-6,24],[-5,8],[0,20],[-2,-4],[-1,-16],[-7,9],[-6,22],[9,-10],[6,14],[-11,14],[3,13],[-4,-3],[-6,11],[-10,-1],[2,16],[-4,-12],[-5,6],[5,4],[-5,9],[0,-11],[-7,22],[-3,3],[-3,21]],[[5533,7690],[8,-17],[11,-8],[13,-12],[0,-5]],[[5538,7620],[0,-3]],[[5537,7617],[-6,0],[7,-10]],[[5537,7593],[-14,24],[-10,8]],[[8263,7933],[2,-6],[9,9],[-4,10]],[[7439,8014],[9,6],[1,10],[19,0],[8,3],[15,13],[-2,11],[25,18],[5,0],[8,12],[11,0],[12,16],[9,-2],[7,10],[7,-10],[9,6],[2,-10],[33,-2],[3,-22],[8,-10],[8,1],[15,-8],[9,7],[21,-9],[11,2],[9,-10],[7,11],[15,6],[5,15],[2,14],[-8,6],[-6,22],[7,27],[5,0],[3,14],[8,4],[7,20],[11,-11],[11,-3],[9,-10],[14,0],[23,-15],[7,1],[17,-9],[2,-43],[17,-15],[11,-7],[20,-3],[13,10],[19,4],[4,6],[21,-6],[4,-6],[13,3],[14,-20],[22,-3],[-1,-15],[17,-20],[16,1],[31,-10],[3,4],[9,-6],[20,14],[18,1],[11,8],[10,-2],[8,5],[3,12],[27,27],[17,-1],[17,-20],[9,-1],[12,8],[12,-5],[3,-6]],[[5913,3637],[-22,0]],[[5891,3637],[1,15],[-3,17],[1,16],[-3,3]],[[5887,3688],[1,16],[0,71],[-4,30],[-3,5],[-6,24],[1,14],[-7,44]],[[5869,3892],[31,64],[-2,10],[4,10],[-1,17],[6,7],[9,29],[1,14],[-6,6],[1,36],[-5,2],[0,11],[6,3],[-1,14],[4,4],[-2,36],[3,14],[-1,17],[-5,22],[4,14],[-7,-1],[-1,6],[-13,9],[-9,1],[-5,12],[-5,1],[-7,10],[-9,-2],[-2,4],[-13,-1],[0,21]],[[5844,4282],[-1,18],[-4,20],[19,14],[14,6],[19,16],[4,1],[27,19]],[[5922,4376],[6,-21],[7,-13],[1,6],[17,6],[5,-11],[2,-41],[-5,-11],[0,-9],[-5,-10],[5,-13],[1,-14],[9,-15],[5,-13],[5,-4],[0,-17],[5,0],[-2,38],[4,19],[9,2],[3,5],[1,35],[-1,16],[3,15],[-2,14],[-21,54],[-6,11]],[[5968,4405],[-2,10],[-1,28],[2,8],[-4,14],[0,16],[6,10],[2,25]],[[5971,4516],[19,0],[5,10],[9,-10],[1,-7],[15,1],[7,6],[12,-8],[11,10],[1,13],[7,4],[11,-8],[11,13],[11,0],[5,9],[9,4],[18,27]],[[6123,4580],[6,-13],[-7,-32],[0,-23],[3,-18],[0,-28],[3,-20],[-6,-8],[5,-1],[-2,-39],[4,-23],[-4,-8],[6,-2],[-3,-8],[6,-5],[0,-22],[-5,-7],[1,-8],[-3,-24],[-13,-26],[-3,-14],[-7,-7],[3,-7],[-21,-26],[-1,-7],[-11,-2],[-16,-16],[-6,-3],[-20,-22],[-11,-32],[-8,-15],[-2,-13],[-5,5],[1,-12],[-4,6],[-13,-18],[-6,-17],[-16,-26],[-3,4],[0,-25],[-3,-12],[6,-15],[3,0],[4,-39],[4,-16],[2,-20],[-1,-24],[5,16],[2,-16],[-2,-10],[3,-20],[-7,-50],[6,-4],[-3,-17],[-9,-26],[-13,-11],[-26,-17],[-11,-10],[-12,-16],[-5,-18],[-4,-6],[3,-12],[7,-5],[-1,-33]],[[4659,6034],[-6,12],[-12,16],[-1,13],[-8,8],[-2,17],[-5,13],[-10,-2],[-6,16],[-8,14],[-16,0],[-20,-9],[-19,1],[-1,-15],[-3,-3],[-2,-22]],[[4540,6093],[0,30],[2,18],[8,33],[4,26],[0,28],[-3,40],[-5,20],[-6,11],[9,24],[0,28],[-9,26],[0,-9],[-5,11],[-4,19],[-4,-3],[-1,-16]],[[4526,6379],[-1,6],[3,26],[55,0],[55,0],[0,15],[-4,71],[3,10],[12,16],[17,11],[0,146],[56,0],[36,0],[0,74]],[[6603,4026],[2,-11],[-3,-12],[-9,-1],[0,15],[4,13],[6,-4]],[[5969,4525],[0,2]],[[5969,4527],[0,-2]],[[5964,4534],[0,2]],[[5964,4536],[0,-2]],[[5952,4624],[-3,6]],[[5949,4630],[3,-6]],[[5946,4634],[0,1]],[[5946,4635],[0,-1]],[[5941,4623],[2,-16],[8,-22],[-1,-51],[3,-25],[-8,-21],[0,-15],[4,-4],[0,-16],[4,-12],[-1,-26],[2,-9],[7,-10],[-2,-24],[7,-10],[2,11],[8,-16],[4,0],[-6,34],[-6,2],[0,12]],[[5922,4376],[-7,-1],[-2,12],[-6,14],[6,8],[4,49],[9,3],[5,11],[-4,0],[-4,11],[2,15],[-3,27],[5,15],[-4,17],[7,6],[5,11],[-4,20],[-6,8],[1,15],[-4,12],[-7,1],[-1,11]],[[5914,4641],[10,-5],[4,-7],[9,1],[4,-7]],[[8093,5320],[-2,3],[0,20],[2,-2],[0,-21]],[[8269,5423],[5,-1]],[[7786,5497],[-1,-11],[-3,11],[4,0]],[[7773,5553],[-3,-8],[-3,8],[6,0]],[[7834,5543],[9,-7],[3,-14],[18,-29],[9,-33],[1,-32],[-4,-8],[0,-23],[4,-12],[-2,-6],[1,-32],[10,-15],[3,-23],[8,-23],[1,-24],[-16,4],[-4,-10],[-5,15],[-15,19],[-7,11],[-10,9],[-11,21],[-14,15],[2,9],[-2,17],[-6,17],[-11,19],[2,9],[-4,6],[1,21],[-2,19],[-6,11],[2,6],[-2,23],[0,26],[-7,25]],[[7780,5554],[2,15],[4,-9],[12,-7],[2,-11],[7,1],[0,-19],[-3,-9],[3,-8],[5,9],[9,7],[6,-10],[7,30]],[[8045,5303],[0,-10],[8,-13],[9,1],[16,-8],[6,-6],[0,16],[5,22],[0,18],[4,0],[2,16],[5,8],[11,2],[20,10],[9,9],[12,33],[7,12],[6,19],[1,16]],[[8193,5464],[1,-4]],[[8198,5465],[6,1],[6,15],[-6,9],[6,11],[6,0],[3,14],[4,4],[1,17],[6,6],[1,8],[8,18],[3,19],[3,-3],[-2,-22],[6,8],[3,15],[4,-2],[1,-18],[7,-3],[6,-10],[-4,-13],[5,-16],[6,9],[3,-14],[8,-1],[9,-15],[15,-10],[0,-11],[-15,-13],[-7,-1],[-2,6],[-7,-8],[5,-14],[9,-13],[-18,-12],[-11,10],[-1,-14]],[[8256,5598],[-5,-6],[0,10],[6,4],[-1,-8]],[[5649,4167],[22,9],[17,-1],[7,-5],[6,-12]],[[5554,3757],[1,-13],[0,-196],[-12,-8],[-2,-9],[-7,-5],[-3,-11],[-11,7],[-16,-4],[-16,13],[-5,-1],[-2,28],[-4,0],[-3,11],[-5,-2],[-4,-12],[0,-11],[-8,-7]],[[5457,3537],[-5,4],[-15,27],[-12,41],[-2,21],[-5,18],[2,11],[-5,7],[0,21],[-3,11],[-1,23],[1,20],[-11,53],[1,33],[-2,25],[3,10],[-1,27],[-14,39],[-4,18],[-13,37],[-5,37],[-3,3],[-4,20],[-7,22],[-3,18],[-8,23],[-8,14],[-5,21],[-3,36],[1,12]],[[9665,3952],[5,-3],[-1,-13],[-7,3],[-2,12],[5,1]],[[9646,3990],[4,-27],[-9,7],[-1,8],[6,12]],[[9555,4026],[7,-13],[6,0],[16,-24],[5,-3],[11,-30],[7,-3],[15,-20],[4,-10],[11,-14],[2,-10],[-3,-5],[-12,8],[-2,-4],[-6,8],[-2,13],[-4,-1],[-7,14],[-13,7],[-4,13],[-12,16],[-1,8],[-6,6],[-12,44]],[[5416,6507],[4,-53],[1,-34],[12,-31],[-1,-12],[11,-21],[-7,-29],[0,-21],[-6,-142],[-1,-9],[-22,-46],[-12,-29],[-13,-39],[0,-11],[-9,-19],[4,-39]],[[5377,5972],[-6,1],[-4,-10],[-5,0],[-14,-18],[-2,-10],[-10,2],[-7,9],[-12,6],[-22,1],[-13,-6],[-7,-7],[-8,-20],[-18,2],[-10,7],[-15,20],[-9,1],[-10,-12],[-6,0],[-3,-7],[-7,4],[-4,15],[-12,21],[-3,-3],[-16,14],[-8,-8],[-12,2],[-11,-6],[-9,-11],[-1,-28],[-4,-14],[-8,-13],[-1,-25],[1,-21],[-2,-2]],[[5377,5972],[13,-36]],[[5238,5460],[-5,-4],[-6,14],[5,-21],[-2,-4],[-17,-3],[-14,10],[0,-10],[-4,-4],[0,13],[-4,2],[3,-18],[-25,-6],[-7,6],[-8,17],[-3,12],[-3,27],[-4,8],[-3,17],[-6,13],[-13,20],[-15,4],[-12,-1],[4,6],[-5,2],[0,-9],[-19,-1]],[[2691,6046],[-6,-4],[4,-35],[-7,-20],[-4,-40],[2,-21],[-1,-19],[2,-10],[-4,-2],[1,15],[-5,-4],[4,-12],[-5,-31],[3,2],[1,-14],[-6,-11],[1,-16],[5,-12]],[[2619,5821],[-6,13],[-12,18],[-7,15],[-4,17],[-26,41],[4,10],[6,-5]],[[5093,8141],[24,0]],[[5162,8210],[-10,-17],[-10,7],[15,13],[5,-3]],[[5118,8141],[-21,6],[1,7],[9,1],[7,-11],[-3,33],[8,7],[6,13],[6,36],[10,-1],[14,21],[11,5],[24,3],[9,-12]],[[5140,8230],[7,-10],[-8,-8],[0,-15],[12,-5],[12,14],[-12,20],[-2,13],[-9,-9]],[[5157,8665],[-10,4],[10,9],[0,-13]],[[5249,8849],[3,-8],[-16,-5],[-3,7],[16,6]],[[5244,8857],[-2,-7],[-13,0],[15,7]],[[5344,8955],[3,-6],[-12,-11],[9,17]],[[5387,9114],[3,-5],[-17,-6],[5,13],[9,-2]],[[5420,9124],[-11,-11],[-15,-6],[9,15],[17,2]],[[5441,9154],[2,-15],[8,12],[8,-5],[-1,-15],[-21,-8],[-4,-7],[-17,-3],[6,18],[6,0],[6,23],[7,0]],[[5421,9152],[6,-15],[-9,-5],[-18,7],[21,13]],[[5439,9158],[-11,-3],[20,19],[-9,-16]],[[5492,9188],[10,-7],[-3,-14],[-32,-8],[9,12],[-6,8],[22,9]],[[5523,9207],[6,-7],[-8,-11],[-17,-2],[5,15],[14,5]],[[5533,9218],[12,-6],[-15,-10],[-9,7],[12,9]],[[5652,9249],[5,-8],[-16,-11],[-6,7],[17,12]],[[5649,9262],[-11,-16],[-24,-4],[7,13],[17,-3],[11,10]],[[5856,9203],[2,-15],[-17,4],[-10,-15],[-16,-3],[-11,-16]],[[5572,9158],[-14,0],[7,-8],[-11,-20],[0,-11],[-42,13],[-8,-3],[1,-19],[-8,-13],[-16,8],[-15,-11],[-5,-16],[-14,-13],[9,-12],[-1,-10],[-27,-31],[2,-13],[-12,-7],[-15,-1],[3,-17],[-3,-30],[-5,-12],[-20,-30],[14,-8],[1,-15],[-5,-10],[-21,5],[-15,-8],[-14,-21],[-5,-18],[6,-16],[-4,-24],[7,-20],[-5,-30],[20,-20],[-4,-18],[-13,-4],[10,-29],[-3,-21],[-10,-13],[-7,0],[-6,-16],[4,-21],[-6,-21],[-5,6]],[[5317,8580],[-2,7],[-16,4],[-5,22],[-5,-3],[1,-15],[-5,-12],[-15,-2],[-28,-36],[-16,-16],[-15,-5],[-30,5],[4,7],[-19,9],[-10,9],[-4,11],[2,18],[14,-10],[-5,13],[9,14],[-12,11],[2,-11],[-10,-4],[-8,9],[8,18],[11,0],[-5,7],[7,5],[5,15],[10,13],[-13,-9],[-6,-16],[-6,16],[-6,-8],[-6,8],[3,14],[12,-3],[-1,14],[-10,-9],[-10,14],[3,16],[10,0],[-13,10],[0,10],[11,7],[-11,5],[11,16],[33,-6],[-31,8],[-7,-3],[7,17],[13,1],[25,16],[-12,-3],[12,13],[22,-8],[-1,10],[-16,2],[-2,12],[10,5],[7,-6],[16,2],[4,11],[12,-2],[-5,11],[34,19],[7,-14],[24,5],[-2,8],[19,14],[2,9],[-18,-7],[2,-9],[-26,-14],[-12,16],[15,11],[-3,9],[14,10],[12,17],[13,-11],[0,17],[11,5],[4,17],[19,3],[-10,6],[10,12],[-8,12],[27,33],[-8,8],[9,16],[12,10],[-7,6],[20,4],[10,13],[22,-3],[0,5],[-28,1],[28,31],[-15,-9],[4,15],[30,7],[-22,1],[23,8],[5,-17],[6,8],[-11,14],[17,8],[32,-1],[-9,8],[-29,-5],[2,11],[24,6],[6,22],[10,6],[4,14],[19,5],[11,13],[26,10],[8,-11],[15,2],[11,14],[19,-17],[-5,14],[-18,15],[28,3],[20,-6],[5,-14],[11,25],[29,23],[0,11],[37,-7],[-19,-17],[-9,-26],[8,-1],[6,15],[33,35],[-3,-34],[17,22],[11,6],[-8,10],[28,3],[8,-5],[-19,-29],[14,2],[11,20],[9,1],[21,-14],[8,4],[27,-25],[-16,-2],[-10,-10],[-39,6],[-3,-4],[29,-8],[-2,-12],[34,3]],[[5713,9281],[11,-11],[-15,-3],[-6,9],[10,5]],[[4778,9282],[-1,-9],[-15,-2],[16,11]],[[5647,9686],[-7,-11],[38,-10],[-33,-33],[-23,0],[10,17],[-53,-6],[22,27],[-22,9],[23,8],[45,-1]],[[5596,9708],[21,-5],[1,-13],[-43,-4],[-15,17],[36,5]],[[5313,9706],[24,-18],[-29,12],[-16,19],[13,4],[8,-17]],[[5467,9783],[4,5],[53,-31],[2,-16],[23,1],[8,-9],[40,-9],[-5,-12],[-44,-1],[-22,-10],[3,-21],[-18,-4],[-5,-31],[-14,1],[-11,-30],[-12,-11],[3,-11],[-20,6],[-35,25],[-18,3],[-9,22],[50,-2],[-31,7],[59,9],[-36,4],[-50,-9],[-5,19],[40,3],[17,12],[27,1],[-3,22],[-14,-14],[-16,-1],[-1,23],[-28,-21],[10,-6],[-25,-10],[-23,-1],[-17,20],[-20,10],[21,16],[-19,4],[10,14],[-23,-12],[-16,26],[31,17],[9,-10],[47,12],[-3,-10],[-33,-9],[37,-1],[19,16],[20,-12],[5,-15],[28,-25],[-14,23],[-7,33],[24,9],[7,-9]],[[5642,9812],[113,-16],[-1,-15],[-37,-13],[-5,-13],[-38,-5],[-6,-7],[-32,2],[-1,11],[-57,-2],[-32,10],[22,8],[39,1],[0,7],[-66,-7],[-28,4],[-12,23],[33,-5],[33,19],[53,-25],[3,26],[19,-3]],[[9617,2273],[0,-19],[-6,6],[6,13]],[[9665,2494],[6,-10],[0,-14],[-12,-2],[-5,-8],[1,13],[5,6],[-1,14],[6,1]],[[96,2665],[10,-1],[-9,-6],[6,-11],[-9,-5],[3,13],[-9,8],[8,2]],[[9802,2850],[-4,0],[-2,-14],[9,-2],[1,-21],[4,-9],[10,14],[6,3],[3,-10],[3,13],[9,-2],[-4,-7],[3,-10],[-6,-8],[6,-18],[-8,-17],[-3,-13],[-9,-13],[-6,-23],[-15,-16],[-1,-24],[9,-5],[1,-9],[-7,-4],[-10,10],[-7,-9],[-25,-22],[-4,-20],[0,-17],[-7,-15],[-5,-25],[0,-16],[-8,-3],[-17,-24],[-4,-11],[-13,-7],[-11,0],[-1,6],[-13,-4],[-5,16],[-11,-2],[-2,10],[-8,3],[-3,-7],[-16,3],[1,13],[-9,0],[0,10],[9,6],[-2,8],[4,17],[8,-7],[-4,16],[36,56],[2,7],[10,1],[19,21],[8,4],[16,27],[14,12],[13,29],[6,37],[9,4],[8,16],[1,31],[15,21],[7,0]],[[9872,3102],[4,-10],[-7,5],[3,5]],[[9807,3201],[-1,-14],[3,-11],[8,-8],[8,2],[10,-9],[2,-9],[5,4],[1,-13],[5,-10],[-2,-23],[9,-16],[-3,-21],[7,-17],[8,0],[4,-17],[5,3],[-4,18],[3,20],[3,-14],[7,-9],[1,-35],[2,-7],[14,-7],[19,-13],[10,4],[5,14],[8,7],[8,0],[7,-10],[-6,-15],[-1,-32],[-10,-9],[-2,-34],[-1,12],[-12,1],[-10,-8],[-4,-10],[1,-13],[4,-3],[-5,-25],[-8,-21],[-6,-9],[-9,-30],[-8,-14],[-13,-14],[-3,11],[-9,-1],[-8,12],[4,4],[10,24],[4,27],[-5,17],[-15,10],[-6,12],[-9,4],[-6,8],[1,14],[22,19],[3,41],[4,20],[-3,30],[4,10],[-3,8],[-8,-6],[-2,16],[-6,19],[7,-12],[-2,22],[-11,8],[1,-9],[-26,61],[2,16],[-12,29],[10,1]],[[6629,6344],[-1,12],[8,19],[-7,-31]],[[6474,6141],[-8,37],[-2,0],[-11,55],[-10,44]],[[6443,6277],[13,8],[52,37],[19,12],[9,56],[9,61],[-13,39]],[[6566,6621],[6,-28],[6,-15],[10,-17],[31,-18],[8,2],[6,-11],[13,-39],[7,-13],[8,-2],[0,-17],[-9,-27],[-4,-19],[-12,-17],[-11,-42],[-8,1],[1,11],[-5,-3],[-3,-13],[-4,-4],[-1,-20],[-3,-10],[2,-31],[2,-11],[-3,-4],[-15,-2],[-8,-6],[-7,-12],[-3,-28],[-5,-10],[-5,1],[-21,-7],[-6,-19],[2,-9],[-7,-20],[-8,-3],[-4,5],[-16,-3],[-12,-14],[-7,0],[-7,-6]],[[6557,6684],[2,8],[9,-6],[-5,-27]],[[6893,6556],[-1,-9],[-8,10],[-6,-3],[-8,15],[-5,42],[-13,5],[1,20],[-5,7],[-3,13],[-7,1],[2,-7],[-16,-8],[-13,2],[-1,-4],[-23,-1],[-19,6],[-4,-11],[-28,4],[-5,-6],[-17,-8],[1,8],[-5,2]],[[2729,5623],[3,-19],[-7,12],[4,7]],[[2836,5599],[-8,16],[-7,31],[5,4],[0,10],[5,8],[-5,3],[-4,-7],[-3,16],[-10,15],[-6,5],[-10,2],[-9,-12],[0,-13],[-8,-11],[-12,-10],[0,-8],[10,-19],[4,-14],[-10,-6],[-2,-9],[-13,-2],[0,7],[-8,30],[-1,-14],[-10,8],[-3,19],[-9,8],[-6,-1],[0,8],[-8,-4],[-9,2],[-2,-16]],[[2706,5734],[6,-10],[3,-23],[13,-4],[-4,11],[5,-3],[6,-15],[10,-1],[9,5],[7,12],[14,8],[14,22],[10,-4],[7,2],[-2,-7],[16,-2],[17,-19],[3,-9],[10,-15]],[[3073,4289],[-8,13],[-7,0],[2,-20],[-3,4],[-3,-15],[17,-10],[-2,-8],[7,-8],[4,3]],[[3084,4249],[-2,-19]],[[3044,4127],[-14,19],[0,3],[-13,15],[0,13],[-3,10],[-18,16],[-6,15],[-10,5],[-17,20],[-17,13],[-3,8],[-32,34],[-1,9],[-9,19],[-10,12],[-6,25],[-4,2],[0,15],[3,23],[-10,34],[0,7],[-8,20],[1,6],[-7,9],[-3,11],[-2,23],[-4,10],[-8,9],[1,11],[-4,20],[-12,36],[-1,20],[-4,9],[-2,18],[-5,8],[-4,33],[-6,23],[-14,29],[-6,35],[-7,12],[-6,16],[-16,16],[-11,17],[0,11],[8,6],[-2,16],[-7,11],[3,15],[-8,19],[2,25],[12,23],[0,5],[14,21]],[[8339,5486],[-9,-12],[-3,4],[12,8]],[[8361,5534],[5,-6],[-8,-6],[3,12]],[[8390,5552],[-3,0],[-4,14],[7,5],[7,-7],[-7,-12]],[[8493,5581],[-3,9],[3,5],[0,-14]],[[8251,5645],[-2,-13],[-1,14],[3,-1]],[[8489,5736],[9,-8],[3,-13],[4,4],[-1,-13],[4,-7],[0,-10],[-6,-9],[8,-6],[-1,-20],[3,3],[-2,-23],[5,-6],[1,-27],[-4,-16],[-6,-12],[-1,-28],[-4,20],[1,8],[-6,19],[-1,14],[-5,-4],[0,-9],[-5,-8],[-3,-22],[6,-6],[3,-20],[-1,-12],[-7,-21],[-7,13],[3,8],[-3,9],[-3,-14],[-10,5],[-13,14],[-5,15],[0,20],[-2,0],[1,19],[6,8],[0,9],[-5,11],[-15,13],[-3,-12],[1,-15],[-4,9],[-4,-1],[0,12],[-4,-14],[-6,0],[1,16],[-9,-3],[-7,-26],[-2,-17],[-3,-3],[-5,9],[7,30],[-1,11],[7,16],[16,6],[3,21],[8,1],[2,11],[3,-6],[6,1],[4,-13],[0,-15],[11,6],[2,17],[3,4],[6,-8],[3,5],[0,23],[4,1],[5,-9],[5,10],[7,1],[0,17],[-4,21],[2,8],[5,-12]],[[8503,5750],[-4,-2],[2,14],[2,-12]],[[8453,5767],[7,-6],[-1,-12],[-7,-13],[-12,2],[-2,9],[7,10],[3,10],[5,0]],[[8479,5754],[-4,9],[3,3],[1,-12]],[[8490,5782],[1,-31],[-5,11],[0,15],[4,5]],[[8332,5791],[-6,-5],[2,10],[4,-5]],[[8408,5792],[-5,-9],[0,11],[4,7],[1,-9]],[[8423,5815],[8,-4],[1,-7],[-7,-25],[-1,-15],[-4,-13],[0,-19],[5,-11],[-2,-12],[-7,-5],[-3,15],[-9,8],[-5,15],[2,15],[11,6],[-1,23],[4,23],[8,6]],[[8444,5821],[1,-35],[-2,-9],[-9,-14],[0,-7],[-6,-27],[-3,-4],[2,34],[9,27],[5,33],[3,2]],[[8319,5836],[0,-30],[6,-17],[-10,-11],[-4,-14],[-13,-9],[1,-12],[-9,-26],[-10,-10],[-1,-9],[-8,-14],[-6,-2],[-1,-9],[-9,0],[19,43],[4,0],[9,23],[7,11],[6,20],[12,17],[4,32],[0,14],[3,3]],[[8456,5842],[7,-8],[4,7],[6,-10],[-1,-30],[5,-8],[2,-19],[-8,-4],[2,-10],[-8,7],[-1,14],[2,19],[-2,11],[-5,5],[-4,-4],[1,30]],[[8456,5856],[5,-12],[-5,0],[0,12]],[[8396,5860],[10,-14],[4,6],[3,-11],[7,8],[-1,-24],[-9,-10],[-1,-11],[-6,-6],[-9,-2],[-6,-13],[-2,20],[4,17],[0,39],[-6,1],[3,10],[9,-10]],[[8332,5870],[2,-13],[-3,-2],[-2,15],[3,0]],[[8331,5890],[11,-11],[0,-5],[-10,1],[-1,15]],[[8405,5890],[-5,12],[6,0],[-1,-12]],[[8469,5906],[10,-3],[2,-13],[5,-4],[-2,-6],[1,-33],[6,-24],[-14,0],[-2,10],[-4,0],[-4,10],[6,17],[-5,0],[-6,16],[-8,11],[-3,20],[7,-3],[11,2]],[[8426,5905],[6,-6],[5,-13],[4,-1],[4,-15],[0,-12],[-17,28],[-8,-17],[3,13],[-1,26],[4,-3]],[[8392,5910],[-3,-30],[-3,11],[2,17],[4,2]],[[8434,5912],[3,-18],[-5,16],[2,2]],[[8421,5926],[-7,8],[2,6],[5,-14]],[[8360,5962],[15,-22],[-1,-23],[-3,-26],[-4,-5],[-9,17],[-4,15],[0,14],[-7,12],[-4,18],[10,-4],[7,4]],[[8385,5963],[7,-9],[-4,-11],[-5,8],[2,12]],[[8450,5993],[5,-11],[0,-12],[-7,-8],[-4,7],[3,5],[0,20],[3,-1]],[[8387,6049],[2,-18],[-3,-5],[-3,23],[4,0]],[[8358,6252],[7,4],[10,-14],[13,-6],[4,13],[3,0],[2,-15],[-4,-8],[-1,-29],[3,-15],[4,0],[2,-28],[-8,-32],[1,-4],[-18,-18],[2,-10],[-7,-28],[9,-32],[-3,-1],[4,-30],[5,-10],[10,-2],[-3,13],[8,9],[8,-1],[9,-20],[-1,-12],[5,-3],[3,17],[17,-13],[1,-4],[-12,-1],[0,-8],[5,-8],[4,-16],[6,-8],[2,-12],[-2,-14],[-6,5],[-1,13],[-7,1],[-8,7],[0,14],[-3,11],[-7,6],[-5,16],[-9,7],[2,-18],[5,-15],[-3,-12],[-7,25],[-17,19],[-8,-8],[1,-6],[-11,-4],[-4,16],[-6,2],[-2,-7],[-1,24],[11,17],[-4,14],[-9,-4],[2,-13],[-4,-3],[-4,23],[-7,4],[-1,23],[-4,8],[1,26],[-4,3],[0,23],[9,-15],[9,5],[-3,17],[0,21],[4,10],[-1,11],[0,43],[5,23],[-1,10],[10,4]],[[8740,5620],[-2,-13],[-3,3],[5,10]],[[9256,4529],[13,-10],[0,-5],[-10,3],[-3,12]],[[9195,4611],[7,-2],[-2,-10],[-8,2],[-5,23],[8,-13]],[[9184,4640],[3,2],[5,-15],[-14,1],[0,16],[6,-4]],[[9176,4644],[-1,-9],[-5,5],[-1,9],[6,1],[1,-6]],[[9234,4667],[10,-3],[5,-11],[-10,2],[-5,12]],[[8989,4680],[-11,16],[11,-11],[0,-5]],[[8981,4701],[6,0],[1,-7],[-7,7]],[[9105,4867],[7,-7],[-1,-11],[-7,10],[1,8]],[[9299,4867],[8,-4],[3,-17],[6,-8],[1,-9],[5,-4],[8,-16],[2,-14],[-7,-8],[-5,1],[-10,17],[1,14],[-14,25],[0,19],[2,4]],[[9089,4870],[-4,0],[-2,11],[3,3],[3,-14]],[[9296,4889],[-2,-21],[-1,25],[3,-4]],[[9228,4941],[-2,-6],[7,-2],[0,-17],[-5,-20],[-8,-1],[5,-25],[-8,-9],[-11,3],[2,-8],[-14,-21],[-15,-13],[-24,-2],[-3,10],[-6,4],[-6,-5],[-2,7],[-10,12],[-9,7],[4,14],[11,-5],[3,4],[7,-8],[20,6],[2,24],[4,-27],[8,6],[8,-5],[8,6],[0,10],[10,20],[7,-3],[2,5],[-2,23],[-3,16],[7,0],[5,-8],[2,8],[6,0]],[[8915,5033],[7,-1],[25,-25],[25,-17],[13,-4],[9,-11],[5,-11],[15,-2],[0,-8],[9,-6],[5,-15],[8,-3],[13,-25],[-1,-38],[14,-4],[18,-16],[5,-7],[12,-3],[9,-22],[0,-18],[-25,-3],[0,-12],[5,-13],[1,-15],[7,-6],[8,-21],[12,-8],[3,-30],[7,-9],[2,-19],[21,3],[-4,-19],[1,-9],[7,-6],[15,-2],[1,-5],[-9,-5],[8,-16],[10,-7],[12,-3],[-4,-5],[-9,-1],[10,-10],[-7,-9],[-13,6],[2,7],[-9,8],[-7,-1],[-8,6],[-12,0],[1,5],[-11,-3],[-2,5],[-17,1],[-11,33],[-5,2],[-7,22],[-8,6],[-4,23],[-10,30],[-13,9],[-5,-1],[-7,8],[-9,2],[-6,12],[-6,-1],[2,-13],[-7,10],[1,-8],[-13,8],[4,-19],[-11,-4],[1,-12],[-18,-5],[-6,1],[11,-10],[7,-15],[1,-11],[-22,-23],[-11,10],[-20,-3],[-6,4],[-3,-5],[-6,7]],[[9195,5027],[10,-11],[11,-17],[7,-3],[14,-33],[11,-10],[5,-22],[-2,-14],[-5,-10],[-6,14],[1,21],[-5,19],[-10,21],[-6,2],[-9,16],[-5,4],[-9,15],[-10,7],[8,1]],[[9172,5046],[6,-5],[0,-12],[-8,0],[-3,9],[5,8]],[[9079,5070],[12,-5],[-3,-8],[-17,0],[0,11],[8,2]],[[9154,5105],[6,-13],[-6,5],[0,8]],[[5544,8319],[0,-1]],[[5544,8318],[4,-1]],[[5548,8317],[63,-4],[21,0]],[[5655,8150],[1,-13],[14,-27],[-5,0],[4,-18],[-10,-8],[-18,-24],[-13,-25],[4,-28],[-6,2]],[[5626,8009],[-15,8],[-11,12],[-16,-2],[-4,-6],[-6,6],[-10,0],[-14,-12],[-1,12],[-10,11],[-7,-11],[-9,7]],[[5396,8275],[8,-3],[0,13],[-10,0]],[[5394,8289],[54,20],[12,16],[10,2],[11,9],[27,5],[7,-23],[12,-6],[17,7]],[[3138,6248],[29,-2],[9,-6],[2,-7],[-7,-13],[-9,-5],[-17,3],[-12,-1],[1,15],[-3,7],[3,10],[4,-1]],[[8625,7631],[5,-14]],[[8630,7617],[-7,4],[-11,-15],[-11,-27],[4,-15],[-3,-11],[1,-19],[-11,-5],[-7,-16],[-13,-11],[-8,-14],[-9,1],[-4,-9],[-10,-8],[2,-9],[-6,-13],[2,-13],[9,-2],[17,-29]],[[8518,7361],[-8,4],[-8,-9],[-8,15],[-7,1],[2,-14],[-10,9],[-7,-2],[3,9],[-13,4],[9,5],[-3,9],[10,20],[-3,4],[4,21],[5,14],[-4,8],[-16,7],[-11,14],[1,12]],[[4525,7072],[11,-2],[-3,-7],[-10,3],[2,6]],[[4286,7362],[15,1],[0,-6],[-10,-3],[-5,8]],[[4220,7396],[-11,-2],[-2,9],[13,-7]],[[4248,7409],[-8,0],[0,8],[6,0],[2,-8]],[[4794,7325],[-12,-12],[-21,8],[-10,-7],[4,24],[1,44],[-4,18],[-8,-2],[-1,11],[8,6],[-2,7],[-4,-11],[-9,1],[4,38],[6,7],[7,36],[-1,3],[7,47],[-6,50],[3,7]],[[3492,3797],[-1,-17],[-4,-23],[-1,-22],[-3,-17]],[[5949,6986],[8,16]],[[5987,7012],[-4,-16]],[[853,4163],[-9,-2],[-1,11],[5,3],[5,-12]],[[6422,6601],[-8,-2],[-3,9]],[[6411,6608],[1,10],[-3,15],[1,20],[3,6],[4,24],[6,6],[4,-12],[5,-2],[1,-9],[-4,-14],[4,-14],[0,-15],[-4,-17],[-7,-5]],[[5783,7801],[3,-8],[11,-6],[14,12],[10,-3],[2,-9]],[[5823,7787],[-1,-22],[-14,-4],[-3,13],[-4,-3],[-6,-35],[1,-21],[-3,-13]],[[5630,7730],[-6,15],[8,5],[-10,9],[-6,-14],[-5,9],[-10,2],[-9,9],[5,16],[-15,12],[-6,9],[1,16],[-13,13],[-2,7]],[[5635,7944],[10,8],[7,-5],[20,-6],[10,3],[9,-14],[10,11],[26,6],[3,12],[9,3]],[[9064,7741],[7,1],[-12,-10],[-16,-24],[15,37],[6,-4]],[[9133,7793],[-15,-6],[-10,-15],[-5,0],[-7,-11],[-18,-19],[10,17],[-3,3],[25,28],[9,0],[12,15],[2,-12]],[[9182,7845],[-21,-27],[-10,-9],[15,27],[16,9]],[[9227,7898],[-1,-8],[-10,-14],[11,22]],[[9301,8041],[-1,-17],[-6,3],[7,14]],[[9336,8091],[-7,-15],[-9,-4],[-5,-11],[-5,16],[15,9],[4,15],[7,3],[0,-13]],[[9344,8100],[-7,6],[7,7],[0,-13]],[[8967,8309],[5,-11],[-3,-7],[8,-35],[4,-38],[-6,-46],[5,-11],[-2,-12],[6,0],[9,-69],[10,-33],[0,-7],[8,-36],[-9,14],[-23,9],[3,-6],[-10,-7],[-2,-16],[-12,-57],[6,-26],[8,-11],[0,-11],[5,-21],[9,4],[1,-28],[-3,-6],[-2,22],[-17,3],[-2,6],[-7,-5],[-6,-32],[-5,-9],[-3,6],[-4,29],[7,30],[-3,31],[7,21],[-3,26],[-5,12],[7,55],[0,46],[-3,10],[1,17],[5,19],[-5,18],[-11,14],[-1,38],[4,5],[3,26],[-4,26],[13,9],[1,-9],[10,9],[-4,8],[9,2],[-2,12],[-10,21],[5,-2],[5,11],[3,-8]],[[9669,8321],[-19,19],[4,0],[15,-19]],[[8810,8355],[-14,-11],[8,11],[6,0]],[[8827,8358],[9,-8],[-12,-22],[-6,15],[-6,1],[8,17],[7,-3]],[[5548,8317],[18,15],[-10,2],[-12,-16]],[[5544,8319],[10,17],[0,12],[12,-1],[15,19]],[[5582,8366],[-12,-19],[12,-3],[7,5],[1,15]],[[9609,8371],[18,-27],[1,-11],[-13,14],[-4,13],[-7,6],[5,5]],[[9571,8591],[3,-16],[-8,-2],[-23,-18],[9,26],[19,10]],[[5777,8600],[3,-1]],[[6924,9029],[21,-5],[-5,-13],[-16,18]],[[6396,9167],[-24,-22],[-23,-4],[-10,9],[1,19],[15,16],[13,1],[28,-19]],[[9482,9188],[-3,-8],[6,-25],[-10,6],[-2,19],[9,8]],[[9705,9201],[-6,-12],[-29,7],[-11,8],[14,11],[32,-8],[0,-6]],[[6648,9234],[5,-8],[26,-17],[0,-11],[-25,-1],[-5,11],[-10,-2],[-13,12],[-1,15],[13,8],[10,-7]],[[6464,9295],[14,-14],[-6,-11],[-7,12],[-15,9],[14,4]],[[0,9271],[9990,-7],[-25,-4],[-4,14],[8,11],[30,17],[-9999,-31]],[[8829,9305],[-3,-9],[-20,5],[23,4]],[[0,9302],[26,4],[18,-3],[27,-17],[-12,-12],[-42,-8],[-17,5],[0,31]],[[7160,9347],[-27,1],[22,18],[21,-9],[-16,-10]],[[8580,9366],[-7,-7],[-15,7],[22,0]],[[8592,9374],[-28,2],[18,7],[10,-9]],[[7209,9382],[0,-11],[-19,1],[-8,7],[16,13],[11,-10]],[[7078,9392],[-5,-14],[-16,10],[21,4]],[[6536,9406],[31,-6],[-8,-26],[-15,-9],[-7,-32],[5,-18],[16,-29],[23,-20],[19,-10],[-49,-5],[-16,3],[-2,-8],[-14,12],[-18,-1],[-11,7],[-11,34],[-11,-4],[-10,10],[-19,-6],[-8,6],[-3,22],[11,12],[15,-5],[9,22],[11,9],[-20,7],[7,8],[21,1],[-7,12],[17,12],[13,-2],[20,9],[11,-5]],[[6970,9416],[1,-13],[11,-6],[-42,-7],[3,20],[27,6]],[[8951,9436],[32,-18],[0,-21],[-33,3],[-40,10],[-27,-4],[2,8],[17,1],[17,22],[32,-1]],[[8903,9439],[-10,16],[20,5],[2,-17],[-12,-4]],[[8148,9464],[-16,-15],[-37,13],[18,14],[34,-4],[1,-8]],[[7281,9528],[-4,-16],[-14,11],[18,5]],[[9075,9530],[47,-4],[5,-12],[15,3],[49,-6],[-8,-15],[-25,-8],[-43,2],[-58,24],[7,20],[11,-4]],[[8773,9524],[-11,-1],[6,29],[14,-16],[-9,-12]],[[8863,9565],[40,-20],[10,14],[19,1],[-8,10],[35,-19],[29,1],[50,-20],[-19,-5],[5,-8],[-16,-15],[-40,6],[-11,13],[15,13],[-3,8],[-25,-4],[5,-18],[12,-15],[30,-9],[-38,-6],[-14,10],[-49,-10],[-6,8],[-17,-18],[-33,8],[-25,20],[-2,34],[18,1],[-9,9],[42,18],[5,-7]],[[7674,9577],[3,-9],[-30,3],[27,6]],[[8125,9595],[2,-10],[-18,11],[16,-1]],[[9145,9596],[-23,0],[29,8],[-6,-8]],[[6893,9615],[24,-15],[-21,-24],[-51,-17],[-116,-32],[-47,-18],[0,-15],[-22,-8],[-2,-8],[-17,8],[1,-16],[-26,8],[15,-17],[-16,-8],[-16,-31],[-24,-20],[-36,4],[-11,6],[-20,-6],[-4,9],[24,12],[-30,-4],[-2,8],[26,12],[-3,6],[26,13],[-3,20],[24,4],[-14,7],[18,4],[-18,4],[-3,9],[21,-4],[14,19],[19,-4],[-5,11],[38,20],[23,3],[14,11],[23,-2],[0,12],[52,-5],[61,15],[49,28],[35,1]],[[7679,9622],[-33,-4],[35,11],[-2,-7]],[[8666,7787],[3,-13],[-2,-13],[9,-14],[7,9],[6,22]],[[6367,7850],[-12,-15],[-2,-14],[-4,9],[-10,-14],[-17,0],[-7,-31],[-8,-23],[-10,-8],[0,-13],[14,-11],[8,-28],[-2,-14],[6,19],[-5,-26],[0,-21],[7,-10],[4,-16],[12,-26],[2,-11],[6,-4]],[[6110,7681],[-15,21],[-1,6],[-18,24],[-15,7],[-11,15],[-9,1],[-8,19],[-17,11],[8,3],[-1,11],[8,-6],[11,2],[5,-4],[0,16],[-4,2],[8,10],[2,14],[4,-6],[2,11],[11,0],[-13,17],[-5,0],[-4,15],[6,-3],[13,14],[24,9],[0,13],[-30,-8]],[[6061,7895],[-1,12],[5,17],[11,5],[3,10],[25,-3],[0,13],[6,12],[-8,29],[10,5],[-8,3],[11,26],[-1,14],[-10,-2],[-5,10],[-7,0],[-5,9],[-6,-5],[-8,10],[-18,-4],[-8,11],[-8,20],[-16,-6],[-6,-7],[-10,4],[-5,8],[-13,-5],[-6,10],[2,10],[-4,19],[-7,12],[-11,-3],[-13,12],[-3,17],[8,9],[-8,8],[-1,10],[-11,13],[-13,1],[-9,-8],[-15,5],[-1,-11],[-12,-7],[-3,5]],[[5767,8523],[9,-9],[6,9],[-6,10],[-10,-2],[7,19],[-4,30]],[[5773,8590],[9,11]],[[5778,8608],[-1,16],[11,-5],[3,11],[10,-4],[7,12],[29,-8],[2,8],[-9,9],[-25,2],[-10,28],[-16,-9],[-7,2]],[[5856,9203],[15,-9],[19,18],[16,-11],[14,-3],[-7,-8],[-20,4],[6,-7],[19,-3],[-6,-7],[19,4],[5,-5],[35,-7],[23,-1],[52,-28],[21,-21],[14,-2],[16,-14],[13,-3],[30,-21],[1,-23],[7,-2],[-5,-24],[-21,-24],[-30,-15],[-22,-4],[-28,5],[-22,9],[-27,3],[-27,15],[-36,7],[-24,23],[-11,0],[8,-15],[18,-11],[3,-9],[13,-6],[-4,-7],[14,-3],[21,-20],[-4,-21],[-6,-7],[13,-46],[-6,-4],[16,-15],[15,2],[12,-18],[31,-13],[16,9],[1,21],[-25,5],[-16,19],[-3,12],[10,2],[7,12],[18,-9],[10,-13],[0,-9],[10,10],[31,-15],[9,7],[18,-7],[-4,22],[-19,30],[4,9],[18,12],[6,9],[18,5],[22,27],[11,-8],[20,3],[22,-21],[1,11],[11,23],[0,16],[-20,19],[10,28],[3,31],[-25,18],[18,-4],[37,0],[18,-6],[16,-18],[5,-18],[-38,-5],[-12,-22],[17,-9],[8,-17],[20,-5],[34,13],[5,22],[-3,11],[26,7],[1,6],[24,9],[31,22],[8,-1],[31,13],[-1,-12],[16,4],[-12,10],[32,18],[15,-3],[-7,-14],[6,-13],[-21,-8],[29,-3],[7,6],[11,-7],[1,12],[29,14],[38,-5],[18,17],[25,8],[15,-13],[-10,-8],[1,-13],[16,-4],[8,10],[-6,7],[20,5],[13,11],[0,10],[-22,28],[15,6],[2,10],[74,-10],[20,-7],[19,-15],[62,-29],[33,-25],[2,-9],[17,25],[7,19],[-21,2],[-10,16],[-1,12],[-35,14],[3,16],[12,3],[-6,9],[6,15],[-1,20],[-16,-3],[-2,17],[8,14],[28,12],[15,17],[14,51],[12,16],[5,-5],[52,1],[39,-11],[1,-25],[-16,-26],[1,-7],[-15,-11],[8,-13],[16,-10],[5,-15],[-2,-25],[-10,-9],[8,-25],[-5,-11],[3,-21],[-3,-16],[5,-8],[26,-20],[-15,-16],[3,-22],[-18,-13],[-9,-27],[-20,-14],[2,-15],[-15,-1],[-10,-7],[-22,21],[-22,-6],[8,-15],[27,-10],[22,2],[24,-8],[10,6],[2,16],[13,2],[26,20],[1,17],[24,24],[-1,25],[-11,15],[3,17],[29,12],[31,4],[1,-11],[19,-15],[-5,-15],[5,-20],[-7,-7],[18,-13],[18,-1],[-25,13],[0,18],[20,10],[-11,14],[-5,24],[-19,5],[-24,13],[-17,1],[-20,-10],[-27,5],[3,18],[-10,15],[6,25],[17,20],[-21,41],[-15,12],[14,22],[39,16],[5,17],[-4,28],[15,-7],[6,-30],[-13,-17],[7,-17],[-5,-18],[11,-4],[57,-7],[6,-11],[12,0],[-4,17],[-17,2],[-39,16],[-8,20],[27,8],[17,-13],[15,3],[-5,14],[-15,-2],[15,14],[16,5],[28,-3],[51,-35],[23,-3],[18,5],[14,-7],[-14,-16],[-16,-6],[-2,-17],[7,-12],[-10,-12],[11,2],[0,11],[10,11],[9,-6],[-4,-27],[-10,-9],[14,-10],[-7,14],[18,0],[6,8],[-17,44],[13,23],[-6,11],[-32,15],[-3,11],[-26,4],[-14,11],[4,23],[-11,9],[2,28],[39,5],[43,-1],[59,10],[40,3],[-23,-18],[25,2],[10,13],[-19,21],[-22,4],[14,18],[-21,4],[13,10],[16,-7],[68,47],[67,8],[66,16],[-28,9],[19,3],[22,-5],[25,7],[21,-3],[-16,-13],[58,10],[32,12],[29,-10],[-29,24],[18,-3],[40,4],[1,26],[63,39],[43,3],[33,-17],[-21,-13],[-24,-3],[82,-7],[6,-6],[-27,-21],[36,-1],[4,12],[38,1],[19,-4],[27,5],[47,-24],[3,-16],[19,4],[3,-28],[-21,5],[1,-12],[22,-1],[-2,-14],[-20,-17],[-20,-6],[-12,-13],[-47,-16],[-2,-9],[-32,-15],[-20,-19],[-27,-1],[-12,-18],[-17,-2],[-6,-15],[-15,-12],[23,6],[7,17],[37,-2],[15,8],[51,12],[23,10],[-7,6],[-25,-5],[-6,8],[13,10],[25,-6],[7,7],[8,-13],[19,-6],[22,5],[-2,12],[16,-20],[-8,-12],[44,9],[19,7],[100,-13],[-18,-4],[1,-11],[38,-12],[36,-5],[25,2],[21,-8],[-7,11],[19,-6],[11,17],[-8,10],[3,16],[17,-2],[10,10],[23,-14],[29,0],[12,-16],[7,15],[30,-4],[7,-12],[34,-14],[-34,-12],[30,-6],[-39,-3],[20,-10],[18,-1],[6,-12],[-15,-11],[-19,8],[27,-37],[13,-27],[40,-21],[13,12],[18,43],[10,14],[13,-19],[23,-12],[22,0],[4,6],[31,8],[22,-6],[19,-11],[11,-13],[7,27],[16,4],[12,-13],[17,2],[-3,27],[15,17],[-29,0],[12,16],[37,2],[4,10],[-12,9],[23,-1],[23,-9],[38,0],[50,-8],[39,-12],[-37,1],[-16,4],[-13,-15],[27,6],[42,2],[-26,-26],[10,16],[-12,4],[-3,-17],[-23,-12],[29,4],[30,31],[36,0],[34,-9],[13,-13],[-12,-9],[-7,7],[-9,-11],[25,-2],[-2,-11],[20,2],[0,-13],[24,3],[18,-20],[-13,0],[26,-9],[28,3],[65,12],[45,-1],[26,-6],[33,-17],[11,-25],[-11,-19],[3,-8],[31,-8],[3,-28],[11,-11],[-10,-25],[14,22],[-2,26],[19,17],[51,7],[23,-12],[23,2],[11,-5],[24,-1],[21,16],[16,-13],[2,-19],[29,-8],[7,-18],[22,4],[17,12],[-13,32],[-11,-1],[11,11],[-1,19],[41,-7],[22,-1],[17,-10],[1,9],[37,-6],[20,2],[28,-7],[71,-27],[17,-16],[-9958,-15],[3,-12],[28,-11],[2,-9],[12,1],[20,-19],[16,-2],[-10,-7],[12,-5],[0,10],[12,-7],[8,-20],[10,-2],[-3,-18],[5,-13],[-7,-6],[14,-8],[-1,-14],[17,13],[-11,3],[9,6],[-2,17],[-9,6],[27,1],[20,-12],[-5,9],[32,-6],[10,-17],[13,-7],[10,-17],[5,4],[17,-14],[-9,0],[-14,-11],[-5,-15],[-21,13],[11,-20],[-32,3],[4,-27],[-19,-12],[-8,-11],[16,-5],[6,-9],[-13,-1],[-12,-9],[-23,10],[-2,8],[-16,10],[-33,12],[-4,29],[-29,10],[-12,-10],[-30,4],[-11,27],[9,7],[2,15],[-7,-11],[-28,-4],[0,-16],[13,-11],[-7,-23],[9982,-11],[-10,-13],[-34,-9],[-21,8],[-1,8],[-16,9],[12,-16],[-24,2],[-11,7],[20,-23],[20,12],[-3,-16],[17,-17],[8,8],[12,-25],[2,-16],[-5,-13],[18,-9],[2,-20],[7,-16],[-12,-7],[0,-10],[-28,12],[-22,3],[-10,16],[2,-16],[-21,-16],[-25,-11],[-25,-18],[-12,2],[-7,-10],[-8,4],[-1,-10],[-10,-10],[-11,2],[5,-8],[-22,-13],[-3,-12],[-17,-4],[-1,-9],[-15,-7],[-10,-16],[-6,-18],[-8,8],[-7,21],[-13,9],[-32,0],[-35,-20],[-16,-23],[-4,0],[8,39],[-33,-24],[-5,-14],[-7,-2],[-2,11],[-30,3],[2,-9],[-9,-4],[-5,-19],[4,-12],[-12,-10],[4,-10],[-18,-16],[-10,-26],[1,-19],[13,-7],[1,11],[18,-8],[3,-6],[-15,-21],[1,-36],[11,1],[4,-32],[-9,-10],[-12,13],[8,11],[-6,4],[-8,-7],[6,-6],[-16,-12],[-7,-25],[-1,-16],[11,-34],[-11,-14],[-13,-1],[-6,6],[-15,-9],[-13,-15],[-6,-22],[4,-13],[-3,-6],[5,-22],[-13,10],[-9,-5],[-21,-25],[1,-26],[-7,-19],[-10,-20],[-11,-7],[-2,-8],[-17,-22],[-9,17],[-1,40],[-4,33],[-7,23],[-4,46],[-9,60],[-2,29],[4,46],[6,29],[6,15],[17,15],[7,17],[-5,22],[16,0],[7,14],[15,0],[20,19],[24,33],[3,13],[13,12],[5,12],[8,2],[18,25],[14,14],[-1,8],[30,21],[21,9],[-8,4],[15,18],[-7,9],[8,12],[2,33],[14,12],[17,-5],[-18,17],[-15,-1],[-22,-8],[3,-11],[-8,-6],[3,-9],[-6,-15],[10,-9],[-10,-7],[-5,11],[-10,-2],[-12,-18],[-32,-32],[-19,-14],[8,27],[-17,-7],[5,11],[-3,9],[14,29],[-3,10],[-12,-14],[-10,-2],[-3,12],[-13,2],[-26,-10],[-15,3],[-22,-15],[-1,-18],[-20,-20],[0,-9],[-27,-20],[-13,-28],[-7,-1],[-2,-23],[14,5],[16,-14],[-1,-7],[-11,-3],[-8,5],[-13,-10],[-19,11],[0,-8],[-10,-2],[-2,-8],[-16,8],[-9,-11],[-17,-2],[-9,15],[10,4],[18,-1],[6,4],[-15,8],[-10,14],[-13,-8],[-12,2],[-2,7],[-23,8],[-16,-8],[5,-5],[-14,-5],[6,-12],[-14,2],[-2,7],[-12,0],[-10,-9],[-31,13],[-3,-16],[-8,-3],[-6,9],[4,6],[-27,-1],[-32,2],[-19,-3],[-25,-13],[-19,-30],[-17,-11],[-8,-13],[-5,-20],[-15,-9],[-4,-11],[-11,-12],[-14,-9],[-22,-32],[-12,-26],[-26,-27],[-8,-4],[-15,-23],[-19,-15],[0,-12],[14,-9],[30,5],[0,-28],[-4,-21],[12,0],[5,14],[-6,6],[10,10],[8,-2],[-8,-11],[9,-11],[-12,-22],[16,4],[11,9],[7,14],[1,-9],[-10,-15],[7,-3],[8,26],[-1,20],[16,-8],[9,5],[17,-12],[0,-11],[27,-32],[6,-10],[-13,-12],[8,-5],[1,-15],[-4,-13],[11,-12],[-6,-3],[3,-9],[-9,-16],[-6,-3],[0,-12],[-6,-8],[0,-18],[-4,-4],[-3,-20],[1,-32],[3,-23],[-6,-17],[1,-17],[-6,-17],[0,-14],[-26,-38],[-7,-28],[-13,-18],[-5,-27],[-18,-41],[-15,-25],[-10,-11],[-8,-20],[-6,-6],[-5,-15],[-7,-5],[-11,-25],[-3,-14],[-5,0],[-1,-12],[-18,-20],[-9,-6],[-7,-11],[-8,0],[-12,-10],[-6,7],[-4,-4],[-12,10],[-3,-4],[-1,23],[-9,-11],[1,15],[-16,-21],[-1,-11],[-14,-11],[-4,-17]],[[7858,9748],[0,-12],[30,4],[14,-16],[16,-1],[8,-19],[-16,-10],[-31,-5],[-68,-3],[-33,-14],[-21,5],[21,17],[6,19],[36,39],[19,-6],[2,11],[17,-9]],[[7118,9769],[37,-6],[-27,-3],[-10,9]],[[7523,9794],[79,-8],[-18,-13],[-55,8],[-6,13]],[[6659,9787],[-27,3],[21,7],[6,-10]],[[7715,9797],[-5,-21],[25,17],[20,0],[24,-16],[-9,-24],[-19,-5],[25,-18],[-39,-10],[-38,4],[-11,8],[-50,2],[-18,12],[-1,14],[-33,3],[29,14],[23,19],[77,1]],[[6585,9810],[-4,-16],[-28,0],[1,14],[31,2]],[[6481,9813],[15,-7],[-35,-6],[20,13]],[[6646,9809],[-52,-12],[-13,20],[42,0],[23,-8]],[[6329,9836],[-38,-20],[-39,11],[77,9]],[[6729,9835],[-5,-10],[-29,-12],[-38,1],[-13,13],[14,11],[65,2],[6,-5]],[[6537,9839],[-13,-8],[-22,8],[35,0]],[[6388,9840],[7,-8],[30,3],[-9,-14],[-60,-9],[4,-14],[-38,-4],[16,15],[-22,8],[63,10],[-18,7],[27,6]],[[7225,9845],[-28,-9],[2,9],[26,0]],[[6560,9854],[57,-11],[-29,-1],[-28,12]],[[6542,9848],[13,2],[47,-13],[-19,-7],[-41,18]],[[6797,9859],[20,-16],[-28,-11],[-36,-3],[-17,9],[46,10],[15,11]],[[7536,9852],[-37,1],[2,7],[38,-2],[-3,-6]],[[7665,9859],[54,-29],[-20,-3],[0,-24],[-75,-6],[-22,-7],[-63,20],[36,9],[15,17],[-22,-3],[16,14],[81,12]],[[6577,9869],[28,-6],[-38,-6],[10,12]],[[6605,9878],[14,-9],[-44,4],[30,5]],[[5846,5121],[2,-14],[5,-5],[3,-11],[1,-26],[-1,-18],[-8,-2]],[[5801,5040],[6,7],[8,22],[-4,17]],[[5821,5103],[7,4],[4,-9],[5,7],[5,16],[4,0]],[[4526,6379],[-1,15],[2,22]],[[6163,6147],[4,4],[4,-6],[-8,2]],[[6345,6826],[6,-29],[6,-11],[0,-14],[11,-4],[-4,-5],[5,-5],[11,-23],[8,-6],[0,-16],[6,-10],[-2,-18],[-4,4],[7,-31],[8,-17],[0,-12],[8,-21]],[[6422,6601],[7,-4],[-5,-9],[8,-8]],[[6443,6277],[-4,-2],[-58,-16],[-17,-4],[-27,-27],[-16,-40],[-3,-19],[-9,-11],[-5,1],[-7,19],[-11,-3],[-25,5],[-5,6],[-16,1],[-15,-5],[-11,0],[-7,10],[-9,-11],[-1,-24],[2,-15],[-11,-16]],[[6188,6126],[-2,21],[-5,8],[0,8],[-6,9],[0,15],[-15,23],[-9,25],[0,8],[-7,16],[-2,14],[-11,49],[-18,29],[-9,3],[-6,13],[-13,43],[3,7],[-7,28],[4,20],[0,19],[-8,23],[0,8],[-14,46],[-18,21],[-2,-3],[-12,35],[3,0],[0,20],[-4,7],[-4,18],[-8,11],[1,11],[-5,5],[-8,30],[-4,7],[-8,26],[-7,15],[-6,24],[-8,14],[-6,-3],[-6,7],[5,20],[4,47]],[[6024,6449],[0,-20],[6,-21],[2,-34],[2,-65],[5,-40],[4,-8],[10,-8],[5,-9],[1,-10],[10,-6],[3,-8]],[[5946,5727],[-6,5],[3,17],[-2,21],[-20,35],[-3,45],[2,5],[2,31],[-13,0],[0,-12],[-18,0],[7,-17],[0,-27],[2,-11],[-14,-24],[-1,-9],[-18,-39],[-13,-4],[-14,23],[-7,8],[-11,-12],[-4,-17],[-13,-9],[-5,-10],[1,-6],[-23,0],[-4,15],[-22,1],[-14,-7],[-11,27],[-8,12],[-2,15],[-21,-7],[-3,-21],[-5,-6],[0,-19],[-3,-6],[-3,-29],[-11,-12]],[[5634,5812],[3,13],[-1,15],[-4,-1],[-7,16],[3,23],[-5,-2],[0,34],[-7,7],[-6,-7],[-5,9],[6,21],[7,14],[-5,25],[4,9],[9,9],[-4,7],[-1,18],[8,6],[0,10],[7,15],[2,15],[-2,11],[7,9],[12,2],[11,-2],[0,218]],[[5943,5426],[-14,-28],[-9,2],[-3,6],[-5,-5],[-13,-3],[-6,-13],[-7,5],[-4,12],[-7,-8],[-11,7],[-8,-17]],[[4535,5893],[-1,42]],[[4540,5965],[-5,11],[-1,13],[-14,41],[-8,3],[11,9],[8,18],[9,33]],[[7884,5266],[4,-3],[-4,-7],[-7,2],[7,8]],[[3953,2073],[22,-4],[11,-7],[17,-21],[3,-11],[-10,-7],[-10,20],[-12,11],[-22,11],[1,8]],[[9445,4521],[15,-17],[-6,0],[-3,9],[-8,4],[2,4]],[[9612,4569],[-6,-12],[-3,7],[9,5]],[[9481,4595],[13,-14],[8,0],[5,-13],[0,-8],[-12,4],[-9,10],[-1,11],[-6,3],[2,7]],[[9483,4641],[4,-12],[0,-10],[-5,7],[1,15]],[[9442,4640],[13,0],[11,-20],[-4,-9],[-10,7],[-13,1],[-6,13],[0,16],[3,2],[6,-10]],[[9388,4691],[3,-9],[-6,0],[3,9]],[[9371,4689],[-5,3],[5,6],[0,-9]],[[9466,4701],[6,-16],[-2,-11],[5,-5],[7,-34],[-14,21],[-3,10],[-5,37],[6,-2]],[[9378,4711],[4,-3],[3,-19],[-7,4],[-2,13],[-9,-2],[-1,6],[6,13],[5,-1],[1,-11]],[[9365,4716],[-5,1],[-1,9],[4,5],[2,-15]],[[9349,4747],[6,-9],[-4,-9],[-5,14],[3,4]],[[9405,4746],[4,0],[9,-16],[12,-12],[9,-15],[1,-13],[-7,12],[-11,9],[-18,25],[-3,13],[4,-3]],[[9349,4800],[13,-15],[3,-16],[10,-7],[-2,-7],[-15,13],[-7,18],[-6,9],[4,5]],[[4650,5621],[2,-12],[-12,10],[10,2]],[[4681,5581],[-6,9],[-23,18],[1,15],[-7,4],[-6,10],[2,3],[-3,18],[-5,-4],[-3,18],[7,1],[-6,7],[0,11],[4,7],[-6,5]],[[2560,5955],[-2,-14],[-12,0],[-13,5],[-14,14],[-14,2],[-8,11]],[[6359,5831],[0,-104],[-27,-84]],[[6201,5844],[18,-44],[13,-18],[15,0],[11,15],[4,0],[10,12],[11,-4],[6,-7],[6,4],[21,25],[8,-5],[14,3],[9,10],[12,-4]],[[6359,5831],[14,5],[4,7],[7,0],[12,7],[13,23],[15,-9],[-5,-19],[-1,-18],[2,-35],[8,-8],[-14,-6],[-3,-53],[-4,-8],[-1,-12],[-6,-10],[-3,-22],[-6,-20],[-8,-13],[0,-11],[-6,-25],[-10,-29],[-4,-29],[-12,-48],[-13,-33],[-7,-26],[-12,-30],[-14,-28],[-10,-24],[-9,-15],[-8,-19],[-21,-26],[-8,-7],[-18,-27],[-8,-17],[-10,-15],[-22,-48],[-11,-21],[-18,-49],[-9,-28]],[[5183,5187],[-3,-2],[-1,13],[5,8],[3,-11],[-4,-8]],[[3409,5499],[3,3],[1,20],[5,7],[8,-2],[20,-10],[2,10],[33,0],[18,-8],[-1,-20],[-3,-8]],[[5626,8009],[-12,-39]],[[5377,7802],[3,6]],[[5474,8485],[-7,-30],[-12,-34],[0,19],[19,45]],[[5521,8514],[8,1],[-8,-14],[-2,-22],[-10,-8],[-5,7],[-1,19],[10,16],[8,1]],[[5327,8537],[-2,-9],[-9,3],[11,6]],[[5671,8973],[-41,-2],[-9,5],[1,-19],[-16,0],[3,-8],[-13,0],[4,-13],[-10,-13],[-4,-15],[12,-15],[-17,-17],[-4,-15],[-13,-13],[-8,1],[-11,-13],[-32,-24],[0,-9],[-17,-3],[5,-11],[-5,-7],[-15,-2],[5,-14],[-5,-29],[-7,-9],[5,-32],[0,-18],[10,-10],[10,4],[14,-25],[9,-2],[6,-19],[-20,-23],[-6,3],[8,-16],[-17,-16],[-18,-13],[-13,-2],[8,-8],[-6,-3],[3,-15],[-10,-16],[6,-8],[0,-17],[-6,-10],[-3,-37],[-3,0],[-6,-23],[-5,-8],[-6,5],[-27,-3],[-11,-14],[-2,-11],[5,-10],[-6,-9],[-11,3],[-10,-5],[-14,2],[4,15],[-14,31],[8,6],[-6,8],[8,2],[-15,26],[-18,47],[4,27],[-4,8],[-9,-4],[-4,9],[-1,39],[6,-6]],[[5891,3637],[-3,2],[-1,-29],[-12,0],[-11,7],[-9,22],[0,24],[7,17],[1,10],[8,11],[14,-15],[2,2]],[[3249,6221],[-2,2]],[[5999,7178],[-3,27],[1,18],[-4,4],[1,20],[3,4]],[[5997,7251],[7,-5],[5,9],[0,11],[9,3],[-4,14],[4,21],[8,-5],[2,-7],[12,0],[5,6],[18,10],[10,-11],[16,-3],[21,8],[20,17],[22,-1],[16,7],[4,7],[4,-12]],[[5402,5930],[5,0],[0,13],[-4,3],[-6,-5],[2,-5]],[[5398,5936],[-1,0]],[[5044,5541],[-12,-7]],[[7728,5654],[6,-7],[0,-10],[-6,-6],[0,23]],[[7840,5883],[5,-11],[-4,1],[-1,10]],[[7858,5853],[-4,22],[-5,11],[-1,-7],[-12,18],[0,8],[-5,0],[-8,10],[-7,-5],[-16,5],[3,15],[-3,7],[4,21],[-11,5],[-15,-8],[-2,-9],[4,-13],[-4,-16],[0,-27],[2,-5],[-7,-15],[0,-11],[-4,-13],[-5,-20],[0,-15],[-9,-32],[2,-7],[-2,-27],[5,-21],[-3,-10],[16,5],[4,-12],[1,-29],[9,-16],[0,-12],[4,-37],[4,-16],[-4,4],[-3,29],[-6,-2],[2,-13],[6,-18],[6,0],[9,-18],[12,1],[6,-4],[6,-21],[7,-12]],[[7780,5554],[-4,13],[-8,12],[2,14],[-6,2],[-5,10],[-2,18],[-7,5],[1,7],[-5,11],[-4,1],[-3,18],[-5,-2],[-2,-12],[-4,5],[-2,18],[2,14],[4,19],[0,16],[3,16],[7,40]],[[6962,7540],[0,0]],[[6882,7324],[1,20],[12,24],[3,15],[-7,12],[-2,14],[4,10],[-2,9],[-12,1],[0,7],[-9,4],[2,16],[8,9],[18,-6],[7,6],[0,11],[8,4],[1,14],[-10,2],[13,4],[7,-3],[1,9],[-4,11],[5,14],[8,-8],[18,14],[5,7],[8,-18],[-11,-19],[7,-10],[9,3]],[[6497,7333],[-3,23],[2,30],[-1,22],[4,15],[-12,17],[0,9],[-11,0],[1,8],[14,2],[-9,14],[6,10],[-5,3],[-14,-3],[-5,6],[0,25],[4,9],[2,19],[4,-11],[13,-1],[5,-8],[16,6],[1,12],[8,-6],[3,14],[-19,23],[-4,34],[-6,5],[-16,-3],[-5,-6],[-5,-17],[4,0],[-3,-19],[-7,9],[-3,13]],[[6554,7562],[29,-5],[4,7],[-4,7],[-2,23],[4,3]],[[6585,7597],[4,-18],[11,-2],[7,14],[-6,6],[0,13]],[[6601,7610],[5,1],[4,19],[7,-2],[-3,10],[11,1],[2,6],[8,-12],[7,-2],[7,-14],[13,2],[5,-8],[-1,-12],[6,-8],[-5,-4],[4,-10],[-3,-10],[11,-11],[18,1],[6,-3],[7,6],[9,-10],[8,-36],[4,-2],[5,-29],[27,-31],[4,-10],[13,-16],[5,2],[10,-14],[27,-29],[7,1],[19,-14],[3,-4],[-4,-9],[0,-25]],[[8444,4645],[12,9]],[[8469,4667],[5,9],[1,10],[20,8],[10,-1],[6,5],[3,-4],[11,10],[11,-6],[-13,-19],[-8,-3],[-4,-9],[-7,-2],[-6,-8],[-10,-3],[-15,-17]],[[130,3966],[6,0],[-1,-7],[-5,7]],[[3308,5807],[-4,-9],[1,-31],[-4,-4],[-14,-1],[-5,4],[10,7],[0,20],[-5,5],[8,7],[13,2]],[[5303,7135],[4,-6],[-9,-6],[0,11],[5,1]],[[5238,7310],[7,2],[10,15],[13,6],[17,-9],[-4,-1],[6,-17],[-5,-4],[10,-3],[14,20],[3,-14],[-10,-23],[-6,-4],[-3,-16],[6,-18],[11,-10],[-1,-16],[3,-7],[-3,-11],[-12,-28],[-14,-14],[-2,-16],[4,-12],[9,-10],[6,4],[0,-13],[11,4],[2,-20],[9,-1]],[[5778,7600],[-2,-9],[6,-15],[20,-17],[6,-2],[-3,-13],[-14,-1],[-9,6],[-6,-7],[-12,1],[-9,-20],[-14,-10],[-15,-24],[2,17],[13,10],[3,7],[-20,-3],[-1,9]],[[5997,7251],[2,5],[-6,17],[12,18],[0,11],[-6,7],[-10,-18],[-8,-3],[-18,15],[-11,-13],[-17,-26],[-7,1],[-17,-8],[-13,9],[-7,18],[-21,18],[-18,5],[-3,-3],[0,-18],[-5,-18],[-4,6],[-13,-10],[-12,5],[-7,9],[0,16],[-7,-1],[-7,9],[-10,3],[-3,-6],[-11,1],[-2,-6],[-9,3],[8,5],[12,0],[-1,7],[8,7],[-15,-3],[-12,2],[-1,8],[7,-2],[-10,13],[0,14],[-5,5],[7,4],[-1,13],[-17,7],[-11,9],[7,6],[-4,14],[4,3],[5,-20],[14,8],[-7,0],[-5,16],[6,2],[3,10],[-6,-2],[0,14],[-6,9],[9,16],[-24,-6],[2,29],[16,25],[16,3],[2,-7],[11,-1],[-1,11],[8,-2],[-2,-7],[11,3],[19,-3],[1,7],[-8,3],[5,6],[27,5],[-15,3],[-11,13],[6,13],[19,-6],[11,5],[15,-8],[9,1],[7,11],[29,28],[14,6],[10,9],[28,-6],[10,0],[10,9],[1,-10],[6,-11],[9,-5],[10,6],[4,-16],[8,-13],[5,8],[12,-5],[0,-6],[13,-8],[8,0],[15,-7],[32,11],[4,-6],[14,-5],[12,7],[24,20],[3,7]],[[8378,6635],[10,-12],[-5,-8],[1,-22],[-6,-18],[-4,-43],[-3,-19],[-6,-20],[-4,-5],[-4,-17],[-1,-27],[-5,7],[-1,16],[-11,20],[-2,22],[-3,0],[2,15],[0,20],[17,58],[3,3],[4,18],[12,7],[2,9],[4,-4]],[[6108,4736],[-7,-14],[1,11],[6,3]],[[6093,4842],[6,-26],[-4,-4],[-7,16],[0,15],[5,-1]],[[6102,4899],[5,-11],[-3,-19],[-2,30]],[[5914,5071],[5,-1],[2,-12],[-9,7],[2,6]],[[5882,5125],[1,0]],[[5883,5125],[1,0]],[[5884,5125],[-1,-28],[-2,0],[-1,-30],[-2,-20],[4,2],[0,-28],[2,8],[4,-3],[0,13],[5,-3],[-3,10],[7,6],[2,-10],[12,-2],[8,5],[3,-7],[17,17],[-2,8],[-4,-6],[-10,4],[5,8],[-3,9],[5,-1],[5,9],[-1,12],[6,0],[-2,7],[8,17]],[[6088,4913],[1,-10],[-4,-16],[-3,-25],[-5,-21],[2,-26],[5,-5],[12,-22],[2,-15],[-4,-5],[-4,-23],[1,-10],[4,-2],[0,-13],[-4,-14],[2,-25],[4,-7],[0,-16],[4,-4],[0,-15],[4,-21],[-2,-8],[15,-16],[5,-14]],[[5971,4516],[-2,9]],[[5969,4527],[-5,7]],[[5964,4536],[-4,14],[2,20],[-2,4],[-1,30],[-7,20]],[[5949,4630],[-3,4]],[[5946,4635],[-4,-2],[-1,-10]],[[5914,4641],[-12,10],[-3,6],[-13,6],[-6,6],[-4,13],[-11,6]],[[5865,4688],[0,10],[-4,5],[-1,11],[-11,36],[1,11],[-3,8],[2,12],[-5,9],[-7,21],[-6,-1],[-6,12],[0,13],[6,7],[-5,32],[1,21],[-6,5],[2,27]],[[5846,5121],[10,4],[26,0]],[[5883,5125],[1,0]],[[5944,5197],[-8,-3],[1,8],[-8,-8],[-3,15],[-5,-3],[-2,-12],[-6,-7],[0,7],[-6,-6],[0,10],[-8,-17],[-9,0],[-4,-9],[3,-7],[-9,-26],[2,-14]],[[5823,5155],[5,6],[2,14],[-6,2]],[[5846,5254],[4,-12],[9,28],[10,11],[3,11],[-1,25],[-3,-9]],[[6061,7895],[-18,0],[-6,-11],[-4,2],[-12,-13],[-4,3],[-22,-8],[-14,-18],[-4,3],[-11,-12],[4,-22],[15,-28],[18,10],[13,-3],[-5,-9],[1,-11],[-17,-4],[-9,7],[-4,-10],[-23,-12],[-12,-18],[-10,-2],[-11,11],[5,5],[1,24],[-8,3],[-11,13],[-9,-2],[-1,8],[24,21],[8,2],[-1,14],[-6,-3],[-5,10],[-3,-6],[-18,-3],[-17,14],[4,8],[-7,6],[17,-5],[4,9],[-11,-4],[-6,5],[-25,-2],[-24,-46],[-5,1],[-10,-23],[4,2],[-3,-14]],[[5836,7853],[9,-17],[2,3],[-11,14]],[[5948,7848],[0,-9],[-11,7],[3,-13],[4,5],[21,-17],[6,-8],[4,-20],[9,-4],[-12,23],[-7,26],[-10,-6],[-7,16]],[[3523,3302],[-5,-5],[0,-12],[-8,-5],[3,-30]],[[3517,3240],[-4,-18],[-7,-13],[0,-7],[-13,-16],[-20,-17],[-12,10],[-14,0],[-7,-8],[-20,15],[-8,13],[-18,-1],[-16,29],[-2,10],[3,27],[-1,10],[9,9],[-4,31]],[[677,6342],[13,-11],[2,-12],[8,-13],[-6,-10],[-16,-13],[-3,-11],[-7,9],[1,15],[-4,25],[5,12],[-1,17],[8,-8]],[[649,6394],[3,-7],[7,2],[8,-8],[0,-7],[-9,-6],[-4,2],[0,10],[-7,7],[2,7]],[[631,6405],[16,-4],[-2,-5],[-15,2],[1,7]],[[613,6427],[6,-8],[1,-12],[-13,2],[-3,14],[7,10],[2,-6]],[[571,6463],[4,-3],[-1,-14],[-8,-3],[-6,11],[11,9]],[[2301,6687],[-6,35],[0,12],[6,-47]],[[2761,6828],[-2,-18],[-2,17],[4,1]],[[2366,6873],[3,-1],[-11,-13],[8,14]],[[1707,7111],[7,-9],[-6,0],[-1,9]],[[1671,7144],[8,-4],[-8,-2],[0,6]],[[2993,7551],[-6,-11],[8,7],[8,-1],[-20,-15],[-36,-12],[-4,1],[4,11],[7,6],[29,6],[10,8]],[[2582,7791],[0,-10],[-7,-17],[-3,8],[10,19]],[[2679,7836],[1,-8],[-10,3],[9,5]],[[2563,7913],[-19,-17],[-6,0],[5,14],[8,6],[12,-3]],[[2541,7956],[-2,-6],[-15,-14],[0,8],[17,12]],[[1595,7969],[-3,-9],[8,-13],[-1,-5],[-9,17],[5,10]],[[1582,8004],[-1,0]],[[2511,7947],[-14,-11],[-19,-11],[-20,-29],[-17,-21],[9,-3],[22,14],[6,0],[-5,-19],[14,-2],[11,5],[7,9],[14,4],[10,7],[7,13],[7,-14],[-1,-10],[10,6],[9,-1],[12,-22],[11,0],[9,-4],[14,14],[18,-2],[13,6],[0,-17],[15,-1]],[[2663,7852],[-3,-10],[9,-12],[-16,1],[-5,4],[-2,-11],[-7,9],[-15,5],[-3,-7],[-25,-7],[-13,0],[-15,-39],[-3,-12],[-10,-17],[2,-8],[10,17],[7,-3],[-11,-49],[1,-13],[-6,-26],[0,-14],[4,-15],[-2,-28],[9,-33],[8,-4],[16,14],[7,22],[5,26],[0,15],[-9,37],[3,10],[-3,17],[8,20],[0,14],[5,15],[7,2],[7,15],[-3,-22],[4,-4],[4,14],[0,16],[11,5],[-3,15],[9,10],[13,-8],[6,-11],[16,-7],[6,-13],[-4,-11],[4,-6],[-1,-28],[-6,-5],[-1,-13],[-7,-2],[-3,-18],[6,-5],[7,6],[6,16],[9,5],[7,-10],[4,-37],[3,-14]],[[2704,7634],[-5,5],[-3,-17],[-6,-8],[-3,-17],[-6,-12],[15,-11],[7,0],[5,-7],[9,4],[14,3],[9,12],[24,15],[26,21],[14,21],[5,2],[-1,17],[-5,3]],[[2804,7674],[10,6],[16,2],[13,-8],[18,0],[8,5],[15,19],[-3,9],[4,4],[-7,11],[15,16],[1,7]],[[3116,7818],[10,-9]],[[3134,7784],[3,-9],[-3,-20],[-20,-16],[-6,5],[-13,-5],[1,-9],[-12,11],[-3,-22],[-14,-14],[-10,3],[-8,-8],[1,-9],[-11,-15],[-6,-22],[1,-15],[5,1],[-13,-19],[9,-7],[5,-23],[17,-8],[-14,-3],[-6,-6],[0,11],[-15,-14],[0,12],[-5,5],[-1,-17],[-12,-9],[-29,-2],[-6,-9],[-8,-1],[-23,-27],[-1,-10],[8,-1],[-2,-29],[-3,-14],[-7,-9],[-1,-11],[-12,-24],[-1,15],[-7,2],[-10,13],[3,-23],[9,-21],[1,-16],[-10,-31],[-7,-13],[-8,-30],[-2,11],[4,20],[6,17],[-6,-2],[1,9],[-13,21],[-1,17],[4,11],[-2,15],[11,15],[-5,0],[-11,-10],[2,-16],[-4,-6],[0,-23],[4,-6],[1,-20],[-9,11],[-8,-2],[9,-4],[11,-13],[-2,-17],[-6,3],[8,-12],[-7,-12],[6,-8],[-4,-8],[12,-4],[5,-35],[7,-23],[-5,9],[-6,38],[-2,-15],[6,-17],[-9,5],[0,-7],[-15,-4],[-2,-6],[15,3],[13,-8],[-1,-17],[-3,2],[-5,-13],[-13,1],[-2,9],[-4,-8],[7,-6],[-2,-11],[-11,-8],[17,-2],[-7,-11],[-15,-4],[-15,-18],[-9,-27],[-11,1],[-13,-12],[-5,-10],[-4,-21],[-22,-32],[-14,-8],[1,-8],[-12,-15],[1,-5],[-11,-14],[-3,-12],[2,-18],[-4,-5],[-3,-19],[8,-63],[9,-38],[9,-26],[-5,0],[0,-10],[18,-75],[3,-31],[-2,-12],[-1,-28],[-4,-11],[-4,-29],[-12,-1],[-7,-4],[0,14],[-6,25],[-6,7],[-6,0],[-3,31],[-6,5],[0,20],[-7,-2],[-6,21],[-3,18],[7,15],[-1,8],[-7,6],[0,-19],[-5,8],[2,21],[4,14],[0,26],[-4,16],[-7,0],[-10,20],[-6,20],[-11,14],[-10,-4],[-10,-15],[-16,-5],[0,7],[-11,20],[-22,14],[-15,-1],[-2,9],[-4,-11],[-14,-5],[-4,7],[-1,16],[-3,2],[-2,-22],[-5,5],[-5,-5],[-10,6],[-14,-7],[-7,-9],[-11,7],[-4,7],[-8,-12],[2,-7],[10,-1],[3,4],[6,-14],[5,12],[3,-3],[-8,-29],[4,-8],[11,-5],[3,-9],[-4,-9],[-3,10],[-15,9],[2,4],[-12,11],[4,-9],[-2,-16],[-10,12],[-8,-14],[-15,9],[0,13],[-7,3],[-3,12],[-6,5],[-9,-8],[4,-6],[-13,-2],[-21,13],[-16,-5],[2,17],[-8,-18],[-17,-13],[-1,19],[-8,-5],[-1,-9],[4,-12],[-8,-12],[1,-4],[-14,-18],[-16,-9],[-12,8],[1,-9],[6,-8],[-7,-6],[-5,6],[1,-12],[-12,-8],[1,-14],[-7,-33],[-3,-26],[7,-32],[1,-16],[3,-1]],[[2245,6713],[1,7],[-9,21]],[[2193,6879],[-7,10]],[[1746,7056],[-4,10],[-2,27],[-8,16],[-15,18],[-6,2],[-3,12],[-9,0],[-10,6],[-10,18],[-21,3],[-9,5],[0,33],[-7,5],[0,12],[-12,15],[-5,18],[-9,13],[-4,23],[5,9],[-3,11],[-6,-1],[-8,13],[-3,21],[3,5],[9,-11],[-10,29],[8,6],[-7,6],[-2,-19],[-16,13],[5,3],[-7,20],[-7,6],[-10,20],[1,10],[-4,16],[2,10],[-2,15],[-7,17],[-8,9],[0,19],[8,15],[-2,17],[3,16],[-2,16],[-5,5],[3,12],[-5,8],[-1,32],[-5,10],[9,41],[4,25],[2,52],[2,11],[1,62],[13,7],[-14,-2],[1,29],[-4,-2],[6,13],[-7,6],[-10,44],[-7,20],[6,11],[15,-11],[24,0],[7,-6],[4,-14],[-9,-15],[12,8],[2,-20],[-7,-10],[2,-4],[10,14],[-1,29],[5,8],[-5,18],[-9,6],[8,12],[-10,16],[1,6]],[[60,8169],[1,-9],[-11,9],[10,0]],[[80,8161],[-11,0],[12,11],[-1,-11]],[[96,8175],[2,-14],[-10,0],[1,14],[7,0]],[[177,8186],[18,-5],[-12,-3],[-15,5],[9,3]],[[162,8200],[5,-4],[-4,-12],[-7,-4],[-27,-2],[22,6],[9,7],[-7,4],[9,5]],[[9827,8206],[-2,-8],[-9,2],[11,6]],[[9802,8235],[12,-10],[-11,-5],[-1,15]],[[332,8268],[5,-12],[-32,-29],[11,24],[7,1],[-1,9],[10,7]],[[367,8291],[6,-8],[9,8],[-9,-15],[8,1],[-14,-16],[-4,1],[-20,-13],[-6,4],[19,9],[1,25],[10,4]],[[391,8303],[7,-5],[-10,-3],[3,8]],[[451,8354],[5,-1],[6,-16],[-8,-9],[-16,0],[-4,-9],[-14,-3],[-3,11],[7,3],[10,16],[3,-2],[14,10]],[[1304,8361],[8,-30],[-14,25],[6,5]],[[558,8363],[-9,-20],[4,19],[5,1]],[[1355,8404],[7,-16],[-1,-16],[-6,-11],[-13,9],[-5,8],[5,20],[13,6]],[[1295,8417],[2,-9],[-14,-4],[5,11],[7,2]],[[1319,8419],[9,-1],[0,-12],[-13,5],[4,8]],[[1289,8428],[10,-1],[4,-16],[13,-7],[9,-30],[9,-9],[-1,-33],[-16,17],[2,8],[-21,10],[8,20],[-11,-1],[6,13],[-3,17],[-9,2],[0,10]],[[1315,8433],[-5,-12],[-6,8],[11,4]],[[1328,8428],[4,-13],[-9,9],[0,12],[5,-8]],[[1308,8454],[9,-14],[-10,-3],[1,17]],[[1278,8457],[7,-4],[1,-11],[-6,-6],[-6,-28],[-3,4],[0,20],[-4,26],[11,-1]],[[1283,8470],[24,-10],[-2,-17],[-9,13],[7,-18],[-16,-4],[0,23],[-10,9],[6,4]],[[745,8475],[8,0],[-14,-10],[6,10]],[[1234,8479],[-1,-12],[-6,-2],[-1,19],[8,-5]],[[1237,8491],[8,2],[9,-14],[7,-29],[-1,-30],[-5,0],[-13,33],[-1,15],[-10,18],[6,5]],[[749,8519],[11,0],[7,-8],[-2,-10],[8,0],[-4,-10],[-18,4],[10,-7],[-18,-9],[-14,-22],[-10,-6],[6,10],[-12,-1],[-12,22],[3,14],[7,7],[10,0],[7,-19],[-4,28],[5,5],[16,-5],[-3,10],[7,-3]],[[1229,8536],[23,-12],[-1,-13],[-7,-1],[-18,12],[14,-15],[13,1],[1,-16],[-7,0],[-19,17],[7,-17],[-4,-6],[-8,6],[-1,10],[-12,12],[1,20],[18,2]],[[1252,8544],[6,-11],[14,-6],[8,-16],[-2,-5],[2,-21],[-19,-19],[-1,12],[4,10],[-5,13],[-7,43]],[[761,8550],[18,-11],[-6,-8],[-18,-4],[-10,2],[1,9],[10,1],[5,11]],[[913,8659],[5,-3],[-25,-29],[20,32]],[[385,8661],[13,-6],[2,-22],[-19,-5],[-10,2],[-19,13],[-4,7],[16,0],[9,9],[12,2]],[[929,8665],[13,-4],[-15,-9],[2,13]],[[897,8667],[-2,-19],[-4,10],[6,9]],[[231,8857],[0,-6],[17,-7],[20,7],[23,-20],[21,-2],[-2,-9],[-15,1],[-9,-13],[-3,10],[-28,19],[-17,-8],[-13,10],[6,18]],[[1387,8402],[-3,-8],[4,-28],[-10,-21],[-9,-8],[-7,2],[-3,23],[6,6],[-1,24],[-15,16],[-8,-7],[-7,-22],[-9,13],[7,4],[5,24],[-18,22],[-11,25],[-19,8],[12,9],[-11,10],[-3,12],[14,-6],[-15,12],[-15,23],[-16,11],[-4,24],[-6,1],[-1,17],[-6,-11],[7,-17],[1,-24],[-13,11],[-8,-2],[2,13],[-8,12],[-3,-4],[-17,8],[19,-18],[2,-12],[-9,-4],[-20,5],[-23,23],[-9,16],[-34,19],[-11,9],[12,10],[-5,11],[-18,-12],[-9,0],[-21,9],[3,11],[-13,-5],[-31,8],[-30,-6],[-12,12],[-16,5],[3,18],[-11,-14],[-21,5],[9,13],[-18,-1],[-16,19],[-12,1],[-2,-7],[-15,-3],[-3,6],[9,19],[-17,-18],[2,-20],[8,-8],[-6,-3],[-8,-27],[-18,1],[-5,-5],[-2,13],[-12,-25],[-13,3],[-7,-13],[-19,-17],[-16,-2],[-6,6],[3,9],[19,10],[2,8],[-11,-6],[-10,7],[4,16],[8,10],[5,19],[-5,8],[27,21],[6,-6],[18,3],[-14,10],[4,5],[-19,4],[-15,-15],[-9,-2],[-20,-27],[-7,-16],[-11,-2],[9,-10],[-18,-24],[-11,0],[-4,-11],[-9,-5],[-3,-20],[10,3],[13,-8],[2,-6],[-11,-12],[-5,0],[-14,-31],[-4,7],[-2,-11],[-12,1],[-9,-17],[-9,2],[-2,-13],[-10,-1],[-14,-15],[7,-5],[-7,-12],[-5,4],[-12,-16],[-17,-5],[-2,-11],[-13,-1],[-4,-8],[7,-10],[-10,-4],[-1,-7],[-22,-6],[-5,-17],[-6,16],[-20,-21],[-10,2],[-12,-10],[-5,2],[6,12],[-10,1],[-6,-22],[-9,-11],[-12,8],[-4,-14],[-7,2],[-9,-9],[0,18],[10,3],[22,30],[12,12],[9,3],[34,-7],[-10,9],[5,17],[16,15],[24,17],[9,-4],[-1,15],[10,16],[18,15],[2,46],[12,18],[5,16],[-8,-7],[-25,-13],[-11,12],[1,10],[-9,-10],[4,-20],[-11,-2],[-14,29],[-8,-10],[-12,17],[-19,-11],[-20,-18],[-11,4],[11,7],[-1,13],[6,7],[-12,2],[0,15],[7,6],[-20,46],[-1,-17],[-16,-8],[-23,-4],[-9,6],[-13,23],[-19,12],[20,19],[18,-3],[7,-12],[9,7],[-4,7],[-29,2],[-20,20],[-7,-6],[-9,14],[0,21],[-6,7],[15,2],[-4,13],[18,26],[8,-3],[-3,14],[5,17],[11,0],[-8,7],[7,5],[17,0],[2,-11],[17,1],[20,24],[25,-1],[18,17],[-6,30],[-13,9],[10,4],[9,13],[-10,12],[-41,-24],[-17,-5],[-12,9],[-18,0],[-19,-8],[-33,8],[-8,6],[3,12],[-11,10],[7,9],[13,2],[-38,8],[-18,10],[37,28],[24,9],[16,13],[16,7],[29,2],[-7,-11],[7,-19],[26,2],[24,-8],[11,18],[13,-3],[-13,10],[-11,-2],[-2,11],[-15,10],[-5,9],[9,3],[7,-17],[12,-11],[10,4],[14,-9],[16,2],[-3,14],[-23,0],[-9,-7],[-10,10],[2,20],[-23,-2],[-30,5],[-10,27],[-34,25],[-20,9],[-16,11],[9,17],[0,14],[16,-2],[37,4],[19,11],[15,16],[2,19],[29,33],[26,0],[45,27],[39,4],[21,14],[12,13],[33,-7],[-12,-12],[11,-6],[16,16],[13,-7],[2,-12],[19,5],[38,-1],[9,-4],[-12,-15],[24,0],[-6,-6],[32,3],[11,-5],[30,5],[31,-8],[27,-11],[40,0],[30,-12],[40,9],[52,-27],[12,0]],[[2912,6333],[-2,-4]],[[2914,6329],[-1,4]],[[6651,7782],[-7,-26],[12,-19],[-3,-12],[11,5],[3,8],[-2,16],[3,11]],[[6601,7610],[-7,11],[-5,-2],[-4,-22]],[[6627,7805],[-10,-35],[2,-18],[4,-10],[9,17],[-3,20],[3,6],[-1,16]],[[3301,5940],[-4,4],[5,8],[-1,-12]],[[3313,5694],[1,-6],[-5,-8],[-9,-2],[1,7],[12,9]],[[3303,5691],[4,12],[2,-5],[-6,-7]],[[3228,5816],[-8,-8],[-9,6],[4,7],[6,-5],[4,10],[3,-10]],[[3018,5865],[-3,-7],[-14,-7],[0,-13],[10,-38],[-1,-16],[-4,-6],[-10,-30],[5,-18],[6,-7],[-1,-15],[6,-5],[9,7],[5,10],[-1,32],[-11,30],[-2,23],[3,10],[4,0],[12,13],[18,8],[5,9],[8,-2],[-2,13],[-11,-5],[-2,13],[2,16],[5,5],[6,-10],[2,-22],[4,-10],[12,3],[15,-10],[7,-12],[4,-15],[-2,-7],[5,-15],[8,-1],[17,4],[6,4],[21,2],[11,-20],[11,-9],[11,-5],[8,2],[4,9],[5,0],[2,8],[20,5],[-5,5],[-9,1],[10,6],[7,-3],[11,6],[12,1],[16,-4],[8,4],[-2,-6],[-10,-6],[-16,0],[1,-9],[5,-5],[1,-12],[-9,-1],[5,-4],[8,8],[5,-25],[2,17],[11,-10],[7,-3],[-2,7],[13,-19],[4,1],[7,-12],[-9,-24],[-3,-22],[-12,0],[10,-11],[3,6],[14,6],[6,-4],[3,6],[9,-4]],[[7888,5785],[0,-17],[-4,12],[4,5]],[[7999,6420],[-7,1],[-4,-12],[-7,-3],[1,-12],[-6,-6],[-5,4],[-9,-2],[4,-16],[-8,-8],[2,-17],[-7,-4],[-4,-11],[-7,-4],[-3,-15],[-1,-23],[-5,-13],[7,-30],[7,-15],[11,-17],[-1,-15],[8,-21],[9,-14],[4,-12],[16,-29],[6,-2],[16,-47],[8,-11],[1,-21],[5,-18],[-2,-5],[6,-25],[0,-35],[2,-3],[0,-23],[3,-13],[-6,-10],[0,-42],[-3,-5],[4,-7],[-4,-10],[-2,4],[0,-16],[-7,-2],[-2,-8],[-4,0],[-8,-14],[-6,-1],[-2,-13],[-5,0],[-11,-13],[-13,0],[-5,12],[1,-23],[-11,2],[11,-9],[-4,-11],[-6,4],[7,-11],[-3,-2],[-12,24],[0,-5],[10,-18],[2,-11],[-5,-6],[-10,15],[4,-19],[-1,-6],[-17,-13],[-12,-29],[-11,-2],[5,9],[-2,10],[0,36],[2,17],[6,7],[-10,15],[-5,-5],[-3,16]],[[9706,4050],[-7,13],[4,7],[3,-20]],[[9699,4104],[2,-14],[-8,6],[0,12],[6,-4]],[[9675,4172],[7,-8],[-6,-8],[-6,7],[5,9]],[[9671,4228],[8,-15],[-7,1],[-1,14]],[[9675,4243],[-6,-2],[-6,7],[7,9],[5,-14]],[[9650,4255],[10,-14],[1,-7],[-10,-6],[-4,27],[-5,1],[1,12],[4,-1],[3,-12]],[[9672,4262],[-3,21],[1,9],[3,-20],[-1,-10]],[[9662,4292],[-5,2],[9,9],[-4,-11]],[[9671,4298],[-2,1],[-1,24],[2,-2],[1,-23]],[[9633,4310],[4,2],[0,11],[5,-11],[3,-23],[-11,-7],[-7,15],[1,11],[-3,15],[1,17],[5,-11],[2,-19]],[[9653,4368],[1,-9],[-5,0],[4,9]],[[9654,4385],[-4,-3],[-1,10],[5,-7]],[[5917,7177],[-8,1]],[[233,4380],[5,-6],[-14,2],[-4,7],[7,5],[6,-8]],[[213,4406],[3,-6],[-1,-12],[-9,0],[-5,15],[12,3]],[[6488,5914],[7,-6],[7,6],[10,-9],[-9,-11],[-10,-3],[-6,2],[-5,12],[6,9]],[[6474,6141],[-14,-9],[-10,-18],[-2,-12],[2,-20],[-10,-7],[-13,-15],[-23,-11],[-11,-11],[-4,0],[-25,-18],[-3,-12],[-8,-16],[-6,-3],[-14,3],[-10,-9],[-6,-13],[-15,-8],[-5,-6],[-14,0],[-16,-6],[-7,-15],[-15,-17],[-7,3],[-4,-8],[-14,-5],[-10,9],[-3,-4],[-7,35],[2,25],[-6,21],[-2,16],[-3,43],[-6,7],[4,2],[-3,17],[3,18],[-1,29]],[[5913,3637],[-1,-16],[-5,-23],[-3,-38],[-5,-21],[-10,-19],[-7,-3],[-13,-27],[-21,-68],[-4,-16],[-15,-32],[-4,-4],[-16,-28],[-9,-21],[-13,-22],[-25,-35],[-27,-26],[-15,4],[-9,-9],[0,-11],[-17,5],[-4,-12],[-11,1],[-8,6],[-16,4],[-6,-7],[-23,6],[-10,-4],[-12,-19],[-7,3],[-6,-5],[-11,4],[-1,-6],[-11,0],[-14,-20],[-9,3],[-9,9],[0,11],[-6,4],[-8,-2],[0,17],[-10,-2],[0,-13],[-4,19],[5,10],[-2,12],[-7,16],[-4,20],[-4,-1],[1,18],[7,-2],[4,8],[1,20],[-2,22],[-4,17],[-9,20],[-7,28],[-8,24],[-6,42],[-6,29],[-7,15],[-3,15]],[[5815,3905],[12,3],[14,-12],[15,3],[13,-7]],[[5844,4282],[-15,1],[-13,-5],[-15,-18],[0,-21],[-3,-8]],[[5798,4231],[-3,3],[-13,-9],[-5,-13],[-12,-14],[-13,-38],[-2,-11]],[[5750,4149],[-9,-7],[-14,11],[-7,-7],[-7,11],[-12,1]],[[5792,4643],[5,5],[9,23],[3,15],[-7,8]],[[5849,4709],[-4,-14],[7,-1],[9,-18],[5,4],[-1,8]],[[5750,4149],[10,22],[5,5],[4,17],[11,9],[0,11],[8,0],[8,9],[1,-7],[8,12],[-7,4]]],"type":"Topology","objects":{"units":{"geometries":[{"arcs":[[0,1,2,3,4,5]],"type":"Polygon","id":"AFG","properties":{"name":"Afghanistan"}},{"arcs":[[[6,7,8,9]],[[10,11,12]]],"type":"MultiPolygon","id":"AGO","properties":{"name":"Angola"}},{"arcs":[[[13,14]],[[15,16]],[[17,18,19,20,21,22,23,24,25,26,27,28,29,30]]],"type":"MultiPolygon","id":"ALB","properties":{"name":"Albania"}},{"arcs":[[[31]]],"type":"MultiPolygon","id":"ALD","properties":{"name":"Aland"}},{"arcs":[[32,33]],"type":"Polygon","id":"AND","properties":{"name":"Andorra"}},{"arcs":[[[34]],[[35,36,37,38,39],[40]]],"type":"MultiPolygon","id":"ARE","properties":{"name":"United Arab Emirates"}},{"arcs":[[[41,42]],[[43,44]],[[45,46,47,48,49,50]]],"type":"MultiPolygon","id":"ARG","properties":{"name":"Argentina"}},{"arcs":[[[51]],[[52,53,54,55,56],[57],[58]]],"type":"MultiPolygon","id":"ARM","properties":{"name":"Armenia"}},{"arcs":[[[59]],[[60]],[[61]],[[62]],[[63]],[[64]],[[65]],[[66]],[[67]],[[68]],[[69]],[[70]],[[71]],[[72]],[[73]],[[74]],[[75]],[[76]],[[77]],[[78]],[[79]],[[80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90]],[[91]],[[92]],[[93]],[[94]],[[95]],[[96]],[[97]],[[98]],[[99]],[[100]],[[101]],[[102]],[[103]],[[104]],[[105]],[[106]],[[107]],[[108]],[[109]],[[110]],[[111]],[[112]],[[113]],[[114]],[[115]],[[116]],[[117]],[[118]],[[119]],[[120]]],"type":"MultiPolygon","id":"ATA","properties":{"name":"Antarctica"}},{"arcs":[[[121]]],"type":"MultiPolygon","id":"ATF","properties":{"name":"Fr. S. Antarctic Lands"}},{"arcs":[[[122]],[[123]],[[124]],[[125]],[[126]],[[127]],[[128]],[[129]],[[130]],[[131]],[[132]],[[133]],[[134]],[[135]],[[136]],[[137]],[[138]],[[139]],[[140]]],"type":"MultiPolygon","id":"AUS","properties":{"name":"Australia"}},{"arcs":[[141,142,143,144,145,146,147,148,149,150]],"type":"Polygon","id":"AUT","properties":{"name":"Austria"}},{"arcs":[[[151,152,-55]],[[-59]],[[-58]],[[153,154,155,-53,156],[-52]]],"type":"MultiPolygon","id":"AZE","properties":{"name":"Azerbaijan"}},{"arcs":[[157,158,159,160]],"type":"Polygon","id":"BDI","properties":{"name":"Burundi"}},{"arcs":[[161,162,163,164,165,166,167]],"type":"Polygon","id":"BEL","properties":{"name":"Belgium"}},{"arcs":[[168,169,170,171,172]],"type":"Polygon","id":"BEN","properties":{"name":"Benin"}},{"arcs":[[173,-172,174,175,176,177]],"type":"Polygon","id":"BFA","properties":{"name":"Burkina Faso"}},{"arcs":[[[178]],[[179]],[[180,181,182]]],"type":"MultiPolygon","id":"BGD","properties":{"name":"Bangladesh"}},{"arcs":[[183,184,185,186,187,188]],"type":"Polygon","id":"BGR","properties":{"name":"Bulgaria"}},{"arcs":[[189]],"type":"Polygon","id":"BHR","properties":{"name":"Bahrain"}},{"arcs":[[[190]],[[191]],[[192]],[[193]],[[194]],[[195]],[[196]],[[197]],[[198]],[[199]],[[200]]],"type":"MultiPolygon","id":"BHS","properties":{"name":"Bahamas"}},{"arcs":[[201,202,203,204,205]],"type":"Polygon","id":"BIH","properties":{"name":"Bosnia and Herz."}},{"arcs":[[206,207,208,209,210]],"type":"Polygon","id":"BLR","properties":{"name":"Belarus"}},{"arcs":[[[211,212,213]]],"type":"MultiPolygon","id":"BLZ","properties":{"name":"Belize"}},{"arcs":[[[214,215]],[[216,-51,217,218,219,220,221]]],"type":"MultiPolygon","id":"BOL","properties":{"name":"Bolivia"}},{"arcs":[[[222]],[[223]],[[224]],[[225]],[[226]],[[227]],[[228]],[[229]],[[230]],[[231]],[[232]],[[233]],[[234]],[[235]],[[236]],[[237]],[[238,239,240,241,242,243,-47,244,245,246,-222,247,248,249,250]]],"type":"MultiPolygon","id":"BRA","properties":{"name":"Brazil"}},{"arcs":[[251]],"type":"Polygon","id":"BRB","properties":{"name":"Barbados"}},{"arcs":[[[252,253]],[[254,255]]],"type":"MultiPolygon","id":"BRN","properties":{"name":"Brunei"}},{"arcs":[[256,257]],"type":"Polygon","id":"BTN","properties":{"name":"Bhutan"}},{"arcs":[[258,259,260]],"type":"Polygon","id":"BWA","properties":{"name":"Botswana"}},{"arcs":[[261,262,263,264,265,266]],"type":"Polygon","id":"CAF","properties":{"name":"Central African Rep."}},{"arcs":[[[267]],[[268]],[[269]],[[270]],[[271]],[[272]],[[273]],[[274,275,276,277]],[[278]],[[279]],[[280]],[[281]],[[282]],[[283]],[[284]],[[285]],[[286]],[[287]],[[288]],[[289]],[[290]],[[291]],[[292]],[[293]],[[294]],[[295]],[[296]],[[297]],[[298]],[[299]],[[300]],[[301]],[[302]],[[303]],[[304]],[[305]],[[306]],[[307]],[[308]],[[309]],[[310]],[[311]],[[312]],[[313]],[[314]],[[315]],[[316]],[[317]],[[318]],[[319]],[[320]],[[321]],[[322]],[[323]],[[324]],[[325]],[[326]],[[327]],[[328]],[[329]],[[330]],[[331]],[[332]],[[333,334,335,336,337,338,339,340,341,342,343,344,345,-346,346,347]],[[348]],[[349]],[[350]],[[351]],[[352]],[[353]],[[354]],[[355]],[[356]],[[357]],[[358]],[[359]],[[360]],[[361]],[[362]],[[363]],[[364]],[[365]],[[366]],[[367]],[[368]],[[369]],[[370]],[[371]],[[372]],[[373]],[[374]],[[375]],[[376]],[[377]],[[378]],[[379]],[[380]],[[381]],[[382]],[[383]],[[384]]],"type":"MultiPolygon","id":"CAN","properties":{"name":"Canada"}},{"arcs":[[385,386,387,-148,388,-146,389,390,391,392,393]],"type":"Polygon","id":"CHE","properties":{"name":"Switzerland"}},{"arcs":[[[394]],[[395]],[[396]],[[397]],[[398]],[[399]],[[400]],[[401]],[[402]],[[-44,403,-42,404]],[[405]],[[406]],[[407]],[[408]],[[409]],[[410]],[[411]],[[412]],[[413]],[[414]],[[415]],[[416]],[[417]],[[418]],[[419]],[[420]],[[421]],[[422]],[[423]],[[424]],[[425]],[[426]],[[427]],[[428]],[[429]],[[430]],[[431]],[[432]],[[433]],[[434]],[[435]],[[-50,436,437,-218]]],"type":"MultiPolygon","id":"CHL","properties":{"name":"Chile"}},{"arcs":[[[438]],[[439]],[[440]],[[441]],[[442,443,444,445,446,447,448,449,450,451,-258,452,453,454,455,456,-1,457,458,459,460,461,462,463,464]]],"type":"MultiPolygon","id":"CHN","properties":{"name":"China"}},{"arcs":[[[465,466]],[[-177,467,468,469,470,471]]],"type":"MultiPolygon","id":"CIV","properties":{"name":"C\u00f4te d'Ivoire"}},{"arcs":[[[472,-266,473,474,475,476,477,478,479]],[[480,481]]],"type":"MultiPolygon","id":"CMR","properties":{"name":"Cameroon"}},{"arcs":[[[482,483,484,485]],[[486,487,488,489]],[[490,491,492,493]]],"type":"MultiPolygon","id":"CNM","properties":{"name":"Cyprus U.N. Buffer Zone"}},{"arcs":[[[494]],[[495,496,497,498,499,500,501,502,503,-160,504,505,506,507,-10,508,-11,509,-264]]],"type":"MultiPolygon","id":"COD","properties":{"name":"Dem. Rep. Congo"}},{"arcs":[[-510,-13,510,511,-474,-265]],"type":"Polygon","id":"COG","properties":{"name":"Congo"}},{"arcs":[[[512,-249,513,514,515,516,517]]],"type":"MultiPolygon","id":"COL","properties":{"name":"Colombia"}},{"arcs":[[[518]],[[519]]],"type":"MultiPolygon","id":"COM","properties":{"name":"Comoros"}},{"arcs":[[[520]],[[521]],[[522]],[[523]]],"type":"MultiPolygon","id":"CPV","properties":{"name":"Cape Verde"}},{"arcs":[[[524,525,526,527]]],"type":"MultiPolygon","id":"CRI","properties":{"name":"Costa Rica"}},{"arcs":[[[528]],[[529]],[[530]],[[531,532,533,534]]],"type":"MultiPolygon","id":"CUB","properties":{"name":"Cuba"}},{"arcs":[[535]],"type":"Polygon","id":"CUW","properties":{"name":"Cura\u00e7ao"}},{"arcs":[[[536,-488]],[[-486,537,-494,538]]],"type":"MultiPolygon","id":"CYN","properties":{"name":"N. Cyprus"}},{"arcs":[[[539,540]],[[541]],[[542,543,-484]],[[544,545,546,547,-490,548,-492]]],"type":"MultiPolygon","id":"CYP","properties":{"name":"Cyprus"}},{"arcs":[[549,550,-151,551]],"type":"Polygon","id":"CZE","properties":{"name":"Czech Rep."}},{"arcs":[[[-387,552]],[[553,554]],[[555]],[[556,557,-552,-150,558,-394,559,560,-162,561,562,563]]],"type":"MultiPolygon","id":"DEU","properties":{"name":"Germany"}},{"arcs":[[564,565,566,567,568,569]],"type":"Polygon","id":"DJI","properties":{"name":"Djibouti"}},{"arcs":[[570]],"type":"Polygon","id":"DMA","properties":{"name":"Dominica"}},{"arcs":[[[571]],[[572]],[[573]],[[574]],[[575]],[[576]],[[577]],[[-564,578]]],"type":"MultiPolygon","id":"DNK","properties":{"name":"Denmark"}},{"arcs":[[[579,580,581,582,583,584]]],"type":"MultiPolygon","id":"DOM","properties":{"name":"Dominican Rep."}},{"arcs":[[585,586,587,588,589,590,591,592]],"type":"Polygon","id":"DZA","properties":{"name":"Algeria"}},{"arcs":[[[593]],[[594]],[[595]],[[596]],[[597]],[[598]],[[599,600,-515]]],"type":"MultiPolygon","id":"ECU","properties":{"name":"Ecuador"}},{"arcs":[[[601,602,603,604,605,606]]],"type":"MultiPolygon","id":"EGY","properties":{"name":"Egypt"}},{"arcs":[[[607]],[[-569,608,609,610]]],"type":"MultiPolygon","id":"ERI","properties":{"name":"Eritrea"}},{"arcs":[[-485,-544,611,-541,612,-545,-491,-538],[-542]],"type":"Polygon","id":"ESB","properties":{"name":"Dhekelia"}},{"arcs":[[[613]],[[614]],[[615]],[[616]],[[617]],[[618]],[[619,620]],[[621,622]],[[623]],[[624]],[[625]],[[626]],[[627,-33,628,629,630,631,632,633]]],"type":"MultiPolygon","id":"ESP","properties":{"name":"Spain"}},{"arcs":[[[634]],[[635]],[[636,637,638,639,640,641,642,643,644]]],"type":"MultiPolygon","id":"EST","properties":{"name":"Estonia"}},{"arcs":[[-568,645,-566,646,647,648,649,650,-609]],"type":"Polygon","id":"ETH","properties":{"name":"Ethiopia"}},{"arcs":[[[651]],[[652,653,654,655]]],"type":"MultiPolygon","id":"FIN","properties":{"name":"Finland"}},{"arcs":[[[656]],[[657]],[[658]]],"type":"MultiPolygon","id":"FJI","properties":{"name":"Fiji"}},{"arcs":[[[659]],[[660]]],"type":"MultiPolygon","id":"FLK","properties":{"name":"Falkland Is."}},{"arcs":[[[661]],[[662]],[[-240,663,664]],[[665]],[[666]],[[667]],[[668]],[[669,-560,-393,670,-391,671,672,673,674,-629,-34,-628,675,-164],[-627]]],"type":"MultiPolygon","id":"FRA","properties":{"name":"France"}},{"arcs":[[[676]],[[677]]],"type":"MultiPolygon","id":"FRO","properties":{"name":"Faeroe Is."}},{"arcs":[[[678]]],"type":"MultiPolygon","id":"FSM","properties":{"name":"Micronesia"}},{"arcs":[[[-512,679,680,-475]]],"type":"MultiPolygon","id":"GAB","properties":{"name":"Gabon"}},{"arcs":[[[681]],[[682]],[[683,684]],[[685]],[[686]],[[687]],[[688]],[[689]],[[690]],[[691]],[[692]],[[693]],[[694]],[[695]]],"type":"MultiPolygon","id":"GBR","properties":{"name":"United Kingdom"}},{"arcs":[[-157,-57,696,697,698]],"type":"Polygon","id":"GEO","properties":{"name":"Georgia"}},{"arcs":[[699,700,-466,701,-468,-176]],"type":"Polygon","id":"GHA","properties":{"name":"Ghana"}},{"arcs":[[-631,702]],"type":"Polygon","id":"GIB","properties":{"name":"Gibraltar"}},{"arcs":[[703,-471,704,705,706,707,708]],"type":"Polygon","id":"GIN","properties":{"name":"Guinea"}},{"arcs":[[709,710]],"type":"Polygon","id":"GMB","properties":{"name":"Gambia"}},{"arcs":[[[711]],[[712,713,-708]]],"type":"MultiPolygon","id":"GNB","properties":{"name":"Guinea-Bissau"}},{"arcs":[[[-681,714,-476]],[[715]]],"type":"MultiPolygon","id":"GNQ","properties":{"name":"Eq. Guinea"}},{"arcs":[[[716]],[[717]],[[718]],[[719]],[[720]],[[721]],[[722]],[[723]],[[724]],[[725]],[[726]],[[727]],[[728]],[[729]],[[730]],[[731]],[[732,-186,733,734,-27,735,-25,736]]],"type":"MultiPolygon","id":"GRC","properties":{"name":"Greece"}},{"arcs":[[[737]]],"type":"MultiPolygon","id":"GRD","properties":{"name":"Grenada"}},{"arcs":[[[738]],[[739]],[[740]],[[741]],[[742]],[[743]],[[744]],[[745]],[[746]],[[747]],[[748]],[[749]],[[750]],[[751]],[[752]],[[753]],[[754]],[[755]],[[756]],[[757]],[[758]],[[759]],[[760]],[[761]],[[762]],[[763]]],"type":"MultiPolygon","id":"GRL","properties":{"name":"Greenland"}},{"arcs":[[-213,764,765,766,767,768]],"type":"Polygon","id":"GTM","properties":{"name":"Guatemala"}},{"arcs":[[769]],"type":"Polygon","id":"GUM","properties":{"name":"Guam"}},{"arcs":[[[770,-251,771,772]]],"type":"MultiPolygon","id":"GUY","properties":{"name":"Guyana"}},{"arcs":[[[773,-447]]],"type":"MultiPolygon","id":"HKG","properties":{"name":"Hong Kong"}},{"arcs":[[774]],"type":"Polygon","id":"HMD","properties":{"name":"Heard I. and McDonald Is."}},{"arcs":[[[775,776,777,-766,778]]],"type":"MultiPolygon","id":"HND","properties":{"name":"Honduras"}},{"arcs":[[[-204,779,780]],[[781]],[[782]],[[783]],[[784]],[[785,786,-206,787,788]]],"type":"MultiPolygon","id":"HRV","properties":{"name":"Croatia"}},{"arcs":[[[-582,789]],[[790]],[[-584,791,-580,792]]],"type":"MultiPolygon","id":"HTI","properties":{"name":"Haiti"}},{"arcs":[[793,794,795,-786,796,-143,797]],"type":"Polygon","id":"HUN","properties":{"name":"Hungary"}},{"arcs":[[[798]],[[799]],[[800]],[[801,802,803,804]],[[805]],[[806]],[[807]],[[808]],[[809]],[[810]],[[811]],[[812]],[[813]],[[814]],[[815]],[[816]],[[817]],[[818]],[[819]],[[820]],[[821]],[[822]],[[823]],[[824]],[[825]],[[826]],[[827]],[[828]],[[829]],[[830]],[[831]],[[832]],[[833]],[[834]],[[835]],[[836]],[[837]],[[838]],[[839]],[[840]],[[841]],[[842]],[[843]],[[844]],[[845]],[[846]],[[847]],[[848]],[[849]],[[850]],[[851]],[[852]],[[853]],[[854]],[[855]],[[856]],[[857,858]],[[859]],[[860]],[[861]],[[862]],[[863]],[[864]],[[865]],[[866]],[[867]],[[868]],[[869]],[[870]],[[871]],[[872]],[[873]],[[874]],[[875]],[[876]],[[877]],[[878]],[[879]],[[880]],[[881,882]],[[883]],[[884,885]],[[886]],[[887]]],"type":"MultiPolygon","id":"IDN","properties":{"name":"Indonesia"}},{"arcs":[[888]],"type":"Polygon","id":"IMN","properties":{"name":"Isle of Man"}},{"arcs":[[[889]],[[890]],[[891]],[[892]],[[893,-453,-257,-452,894,-183,895,896,897,-455]]],"type":"MultiPolygon","id":"IND","properties":{"name":"India"}},{"arcs":[[[-684,898]]],"type":"MultiPolygon","id":"IRL","properties":{"name":"Ireland"}},{"arcs":[[[899]],[[-54,-156,900,901,-3,902,903,904,905,-152]]],"type":"MultiPolygon","id":"IRN","properties":{"name":"Iran"}},{"arcs":[[-905,906,907,908,909,910,911,912,913]],"type":"Polygon","id":"IRQ","properties":{"name":"Iraq"}},{"arcs":[[[914]]],"type":"MultiPolygon","id":"ISL","properties":{"name":"Iceland"}},{"arcs":[[915,916,917,918,919,920,921,-603,922,923,924,925]],"type":"Polygon","id":"ISR","properties":{"name":"Israel"}},{"arcs":[[[926]],[[927]],[[928,929,-672,-390,-145],[930],[931]]],"type":"MultiPolygon","id":"ITA","properties":{"name":"Italy"}},{"arcs":[[932]],"type":"Polygon","id":"JAM","properties":{"name":"Jamaica"}},{"arcs":[[933,934,-921,935,-919,936,937,-916,938,-910]],"type":"Polygon","id":"JOR","properties":{"name":"Jordan"}},{"arcs":[[[939]],[[940]],[[941]],[[942]],[[943]],[[944]],[[945]],[[946]],[[947]],[[948]],[[949]],[[950]],[[951]]],"type":"MultiPolygon","id":"JPN","properties":{"name":"Japan"}},{"arcs":[[952]],"type":"Polygon","id":"KAB","properties":{"name":"Baikonur"}},{"arcs":[[-898,953,-456]],"type":"Polygon","id":"KAS","properties":{"name":"Siachen Glacier"}},{"arcs":[[[954,955]],[[-460,956,957,958,959,960,961,962],[-953]]],"type":"MultiPolygon","id":"KAZ","properties":{"name":"Kazakhstan"}},{"arcs":[[[-649,963,964,965,966,967,968]]],"type":"MultiPolygon","id":"KEN","properties":{"name":"Kenya"}},{"arcs":[[-459,969,970,-957],[971],[972],[973]],"type":"Polygon","id":"KGZ","properties":{"name":"Kyrgyzstan"}},{"arcs":[[[974,975,976,977]]],"type":"MultiPolygon","id":"KHM","properties":{"name":"Cambodia"}},{"arcs":[[[978]]],"type":"MultiPolygon","id":"KIR","properties":{"name":"Kiribati"}},{"arcs":[[[979]],[[980]],[[981]],[[982,983]]],"type":"MultiPolygon","id":"KOR","properties":{"name":"Korea"}},{"arcs":[[984,-18,985,986]],"type":"Polygon","id":"XKX","properties":{"name":"Kosovo"}},{"arcs":[[[987]],[[988,-908,989]]],"type":"MultiPolygon","id":"KWT","properties":{"name":"Kuwait"}},{"arcs":[[990,-977,991,992,-450]],"type":"Polygon","id":"LAO","properties":{"name":"Lao PDR"}},{"arcs":[[-925,993,994]],"type":"Polygon","id":"LBN","properties":{"name":"Lebanon"}},{"arcs":[[-470,995,996,-705]],"type":"Polygon","id":"LBR","properties":{"name":"Liberia"}},{"arcs":[[-606,997,998,999,-587,1000,1001]],"type":"Polygon","id":"LBY","properties":{"name":"Libya"}},{"arcs":[[1002]],"type":"Polygon","id":"LCA","properties":{"name":"Saint Lucia"}},{"arcs":[[-389,-147]],"type":"Polygon","id":"LIE","properties":{"name":"Liechtenstein"}},{"arcs":[[[1003]]],"type":"MultiPolygon","id":"LKA","properties":{"name":"Sri Lanka"}},{"arcs":[[1004]],"type":"Polygon","id":"LSO","properties":{"name":"Lesotho"}},{"arcs":[[[1005,1006]],[[-210,1007,1008,1009,1010]]],"type":"MultiPolygon","id":"LTU","properties":{"name":"Lithuania"}},{"arcs":[[-561,-670,-163]],"type":"Polygon","id":"LUX","properties":{"name":"Luxembourg"}},{"arcs":[[1011,-211,-1011,1012,-644]],"type":"Polygon","id":"LVA","properties":{"name":"Latvia"}},{"arcs":[[1013,1014]],"type":"Polygon","id":"MAF","properties":{"name":"St-Martin"}},{"arcs":[[-622,1015,-620,1016,-592,1017,1018]],"type":"Polygon","id":"MAR","properties":{"name":"Morocco"}},{"arcs":[[1019,-674]],"type":"Polygon","id":"MCO","properties":{"name":"Monaco"}},{"arcs":[[1020,1021]],"type":"Polygon","id":"MDA","properties":{"name":"Moldova"}},{"arcs":[[[1022]],[[1023]]],"type":"MultiPolygon","id":"MDG","properties":{"name":"Madagascar"}},{"arcs":[[[1024]],[[1025]],[[1026]],[[1027]],[[1028]],[[1029,1030,1031,1032,1033,-214,-769,1034,1035],[1036]]],"type":"MultiPolygon","id":"MEX","properties":{"name":"Mexico"}},{"arcs":[[[-23,1037]],[[-187,-733,1038,-15,1039,-21,1040,-19,-985,1041]]],"type":"MultiPolygon","id":"MKD","properties":{"name":"Macedonia"}},{"arcs":[[1042,-178,-472,-704,1043,1044,-589]],"type":"Polygon","id":"MLI","properties":{"name":"Mali"}},{"arcs":[[[1045]],[[1046]],[[1047]],[[1048]],[[1049]],[[1050]],[[-993,1051,1052,-181,-895,-451]]],"type":"MultiPolygon","id":"MMR","properties":{"name":"Myanmar"}},{"arcs":[[1053,-986,-31,1054,-16,1055,-29,1056,-780,-203]],"type":"Polygon","id":"MNE","properties":{"name":"Montenegro"}},{"arcs":[[-464,1057,-462,1058]],"type":"Polygon","id":"MNG","properties":{"name":"Mongolia"}},{"arcs":[[[1059,1060,1061,1062,1063,1064,1065,1066,1067]]],"type":"MultiPolygon","id":"MOZ","properties":{"name":"Mozambique"}},{"arcs":[[[1068,1069,1070,-590,-1045]]],"type":"MultiPolygon","id":"MRT","properties":{"name":"Mauritania"}},{"arcs":[[[1071]]],"type":"MultiPolygon","id":"MUS","properties":{"name":"Mauritius"}},{"arcs":[[[1072,1073]],[[1074,1075]],[[1076,1077]],[[1078,1079]],[[1080,-1065,1081,1082]]],"type":"MultiPolygon","id":"MWI","properties":{"name":"Malawi"}},{"arcs":[[[1083]],[[-882,1084]],[[1085]],[[1086]],[[1087,1088]],[[-886,1089,-256,1090,-253,1091]],[[1092]]],"type":"MultiPolygon","id":"MYS","properties":{"name":"Malaysia"}},{"arcs":[[1093,-261,1094,1095,-8]],"type":"Polygon","id":"NAM","properties":{"name":"Namibia"}},{"arcs":[[[1096]],[[1097]],[[1098]]],"type":"MultiPolygon","id":"NCL","properties":{"name":"New Caledonia"}},{"arcs":[[1099,1100,-173,-174,-1043,-588,-1000]],"type":"Polygon","id":"NER","properties":{"name":"Niger"}},{"arcs":[[[1101,-478,1102,-169,-1101]]],"type":"MultiPolygon","id":"NGA","properties":{"name":"Nigeria"}},{"arcs":[[[1103,-528,1104,-776]]],"type":"MultiPolygon","id":"NIC","properties":{"name":"Nicaragua"}},{"arcs":[[[-166,1105]],[[1106]],[[-562,-168,1107],[1108]]],"type":"MultiPolygon","id":"NLD","properties":{"name":"Netherlands"}},{"arcs":[[[1109]],[[1110]],[[1111]],[[1112]],[[1113]],[[1114]],[[1115]],[[1116]],[[1117]],[[1118]],[[1119]],[[1120]],[[1121]],[[1122]],[[1123,-656,1124,1125]],[[1126]],[[1127]],[[1128]],[[1129]],[[1130]],[[1131]],[[1132]]],"type":"MultiPolygon","id":"NOR","properties":{"name":"Norway"}},{"arcs":[[-894,-454]],"type":"Polygon","id":"NPL","properties":{"name":"Nepal"}},{"arcs":[[[1133]],[[1134]],[[1135]],[[1136]],[[1137]],[[1138]]],"type":"MultiPolygon","id":"NZL","properties":{"name":"New Zealand"}},{"arcs":[[[1139]],[[1140,1141,-37,1142]],[[-41],[-35]],[[-40,1143]]],"type":"MultiPolygon","id":"OMN","properties":{"name":"Oman"}},{"arcs":[[[-954,-897,1144,-903,-2,-457]]],"type":"MultiPolygon","id":"PAK","properties":{"name":"Pakistan"}},{"arcs":[[[1145]],[[-517,1146,-526,1147]]],"type":"MultiPolygon","id":"PAN","properties":{"name":"Panama"}},{"arcs":[[[-248,-221,1148,-215,1149,-219,-438,1150,-600,-514]]],"type":"MultiPolygon","id":"PER","properties":{"name":"Peru"}},{"arcs":[[[1151]],[[1152]],[[1153]],[[1154]],[[1155]],[[1156]],[[1157]],[[1158]],[[1159]],[[1160]],[[1161]],[[1162]],[[1163]],[[1164]],[[1165]],[[1166]],[[1167]],[[1168]],[[1169]],[[1170]],[[1171]],[[1172]],[[1173]],[[1174]],[[1175]],[[1176]],[[1177]],[[1178]],[[1179]],[[1180]],[[1181]]],"type":"MultiPolygon","id":"PHL","properties":{"name":"Philippines"}},{"arcs":[[[1182]]],"type":"MultiPolygon","id":"PLW","properties":{"name":"Palau"}},{"arcs":[[[1183]],[[1184]],[[1185]],[[1186]],[[1187]],[[1188]],[[1189]],[[1190]],[[1191]],[[1192]],[[1193]],[[1194]],[[-858,1195]],[[1196]],[[1197]],[[1198]],[[1199]]],"type":"MultiPolygon","id":"PNG","properties":{"name":"Papua New Guinea"}},{"arcs":[[1200,1201,1202,-1008,-209,1203,1204,-550,-558,1205,-554,1206]],"type":"Polygon","id":"POL","properties":{"name":"Poland"}},{"arcs":[[[1207]]],"type":"MultiPolygon","id":"PRI","properties":{"name":"Puerto Rico"}},{"arcs":[[[1208,1209,-983,1210,-445]]],"type":"MultiPolygon","id":"PRK","properties":{"name":"Dem. Rep. Korea"}},{"arcs":[[[1211]],[[1212]],[[1213]],[[1214]],[[1215,-633]]],"type":"MultiPolygon","id":"PRT","properties":{"name":"Portugal"}},{"arcs":[[-247,1216,-245,-46,-217]],"type":"Polygon","id":"PRY","properties":{"name":"Paraguay"}},{"arcs":[[[-602,1217,-923]],[[-938,1218,-917]]],"type":"MultiPolygon","id":"PSX","properties":{"name":"Palestine"}},{"arcs":[[[1219]]],"type":"MultiPolygon","id":"PYF","properties":{"name":"Fr. Polynesia"}},{"arcs":[[1220,1221]],"type":"Polygon","id":"QAT","properties":{"name":"Qatar"}},{"arcs":[[1222,1223,-189,1224,-795,1225,-1021]],"type":"Polygon","id":"ROU","properties":{"name":"Romania"}},{"arcs":[[[1226]],[[1227]],[[1228]],[[1229]],[[1230]],[[1231]],[[1232]],[[1233]],[[1234]],[[1235]],[[1236]],[[-1203,1237,-1201,1238,-1006,1239,-1009]],[[1240]],[[1241]],[[1242,-639]],[[1243]],[[1244]],[[1245]],[[1246]],[[1247]],[[1248]],[[1249]],[[1250]],[[1251]],[[1252]],[[1253]],[[1254]],[[1255]],[[1256]],[[1257]],[[1258]],[[1259]],[[1260]],[[1261]],[[1262]],[[1263]],[[1264]],[[1265]],[[1266]],[[1267]],[[1268]],[[1269]],[[1270]],[[-1209,-444,1271,-465,-1059,-461,-963,1272,-154,-699,1273,1274,-207,-1012,-643,1275,-641,1276,-637,1277,-653,-1124,1278]],[[1279]],[[1280]],[[1281]],[[1282]],[[1283]],[[1284]],[[1285]],[[1286]],[[1287]],[[1288]],[[1289]],[[1290]],[[1291]],[[1292]],[[1293]],[[1294]],[[1295]],[[1296]],[[1297]],[[1298]]],"type":"MultiPolygon","id":"RUS","properties":{"name":"Russia"}},{"arcs":[[1299,-161,-504,1300,-502,1301]],"type":"Polygon","id":"RWA","properties":{"name":"Rwanda"}},{"arcs":[[-591,-1071,1302,-1018]],"type":"Polygon","id":"ESH","properties":{"name":"W. Sahara"}},{"arcs":[[[1303]],[[-989,1304,-1221,1305,-38,-1142,1306,1307,-934,-909]]],"type":"MultiPolygon","id":"SAU","properties":{"name":"Saudi Arabia"}},{"arcs":[[[1308,-610,-651,1309,-262,1310,-998,-605]]],"type":"MultiPolygon","id":"SDN","properties":{"name":"Sudan"}},{"arcs":[[-650,-969,1311,-496,-263,-1310]],"type":"Polygon","id":"SSD","properties":{"name":"S. Sudan"}},{"arcs":[[-1044,-709,-714,1312,-711,1313,-1069]],"type":"Polygon","id":"SEN","properties":{"name":"Senegal"}},{"arcs":[[1314]],"type":"Polygon","id":"SGP","properties":{"name":"Singapore"}},{"arcs":[[[1315]]],"type":"MultiPolygon","id":"SGS","properties":{"name":"S. Geo. and S. Sandw. Is."}},{"arcs":[[[1316]],[[1317]],[[1318]],[[1319]],[[1320]],[[1321]],[[1322]],[[1323]],[[1324]],[[1325]],[[1326]],[[1327]],[[1328]]],"type":"MultiPolygon","id":"SLB","properties":{"name":"Solomon Is."}},{"arcs":[[[1329]],[[-997,1330,-706]]],"type":"MultiPolygon","id":"SLE","properties":{"name":"Sierra Leone"}},{"arcs":[[[-778,1331,-767]]],"type":"MultiPolygon","id":"SLV","properties":{"name":"El Salvador"}},{"arcs":[[-931]],"type":"Polygon","id":"SMR","properties":{"name":"San Marino"}},{"arcs":[[1332,-647,-565,1333]],"type":"Polygon","id":"SOL","properties":{"name":"Somaliland"}},{"arcs":[[-964,-648,-1333,1334]],"type":"Polygon","id":"SOM","properties":{"name":"Somalia"}},{"arcs":[[-1225,-188,-1042,-987,-1054,-202,-787,-796]],"type":"Polygon","id":"SRB","properties":{"name":"Serbia"}},{"arcs":[[[1335]]],"type":"MultiPolygon","id":"STP","properties":{"name":"S\u00e3o Tom\u00e9 and Principe"}},{"arcs":[[-664,-239,-771,1336]],"type":"Polygon","id":"SUR","properties":{"name":"Suriname"}},{"arcs":[[1337,-798,-142,-551,-1205]],"type":"Polygon","id":"SVK","properties":{"name":"Slovakia"}},{"arcs":[[-789,1338,-929,-144,-797]],"type":"Polygon","id":"SVN","properties":{"name":"Slovenia"}},{"arcs":[[[1339]],[[1340]],[[1341]],[[1342,-1125,-655]]],"type":"MultiPolygon","id":"SWE","properties":{"name":"Sweden"}},{"arcs":[[-1061,1343]],"type":"Polygon","id":"SWZ","properties":{"name":"Swaziland"}},{"arcs":[[1344,-1014]],"type":"Polygon","id":"SXM","properties":{"name":"Sint Maarten"}},{"arcs":[[-913,911,-911,-939,-926,-995,1345,1346]],"type":"Polygon","id":"SYR","properties":{"name":"Syria"}},{"arcs":[[-1311,-267,-473,1347,-481,1348,-479,-1102,-1100,-999]],"type":"Polygon","id":"TCD","properties":{"name":"Chad"}},{"arcs":[[-171,1349,-700,-175]],"type":"Polygon","id":"TGO","properties":{"name":"Togo"}},{"arcs":[[[1350]],[[1351]],[[-992,-976,1352,-1089,1353,-1052]]],"type":"MultiPolygon","id":"THA","properties":{"name":"Thailand"}},{"arcs":[[[-974]],[[1354]],[[-970,-458,-6,1355]]],"type":"MultiPolygon","id":"TJK","properties":{"name":"Tajikistan"}},{"arcs":[[[-4,-902,1356,-961,1357,1358,1359]]],"type":"MultiPolygon","id":"TKM","properties":{"name":"Turkmenistan"}},{"arcs":[[[1360,-803]],[[-805,1361]]],"type":"MultiPolygon","id":"TLS","properties":{"name":"Timor-Leste"}},{"arcs":[[[1362]]],"type":"MultiPolygon","id":"TON","properties":{"name":"Tonga"}},{"arcs":[[[1363]]],"type":"MultiPolygon","id":"TTO","properties":{"name":"Trinidad and Tobago"}},{"arcs":[[[1364]],[[-1001,-586,1365]]],"type":"MultiPolygon","id":"TUN","properties":{"name":"Tunisia"}},{"arcs":[[[1366,-734,-185]],[[-697,-56,-153,-906,-914,-1347,1367]]],"type":"MultiPolygon","id":"TUR","properties":{"name":"Turkey"}},{"arcs":[[[1368]]],"type":"MultiPolygon","id":"TWN","properties":{"name":"Taiwan"}},{"arcs":[[[1369]],[[1370]],[[1371]],[[1372]],[[1373,1374,1375,-966,1376,-1067,1377,-1074,1378,-1076,1379,-1078,1380,-1080,1381,-1083,1382,1383,-158,-1300,1384]]],"type":"MultiPolygon","id":"TZA","properties":{"name":"Tanzania"}},{"arcs":[[[-1375,1385]],[[1386,-1385,-1302,-501,1387,-499,1388,-497,-1312,-968]]],"type":"MultiPolygon","id":"UGA","properties":{"name":"Uganda"}},{"arcs":[[[1389,-1223,-1022,-1226,-794,-1338,-1204,-208,-1275],[1390],[1391]]],"type":"MultiPolygon","id":"UKR","properties":{"name":"Ukraine"}},{"arcs":[[1392,-242,1393,-48,-244]],"type":"Polygon","id":"URY","properties":{"name":"Uruguay"}},{"arcs":[[[1394]],[[1395]],[[1396]],[[1397]],[[1398]],[[1399]],[[1400]],[[1401]],[[1402]],[[1403]],[[1404]],[[1405]],[[1406]],[[1407]],[[1408]],[[1409]],[[1410,-344]],[[1411,-340,1412,-338,1413,-336,1414,-334,-278,1415,-276,1416,-1033,1417,-1031,1418,-1036,1419,-342]],[[1420]],[[1421]],[[1422]],[[1423]],[[1424]],[[1425]],[[1426]],[[1427]],[[1428]],[[1429]],[[1430]],[[1431]],[[1432]],[[1433]],[[1434]],[[1435]],[[1436]],[[1437]],[[1438]],[[1439]],[[1440]],[[1441]],[[1442]],[[1443]],[[1444]],[[1445]],[[1446]],[[1447]],[[1448]],[[1449]],[[1450]],[[1451]],[[1452]],[[1453]],[[-347,345,1454]]],"type":"MultiPolygon","id":"USA","properties":{"name":"United States"}},{"arcs":[[[-534,1455]],[[1456,-532]]],"type":"MultiPolygon","id":"USG","properties":{"name":"USNB Guantanamo Bay"}},{"arcs":[[[-973]],[[-972]],[[-955,1457,-958,-971,-1356,-5,-1360,1458,-1358,-960,1459],[-1355]]],"type":"MultiPolygon","id":"UZB","properties":{"name":"Uzbekistan"}},{"arcs":[[-932]],"type":"Polygon","id":"VAT","properties":{"name":"Vatican"}},{"arcs":[[[1460]]],"type":"MultiPolygon","id":"VCT","properties":{"name":"St. Vin. and Gren."}},{"arcs":[[[1461]],[[1462]],[[1463]],[[-772,-250,-513,1464]]],"type":"MultiPolygon","id":"VEN","properties":{"name":"Venezuela"}},{"arcs":[[[1465]],[[1466,-978,-991,-449]]],"type":"MultiPolygon","id":"VNM","properties":{"name":"Vietnam"}},{"arcs":[[[1467]],[[1468]],[[1469]],[[1470]],[[1471]],[[1472]],[[1473]],[[1474]],[[1475]],[[1476]],[[1477]],[[1478]]],"type":"MultiPolygon","id":"VUT","properties":{"name":"Vanuatu"}},{"arcs":[[1479,-547]],"type":"Polygon","id":"WSB","properties":{"name":"Akrotiri"}},{"arcs":[[[1480]],[[1481]]],"type":"MultiPolygon","id":"WSM","properties":{"name":"Samoa"}},{"arcs":[[[1482]],[[1483,-1307,-1141]]],"type":"MultiPolygon","id":"YEM","properties":{"name":"Yemen"}},{"arcs":[[[-1062,-1344,-1060,1484,-1095,-260,1485],[-1005]]],"type":"MultiPolygon","id":"ZAF","properties":{"name":"South Africa"}},{"arcs":[[-1383,-1082,-1064,1486,1487,1488,-1094,-7,-508,1489,-506,1490]],"type":"Polygon","id":"ZMB","properties":{"name":"Zambia"}},{"arcs":[[-1063,-1486,-259,-1489,1491,-1487]],"type":"Polygon","id":"ZWE","properties":{"name":"Zimbabwe"}}],"type":"GeometryCollection"}},"transform":{"translate":[-180,-90],"scale":[0.036003600360036005,0.01736514657995801]}} \ No newline at end of file diff --git a/src/images/marker-icon-2x.png b/src/images/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 Binary files /dev/null and b/src/images/marker-icon-2x.png differ diff --git a/src/images/marker-icon.png b/src/images/marker-icon.png new file mode 100644 index 0000000..950edf2 Binary files /dev/null and b/src/images/marker-icon.png differ diff --git a/src/images/marker-shadow.png b/src/images/marker-shadow.png new file mode 100644 index 0000000..9fd2979 Binary files /dev/null and b/src/images/marker-shadow.png differ diff --git a/src/images/mastercard.svg b/src/images/mastercard.svg new file mode 100644 index 0000000..ab26667 --- /dev/null +++ b/src/images/mastercard.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + diff --git a/src/images/mountains.jpeg b/src/images/mountains.jpeg new file mode 100644 index 0000000..781fc42 Binary files /dev/null and b/src/images/mountains.jpeg differ diff --git a/src/images/paypal.svg b/src/images/paypal.svg new file mode 100644 index 0000000..bd30ffa --- /dev/null +++ b/src/images/paypal.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/product/aexpress.svg b/src/images/product/aexpress.svg new file mode 100644 index 0000000..bb6431f --- /dev/null +++ b/src/images/product/aexpress.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/product/img1.jpg b/src/images/product/img1.jpg new file mode 100644 index 0000000..31fac52 Binary files /dev/null and b/src/images/product/img1.jpg differ diff --git a/src/images/product/img2.jpg b/src/images/product/img2.jpg new file mode 100644 index 0000000..bc56e75 Binary files /dev/null and b/src/images/product/img2.jpg differ diff --git a/src/images/product/img3.jpg b/src/images/product/img3.jpg new file mode 100644 index 0000000..5eb68be Binary files /dev/null and b/src/images/product/img3.jpg differ diff --git a/src/images/product/img4.jpg b/src/images/product/img4.jpg new file mode 100644 index 0000000..1d5a960 Binary files /dev/null and b/src/images/product/img4.jpg differ diff --git a/src/images/product/img5.jpeg b/src/images/product/img5.jpeg new file mode 100644 index 0000000..f5e0e37 Binary files /dev/null and b/src/images/product/img5.jpeg differ diff --git a/src/images/product/img6.jpg b/src/images/product/img6.jpg new file mode 100644 index 0000000..8065737 Binary files /dev/null and b/src/images/product/img6.jpg differ diff --git a/src/images/product/mastercard.svg b/src/images/product/mastercard.svg new file mode 100644 index 0000000..ab26667 --- /dev/null +++ b/src/images/product/mastercard.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + diff --git a/src/images/product/paypal.svg b/src/images/product/paypal.svg new file mode 100644 index 0000000..bd30ffa --- /dev/null +++ b/src/images/product/paypal.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/product/visa.svg b/src/images/product/visa.svg new file mode 100644 index 0000000..65d4c99 --- /dev/null +++ b/src/images/product/visa.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/profile.jpg b/src/images/profile.jpg new file mode 100644 index 0000000..45061e9 Binary files /dev/null and b/src/images/profile.jpg differ diff --git a/src/images/profile/BehanceIcon.svg b/src/images/profile/BehanceIcon.svg new file mode 100644 index 0000000..32291c7 --- /dev/null +++ b/src/images/profile/BehanceIcon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/images/profile/DribbleIcon.svg b/src/images/profile/DribbleIcon.svg new file mode 100644 index 0000000..616b08b --- /dev/null +++ b/src/images/profile/DribbleIcon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/profile/FacebookIcon.svg b/src/images/profile/FacebookIcon.svg new file mode 100644 index 0000000..793a4e8 --- /dev/null +++ b/src/images/profile/FacebookIcon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/profile/FolderBlueDark.svg b/src/images/profile/FolderBlueDark.svg new file mode 100644 index 0000000..9b7976d --- /dev/null +++ b/src/images/profile/FolderBlueDark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/FolderBlueLight.svg b/src/images/profile/FolderBlueLight.svg new file mode 100644 index 0000000..8a954b2 --- /dev/null +++ b/src/images/profile/FolderBlueLight.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/FolderGreenDark.svg b/src/images/profile/FolderGreenDark.svg new file mode 100644 index 0000000..cf0817e --- /dev/null +++ b/src/images/profile/FolderGreenDark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/FolderGreenLight.svg b/src/images/profile/FolderGreenLight.svg new file mode 100644 index 0000000..f3585a9 --- /dev/null +++ b/src/images/profile/FolderGreenLight.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/FolderRedDark.svg b/src/images/profile/FolderRedDark.svg new file mode 100644 index 0000000..80f388b --- /dev/null +++ b/src/images/profile/FolderRedDark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/FolderRedLight.svg b/src/images/profile/FolderRedLight.svg new file mode 100644 index 0000000..5c4d5d3 --- /dev/null +++ b/src/images/profile/FolderRedLight.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/FolderYellowDark.svg b/src/images/profile/FolderYellowDark.svg new file mode 100644 index 0000000..ec8e6e6 --- /dev/null +++ b/src/images/profile/FolderYellowDark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/FolderYellowLight.svg b/src/images/profile/FolderYellowLight.svg new file mode 100644 index 0000000..8df6469 --- /dev/null +++ b/src/images/profile/FolderYellowLight.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/profile/InstagramIcon.svg b/src/images/profile/InstagramIcon.svg new file mode 100644 index 0000000..e5fd4b6 --- /dev/null +++ b/src/images/profile/InstagramIcon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/images/profile/MediumIcon.svg b/src/images/profile/MediumIcon.svg new file mode 100644 index 0000000..414b5f9 --- /dev/null +++ b/src/images/profile/MediumIcon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/images/profile/growth.svg b/src/images/profile/growth.svg new file mode 100644 index 0000000..b1eabf4 --- /dev/null +++ b/src/images/profile/growth.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/images/profile/profilePhoto.svg b/src/images/profile/profilePhoto.svg new file mode 100644 index 0000000..7d0dc0d --- /dev/null +++ b/src/images/profile/profilePhoto.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/profile/rnsHero.png b/src/images/profile/rnsHero.png new file mode 100644 index 0000000..d965f91 Binary files /dev/null and b/src/images/profile/rnsHero.png differ diff --git a/src/images/react-logo.svg b/src/images/react-logo.svg new file mode 100644 index 0000000..f700374 --- /dev/null +++ b/src/images/react-logo.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/src/images/rns.png b/src/images/rns.png new file mode 100644 index 0000000..60baebd Binary files /dev/null and b/src/images/rns.png differ diff --git a/src/images/search/img1.jpg b/src/images/search/img1.jpg new file mode 100644 index 0000000..31fac52 Binary files /dev/null and b/src/images/search/img1.jpg differ diff --git a/src/images/search/img2.jpg b/src/images/search/img2.jpg new file mode 100644 index 0000000..bc56e75 Binary files /dev/null and b/src/images/search/img2.jpg differ diff --git a/src/images/search/img3.jpg b/src/images/search/img3.jpg new file mode 100644 index 0000000..5eb68be Binary files /dev/null and b/src/images/search/img3.jpg differ diff --git a/src/images/search/img4.jpg b/src/images/search/img4.jpg new file mode 100644 index 0000000..1d5a960 Binary files /dev/null and b/src/images/search/img4.jpg differ diff --git a/src/images/timeline/a1.jpg b/src/images/timeline/a1.jpg new file mode 100644 index 0000000..d24e9d6 Binary files /dev/null and b/src/images/timeline/a1.jpg differ diff --git a/src/images/timeline/a2.jpg b/src/images/timeline/a2.jpg new file mode 100644 index 0000000..17098ce Binary files /dev/null and b/src/images/timeline/a2.jpg differ diff --git a/src/images/timeline/a3.jpg b/src/images/timeline/a3.jpg new file mode 100644 index 0000000..f4591d5 Binary files /dev/null and b/src/images/timeline/a3.jpg differ diff --git a/src/images/timeline/a4.jpg b/src/images/timeline/a4.jpg new file mode 100644 index 0000000..98f0310 Binary files /dev/null and b/src/images/timeline/a4.jpg differ diff --git a/src/images/timeline/mountains.jpeg b/src/images/timeline/mountains.jpeg new file mode 100644 index 0000000..781fc42 Binary files /dev/null and b/src/images/timeline/mountains.jpeg differ diff --git a/src/images/timeline/profile.jpg b/src/images/timeline/profile.jpg new file mode 100644 index 0000000..45061e9 Binary files /dev/null and b/src/images/timeline/profile.jpg differ diff --git a/src/images/users/1.png b/src/images/users/1.png new file mode 100644 index 0000000..99e3188 Binary files /dev/null and b/src/images/users/1.png differ diff --git a/src/images/users/10.png b/src/images/users/10.png new file mode 100644 index 0000000..ff59ecc Binary files /dev/null and b/src/images/users/10.png differ diff --git a/src/images/users/2.png b/src/images/users/2.png new file mode 100644 index 0000000..b95ade7 Binary files /dev/null and b/src/images/users/2.png differ diff --git a/src/images/users/4.png b/src/images/users/4.png new file mode 100644 index 0000000..ffa26f8 Binary files /dev/null and b/src/images/users/4.png differ diff --git a/src/images/users/6.png b/src/images/users/6.png new file mode 100644 index 0000000..977cee4 Binary files /dev/null and b/src/images/users/6.png differ diff --git a/src/images/users/8.png b/src/images/users/8.png new file mode 100644 index 0000000..02636d6 Binary files /dev/null and b/src/images/users/8.png differ diff --git a/src/images/visa.svg b/src/images/visa.svg new file mode 100644 index 0000000..65d4c99 --- /dev/null +++ b/src/images/visa.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..cd05892 --- /dev/null +++ b/src/index.js @@ -0,0 +1,45 @@ +import ReactDOM from 'react-dom/client'; +import axios from 'axios'; +import { ThemeProvider as ThemeProviderV5 } from '@mui/material/styles'; +import { StyledEngineProvider } from '@mui/material/styles'; +import App from './components/App'; +import { LayoutProvider } from './context/LayoutContext'; +import { UserProvider } from './context/UserContext'; +import { ManagementProvider } from './context/ManagementContext'; +import { + ThemeProvider as ThemeChangeProvider, + ThemeStateContext, +} from './context/ThemeContext'; +import CssBaseline from '@mui/material/CssBaseline'; +import config from '../src/config'; +import 'leaflet/dist/leaflet.css'; + +axios.defaults.baseURL = config.baseURLApi; +axios.defaults.headers.common['Content-Type'] = 'application/json'; +const token = localStorage.getItem('token'); +if (token) { + axios.defaults.headers.common['Authorization'] = 'Bearer ' + token; +} + +const root = ReactDOM.createRoot(document.getElementById('root')); + +root.render( + + + + + + {(theme) => ( + + + + + + + )} + + + + + , +); diff --git a/src/pages/CRUD/Users/form/UsersForm.js b/src/pages/CRUD/Users/form/UsersForm.js new file mode 100644 index 0000000..61e6adb --- /dev/null +++ b/src/pages/CRUD/Users/form/UsersForm.js @@ -0,0 +1,145 @@ +import { Formik } from 'formik'; +import Grid from '@mui/material/Grid'; +import Button from '@mui/material/Button'; +import Loader from 'components/Loader'; + +import InputFormItem from 'components/FormItems/items/InputFormItem'; +import SwitchFormItem from 'components/FormItems/items/SwitchFormItem'; +import RadioFormItem from 'components/FormItems/items/RadioFormItem'; +import ImagesFormItem from 'components/FormItems/items/ImagesFormItem'; + +import usersFields from 'pages/CRUD/Users/helpers/usersFields'; +import IniValues from 'components/FormItems/iniValues'; +import PreparedValues from 'components/FormItems/preparedValues'; +import FormValidations from 'components/FormItems/formValidations'; +import Widget from 'components/Widget'; + +const UsersForm = (props) => { + const { + isEditing, + isProfile, + findLoading, + record, + onSubmit, + onCancel + } = props; + + const iniValues = () => { + return IniValues(usersFields, record || {}); + }; + + const formValidations = () => { + return FormValidations(usersFields, record || {}); + }; + + const handleSubmit = (values) => { + const { id, ...data } = PreparedValues(usersFields, values || {}); + onSubmit(id, data); + }; + + const title = () => { + if (isProfile) { + return 'Edit My Profile'; + } + + return isEditing ? 'Edit Users' : 'Add Users'; + }; + + const renderForm = () => + + + + {(form) => + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } + + ; + + if (findLoading) { + return ; + } + if (isEditing && !record) { + return ; + } + return renderForm(); +}; +export default UsersForm; \ No newline at end of file diff --git a/src/pages/CRUD/Users/form/UsersFormPage.js b/src/pages/CRUD/Users/form/UsersFormPage.js new file mode 100644 index 0000000..6af9b9c --- /dev/null +++ b/src/pages/CRUD/Users/form/UsersFormPage.js @@ -0,0 +1,68 @@ +import { useEffect } from 'react'; +import UsersForm from 'pages/CRUD/Users/form/UsersForm'; +import { useLocation, useNavigate, useParams } from 'react-router-dom'; +import { + actions, + useManagementDispatch, + useManagementState, +} from '../../../../context/ManagementContext'; + +const UsersFormPage = () => { + const managementDispatch = useManagementDispatch(); + const managementState = useManagementState(); + const params = useParams(); + const location = useLocation(); + const navigate = useNavigate(); + + const isEditing = Boolean(params.id); + const isProfile = location.pathname === '/app/profile'; + + const doSubmit = (id, data) => { + if (isEditing || isProfile) { + actions.doUpdate(id, data, navigate, { + isProfile, + redirectPath: isProfile ? null : '/app/users', + })(managementDispatch); + } else { + actions.doCreate(data, navigate, '/app/users')(managementDispatch); + } + }; + + useEffect(() => { + if (isEditing) { + actions.doFind(params.id, { + navigate, + redirectPath: '/app/users', + })(managementDispatch); + } else if (isProfile) { + const currentUser = JSON.parse(localStorage.getItem('user') || 'null'); + const currentUserId = currentUser?.user?.id; + actions.doFind(currentUserId, { + navigate, + redirectPath: '/app/dashboard', + })(managementDispatch); + } else { + managementDispatch(actions.doNew()); + } + }, [isEditing, isProfile, managementDispatch, navigate, params.id]); + + const { saveLoading, findLoading, currentUser } = managementState; + const record = isEditing || isProfile ? currentUser : {}; + + return ( + <> + navigate('/app/users')} + /> + + ); +}; + +export default UsersFormPage; diff --git a/src/pages/CRUD/Users/helpers/UsersSelectItem.js b/src/pages/CRUD/Users/helpers/UsersSelectItem.js new file mode 100644 index 0000000..656fd70 --- /dev/null +++ b/src/pages/CRUD/Users/helpers/UsersSelectItem.js @@ -0,0 +1,69 @@ +import axios from 'axios'; +import React, { useState, useEffect } from 'react'; +import AutocompleteFormItem from 'components/FormItems/items/AutocompleteFormItem'; + +async function selectList(query, limit) { + const params = { query, limit }; + const response = await axios.get(`/users/autocomplete`, { params }); + return response.data; +} + +const UsersSelectItem = (props) => { + const [items, setItems] = useState([]); + + const fetchToItem = (value, limit) => { + return selectList(value, limit); + }; + + useEffect(() => { + async function fetchItems() { + const response = await fetchToItem(); + setItems(response); + } + fetchItems(); + }, []); + + const mapper = { + intoSelect(originalValue) { + if (!originalValue) { + return undefined; + } + + let label = originalValue.label + ? originalValue.label + : originalValue.firstName; + + return { + id: originalValue.id, + label, + }; + }, + + intoValue(originalValue) { + if (!originalValue) { + return undefined; + } + + return { + id: originalValue.value, + label: originalValue.label, + }; + }, + }; + + const { form, ...rest } = props; + + return ( + + + + ); +}; + +export default UsersSelectItem; diff --git a/src/pages/CRUD/Users/helpers/usersFields.js b/src/pages/CRUD/Users/helpers/usersFields.js new file mode 100644 index 0000000..f58bfd6 --- /dev/null +++ b/src/pages/CRUD/Users/helpers/usersFields.js @@ -0,0 +1,48 @@ +const usersFields = { + id: { type: 'id', label: 'ID' }, + + firstName: { type: 'string', label: 'First Name' }, + + lastName: { type: 'string', label: 'Last Name' }, + + phoneNumber: { type: 'string', label: 'Phone Number' }, + + email: { type: 'string', label: 'E-Mail' }, + + role: { + type: 'enum', + label: 'Role', + + options: [ + { value: 'admin', label: 'admin' }, + + { value: 'user', label: 'user' }, + ], + }, + + disabled: { type: 'boolean', label: 'Disabled' }, + + avatar: { type: 'images', label: 'Avatar' }, + + password: { type: 'string', label: 'Password' }, + + emailVerified: { type: 'boolean', label: 'Email Verified' }, + + emailVerificationToken: { type: 'string', label: 'Email Verification Token' }, + + emailVerificationTokenExpiresAt: { + type: 'datetime', + label: 'Email Verification Token Expires At', + }, + + passwordResetToken: { type: 'string', label: 'Password Reset Token' }, + + passwordResetTokenExpiresAt: { + type: 'datetime', + label: 'Password Reset Token Expires At', + }, + + provider: { type: 'string', label: 'Provider' }, +}; + +export default usersFields; diff --git a/src/pages/CRUD/Users/table/UsersDataFormatters.js b/src/pages/CRUD/Users/table/UsersDataFormatters.js new file mode 100644 index 0000000..7f8a9ac --- /dev/null +++ b/src/pages/CRUD/Users/table/UsersDataFormatters.js @@ -0,0 +1,103 @@ +import dayjs from 'utils/dayjs'; +import Box from '@mui/material/Box'; +import { Link as LinkMaterial } from '../../../../components/Wrappers'; + +function truncateText(value, maxLength = 30) { + if (!value) { + return ''; + } + + const stringValue = String(value); + + if (stringValue.length <= maxLength) { + return stringValue; + } + + return `${stringValue.slice(0, Math.max(0, maxLength - 3))}...`; +} + +function imageFormatter(cell) { + const images = cell?.image || cell?.avatar; + const imageUrl = images && images.length ? images[0].publicUrl : undefined; + + if (!imageUrl) return null; + + return ( + + ); +} + +function booleanFormatter(cell) { + return cell ? 'Yes' : 'No'; +} + +function dateTimeFormatter(cell) { + return cell ? dayjs(cell).format('YYYY-MM-DD HH:mm') : null; +} + +function filesFormatter(cell) { + return ( +
+ {cell && + cell.map((value) => { + return ( + + ); + })} +
+ ); +} + +function listFormatter(cell, navigate, entity) { + if (!cell) return null; + + const getContent = (id, title) => ( +
+ { + e.preventDefault(); + navigate(`/app/${entity}/${id}/edit`); + }} + > + {title} + +
+ ); + + return ( +
+ {cell && + cell.length && + cell.map((value) => getContent(value.id, value.firstName))} + {cell && getContent(cell.id, cell.firstName)} +
+ ); +} + +export { + booleanFormatter, + imageFormatter, + dateTimeFormatter, + listFormatter, + filesFormatter, +}; diff --git a/src/pages/CRUD/Users/table/UsersTable.js b/src/pages/CRUD/Users/table/UsersTable.js new file mode 100644 index 0000000..bfa2ce2 --- /dev/null +++ b/src/pages/CRUD/Users/table/UsersTable.js @@ -0,0 +1,425 @@ +import * as dataFormat from 'pages/CRUD/Users/table/UsersDataFormatters'; + +import React from 'react'; +import { Link, useNavigate } from 'react-router-dom'; + +import { makeStyles } from 'styles/mui'; +import { DataGrid } from '@mui/x-data-grid'; + +import MenuItem from '@mui/material/MenuItem'; + +import Button from '@mui/material/Button'; +import Box from '@mui/material/Box'; +import InputLabel from '@mui/material/InputLabel'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; +import TextField from '@mui/material/TextField'; +import Grid from '@mui/material/Grid'; +import CloseIcon from '@mui/icons-material/Close'; +import Stack from '@mui/material/Stack'; +import LinearProgress from '@mui/material/LinearProgress'; + +import Widget from 'components/Widget'; +import Actions from '../../../../components/Table/Actions'; +import Dialog from '../../../../components/Dialog'; +import { + actions, + useManagementDispatch, + useManagementState, +} from '../../../../context/ManagementContext'; + +const useStyles = makeStyles({ + container: { + paddingTop: 10, + paddingBottom: 10 + }, + actions: { + display: 'flex', + justifyContent: 'space-between', + marginBottom: 10, + '& a': { + textDecoration: 'none', + color: '#fff' + } + } +}); + +const UsersTable = () => { + const managementDispatch = useManagementDispatch(); + const managementState = useManagementState(); + const navigate = useNavigate(); + const classes = useStyles(); + // eslint-disable-next-line no-unused-vars + const [width, setWidth] = React.useState(window.innerWidth); + + const [filters] = React.useState([ + { label: 'First Name', title: 'firstName' }, + { label: 'Last Name', title: 'lastName' }, + { label: 'Phone Number', title: 'phoneNumber' }, + { label: 'E-Mail', title: 'email' }] + ); + + const [filterItems, setFilterItems] = React.useState([]); + const [filterUrl, setFilterUrl] = React.useState(''); + const filterItemIdRef = React.useRef(0); + + const [loading, setLoading] = React.useState(false); + const [sortModel, setSortModel] = React.useState([]); + const [selectionModel, setSelectionModel] = React.useState([]); + const count = managementState.count || 0; + const modalOpen = managementState.modalOpen; + const rows = managementState.rows; + const idToDelete = managementState.idToDelete; + + const [rowsState, setRowsState] = React.useState({ + page: 0, + pageSize: 5 + }); + + const loadData = async (limit, page, orderBy, request) => { + setLoading(true); + await actions.doFetch({ limit, page, orderBy, request })(managementDispatch); + setLoading(false); + }; + + React.useEffect(() => { + loadData(rowsState.pageSize, rowsState.page, sortModel[0], filterUrl); + }, [sortModel, rowsState, filterUrl]); + + React.useEffect(() => { + updateWindowDimensions(); + window.addEventListener('resize', updateWindowDimensions); + return () => window.removeEventListener('resize', updateWindowDimensions); + }, []); + + const handleSortModelChange = (newModel) => { + setSortModel(newModel); + }; + + const updateWindowDimensions = () => { + setWidth(window.innerWidth); + }; + + const handleChange = (id) => (e) => { + const value = e.target.value; + const name = e.target.name; + + setFilterItems( + filterItems.map((item) => + item.id === id ? + { id, fields: { ...item.fields, [name]: value } } : + item + ) + ); + }; + + const handleSubmit = (e) => { + e.preventDefault(); + let request = '&'; + filterItems.forEach((item) => { + Object.hasOwn( + filters[ + filters.map((filter) => filter.title).indexOf(item.fields.selectedField)], + 'number') ? + request += `${item.fields.selectedField}Range=${item.fields.filterValueFrom}&${item.fields.selectedField}Range=${item.fields.filterValueTo}&` : + request += `${item.fields.selectedField}=${item.fields.filterValue}&`; + }); + + loadData(rowsState.pageSize, 0, sortModel[0], request); + setFilterUrl(request); + }; + + const handleReset = () => { + setFilterItems([]); + setFilterUrl(''); + actions.doFetch({ limit: rowsState.pageSize, page: 0, request: '' })( + managementDispatch, + ); + }; + + const addFilter = () => { + filterItemIdRef.current += 1; + let newItem = { + id: `filter_${filterItemIdRef.current}`, + fields: { + filterValue: '', + filterValueFrom: '', + filterValueTo: '' + } + }; + newItem.fields.selectedField = filters[0].title; + setFilterItems([...filterItems, newItem]); + }; + + const deleteFilter = (value) => (e) => { + e.preventDefault(); + const newItems = filterItems.filter((item) => item.id !== value); + if (newItems.length) { + setFilterItems(newItems); + } else { + actions.doFetch({ limit: 10, page: 1 })(managementDispatch); + setFilterItems(newItems); + } + }; + + const handleDelete = () => { + actions.doDelete( + { limit: 10, page: 0, request: filterUrl }, + idToDelete, + )(managementDispatch); + }; + + const openModal = (event, cell) => { + const id = cell; + event.stopPropagation(); + actions.doOpenConfirm(id)(managementDispatch); + }; + + const closeModal = () => { + actions.doCloseConfirm()(managementDispatch); + }; + + function NoRowsOverlay() { + return ( + + No results found + ); + + } + + const columns = [ + { + field: 'firstName', + + flex: 0.6, + + headerName: 'First Name' + }, + + { + field: 'lastName', + + flex: 0.6, + + headerName: 'Last Name' + }, + + { + field: 'phoneNumber', + + flex: 0.6, + + headerName: 'Phone Number' + }, + + { + field: 'email', + + flex: 0.6, + + headerName: 'E-Mail' + }, + + { + field: 'role', + + headerName: 'Role' + }, + + { + field: 'disabled', + + renderCell: (params) => dataFormat.booleanFormatter(params.row), + + headerName: 'Disabled' + }, + + { + field: 'avatar', + + sortable: false, + renderCell: (params) => dataFormat.imageFormatter(params.row), + + headerName: 'Avatar' + }, + + { + field: 'id', + headerName: 'Actions', + sortable: false, + flex: 0.6, + maxWidth: 80, + renderCell: (params) => + + + + }]; + + + return ( +
+ + + + + + + + + + {filterItems.map((item) => + + + + + Field + + + + {Object.hasOwn( + filters.find((filter) => filter.title === item.fields.selectedField) || {}, + 'number', + ) ? + <> + + + + + + + + + : + + + + + + } + + + + + + )} + {filterItems.length > 0 && + + + + + + + + + } + + +
+ + { + setRowsState((prev) => ({ ...prev, page })); + }} + onPageSizeChange={(pageSize) => { + setRowsState((prev) => ({ ...prev, pageSize })); + }} + onSelectionModelChange={(newSelectionModel) => { + setSelectionModel(newSelectionModel); + }} + selectionModel={selectionModel} + checkboxSelection + disableSelectionOnClick + disableColumnMenu + loading={loading} + onRowClick={(e) => { + navigate(`/app/users/${e.id}/edit`); + }} + autoHeight /> + +
+
+ + + +
); + +}; + +export default UsersTable; diff --git a/src/pages/CRUD/Users/table/UsersTablePage.js b/src/pages/CRUD/Users/table/UsersTablePage.js new file mode 100644 index 0000000..a5c9c42 --- /dev/null +++ b/src/pages/CRUD/Users/table/UsersTablePage.js @@ -0,0 +1,11 @@ +import UsersTable from 'pages/CRUD/Users/table/UsersTable'; + +const UsersTablePage = () => { + return ( +
+ +
+ ); +}; + +export default UsersTablePage; diff --git a/src/pages/badge/Badge.js b/src/pages/badge/Badge.js new file mode 100644 index 0000000..d7a5387 --- /dev/null +++ b/src/pages/badge/Badge.js @@ -0,0 +1,259 @@ +import { Grid, Box, IconButton, Tab, Tabs, AppBar } from "@mui/material"; +import { + Mail as MailIcon, + ShoppingCart as ShoppingCartIcon } from +"@mui/icons-material"; +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget"; +import Code from "../../components/Code"; +import { Badge, Typography, Chip, Button } from "../../components/Wrappers"; + +export default function BadgeComp() { + const classes = useStyles(); + return ( +
+ + + + + Badge generates a small badge to the top-right of its child(ren) + + + + + + Example heading + + + + + + + Example heading + + + + + + + Example heading + + + + + + + Example heading + + + + + + + Example heading + + + + + + + + Example heading + + + + + Badges can be used as part of links or buttons to provide a + counter. + + + + + + + + + + + + + + Badge can also be used as a parent of a icon as well as a parent + of a clickable icon + + + + + + + + + + + + + + + + + + + + + + + + + + Item One + + } /> + + + + + + + + You may to use dot badge via{" "} + {`variant="dot"`} + + + + + + + + + + + + + + Typography + + + + You can use the {`horizontalAlignment`}{" "} + and {`verticalAlignment`} + properties to move the badge to any corner of the wrapped + element. + + + + + + + + + + + + + + Typography + + + + + + + + + + Chips allow users to enter information, make selections, filter + content, or trigger actions. + + + + + + + + + + + + + + + +
); + +} \ No newline at end of file diff --git a/src/pages/badge/package.json b/src/pages/badge/package.json new file mode 100644 index 0000000..a3a47a6 --- /dev/null +++ b/src/pages/badge/package.json @@ -0,0 +1,6 @@ +{ + "name": "Badge", + "version": "1.0.0", + "main": "Badge.js", + "license": "MIT" +} diff --git a/src/pages/badge/styles.js b/src/pages/badge/styles.js new file mode 100644 index 0000000..cdad337 --- /dev/null +++ b/src/pages/badge/styles.js @@ -0,0 +1,13 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + paddingTop: { + paddingTop: theme.spacing(1), + }, + badge: { + margin: theme.spacing(2, 2, 0, 0), + }, + margin: { + margin: theme.spacing(0, 2, 0, 0), + }, +})); diff --git a/src/pages/calendar/Calendar.js b/src/pages/calendar/Calendar.js new file mode 100644 index 0000000..c141e25 --- /dev/null +++ b/src/pages/calendar/Calendar.js @@ -0,0 +1,383 @@ +import React from 'react'; +import { + Grid, + IconButton, + Dialog, + DialogTitle, + TextField as Input, + Box, +} from '@mui/material'; +import { + KeyboardArrowLeft as LeftArrowIcon, + KeyboardArrowRight as RightArrowIcon, + CalendarToday as CalendarIcon, +} from '@mui/icons-material'; + +import FullCalendar from '@fullcalendar/react'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; +import listPlugin from '@fullcalendar/list'; +import interactionPlugin, { Draggable } from '@fullcalendar/interaction'; + +import s from './Calendar.module.scss'; + +import dayjs from 'utils/dayjs'; +import cn from 'classnames'; + +// components +import Widget from '../../components/Widget'; +import Dot from '../../components/Sidebar/components/Dot'; +import { Button, Typography } from '../../components/Wrappers'; + +function createCalendarOptions() { + const date = new Date(); + const d = date.getDate(); + const m = date.getMonth(); + const y = date.getFullYear(); + + return { + headerToolbar: { + left: '', + center: 'title', + right: '', + }, + events: [ + { + title: 'All Day Event', + start: new Date(y, m, 1), + backgroundColor: '#79A5F0', + textColor: '#fff', + description: 'Will be busy throughout the whole day', + }, + { + title: 'Long Event', + start: new Date(y, m, d + 5), + end: new Date(y, m, d + 7), + textColor: '#fff', + description: 'This conference should be worse visiting', + }, + { + id: 999, + title: 'Blah Blah Car', + start: new Date(y, m, d - 3, 16, 0), + allDay: false, + textColor: '#333', + description: 'Agree with this guy on arrival time', + }, + { + id: 1000, + title: 'Buy this template', + start: new Date(y, m, d + 3, 12, 0), + allDay: false, + backgroundColor: '#555', + textColor: '#fff', + description: 'Make sure everything is consistent first', + }, + { + title: 'Got to school', + start: new Date(y, m, d + 16, 12, 0), + end: new Date(y, m, d + 16, 13, 0), + backgroundColor: '#64bd63', + textColor: '#fff', + description: 'Time to go back', + }, + { + title: 'Study some Node', + start: new Date(y, m, d + 18, 12, 0), + end: new Date(y, m, d + 18, 13, 0), + backgroundColor: '#79A5F0', + textColor: '#fff', + description: + "Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.", + }, + { + title: 'Click for Flatlogic', + start: new Date(y, m, 28), + end: new Date(y, m, 29), + url: 'http://flatlogic.com/', + backgroundColor: '#e5603b', + textColor: '#fff', + description: 'Creative solutions', + }, + ], + selectable: true, + selectHelper: true, + editable: true, + droppable: true, + }; +} + +function Calendar() { + const [event, setEvent] = React.useState({}); + const [modal, setModal] = React.useState(false); + const [modalEvent, setModalEvent] = React.useState(false); + const [calendarView, setCalendarView] = React.useState('dayGridMonth'); + + const calendarOptions = React.useMemo(() => createCalendarOptions(), []); + const calendarPlugins = React.useMemo( + () => [dayGridPlugin, timeGridPlugin, interactionPlugin, listPlugin], + [], + ); + + const externalEventsRef = React.useRef(null); + const fullCalendarRef = React.useRef(null); + + React.useEffect(() => { + if (!externalEventsRef.current) { + return undefined; + } + + const draggable = new Draggable(externalEventsRef.current, { + itemSelector: '.external-event', + }); + + return () => { + draggable.destroy(); + }; + }, []); + + const getCalendarApi = () => fullCalendarRef.current?.getApi(); + + const drop = (info) => { + if (info.draggedEl?.parentNode) { + info.draggedEl.parentNode.removeChild(info.draggedEl); + } + }; + + const handleChange = (e) => { + setEvent((prev) => ({ ...prev, title: e.target.value })); + }; + + const toggleModal = () => { + setModal((prev) => !prev); + }; + + const toggleModalEvent = () => { + setModalEvent((prev) => !prev); + }; + + const createEvent = () => { + const api = getCalendarApi(); + if (!api) { + return; + } + + api.addEvent(event); + api.unselect(); + toggleModal(); + }; + + const select = ({ start, end, allDay }) => { + setEvent({ + start, + end, + allDay, + backgroundColor: '#64bd63', + textColor: '#fff', + editable: true, + }); + toggleModal(); + }; + + const eventClick = (e) => { + setEvent(e.event); + toggleModalEvent(); + }; + + const prev = () => { + getCalendarApi()?.prev(); + }; + + const next = () => { + getCalendarApi()?.next(); + }; + + const today = () => { + getCalendarApi()?.today(); + }; + + const changeView = (view) => { + setCalendarView(view); + getCalendarApi()?.changeView(view); + }; + + const getFormattedDate = (date) => dayjs(date).format('YYYY-MM-DD'); + + return ( + <> + + + + Draggable Events + + + Just drap and drop events from there directly into the calendar. + +
+
+ + + + Make a tea + + +
+
+ + + + Open windows + + +
+
+ + + + Some stuff + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + Create New Event + + + Just enter event name to create a new one + + + + + {' '} + + + + + + + {event.title} + + + + {getFormattedDate(event.start)} + + + {event.extendedProps && event.extendedProps.description} + + + + + + ); +} + +export default Calendar; diff --git a/src/pages/calendar/Calendar.module.scss b/src/pages/calendar/Calendar.module.scss new file mode 100644 index 0000000..9b88b83 --- /dev/null +++ b/src/pages/calendar/Calendar.module.scss @@ -0,0 +1,8 @@ +.widget { + background-color: #fff; + padding: 16px; + margin: 16px 0; + box-shadow: + 0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A; + border-radius: 4px +} \ No newline at end of file diff --git a/src/pages/calendar/package.json b/src/pages/calendar/package.json new file mode 100644 index 0000000..3aa9858 --- /dev/null +++ b/src/pages/calendar/package.json @@ -0,0 +1,9 @@ +{ + "name": "calendar", + "version": "1.0.0", + "main": "Calendar.js", + "license": "MIT", + "dependencies": { + "reactstrap": "^8.1.1" + } +} diff --git a/src/pages/cards/Cards.js b/src/pages/cards/Cards.js new file mode 100644 index 0000000..f4aafae --- /dev/null +++ b/src/pages/cards/Cards.js @@ -0,0 +1,205 @@ +import { + Grid, + Box, + Card, + CardActions, + CardContent, + CardActionArea, + CardMedia, + CardHeader, + IconButton, + Divider } from +"@mui/material"; +import { + Star as StarIcon, + MoreVert as MoreVertIcon, + Favorite as FavoriteIcon, + Share as ShareIcon } from +"@mui/icons-material"; +import useStyles from "./styles"; + +//images +import backImg from "../../images/cards/lifestyle.jpg"; +import isometricImg from "../../images/cards/isometric.jpg"; +import mountainsImg from "../../images/cards/mountains.jpeg"; +import rnsImg from "../../images/cards/rns.png"; + +// components +import { Typography, Button, Link, Avatar } from "../../components/Wrappers"; + +export default function BadgeComp() { + const props = { + card: backImg + }; + const classes = useStyles(props); + return ( +
+ + + + + + + 13 Mar + + + Lifestyle brand + + + A lifestyle brand is a company that markets its products or + services to embody the interests, attitudes, and opinions of a + group or a culture. Lifestyle brands seek to inspire, guide, and + motivate people, with the goal of their products contributing to + the definition of the consumer's way of life. + + + + + + + + + + + + + + + Lizard + + + Lizards are a widespread group of squamate reptiles, with over + 6,000 species, ranging across all continents except Antarctica + + + + + + + + + + + + + + + + Avr Rating + All Time + + + + + + + + + + + 342 REVIEWS + + + + 69% + + of customers recommend this product + + + + + + + + + + + R + + } + action={ + + + + } + title="Weekly Inspiration" + subheader="September 14, 2016" /> + + + + + + + There are at least 109 mountains on Earts with elevations + greeter than 7,200 meters + + + + + + + + + + + + + + + + + + + + + + Technology + + + React Native Starter + + + + + + from $49.95 + + + + + +
); + +} \ No newline at end of file diff --git a/src/pages/cards/package.json b/src/pages/cards/package.json new file mode 100644 index 0000000..cf90579 --- /dev/null +++ b/src/pages/cards/package.json @@ -0,0 +1,6 @@ +{ + "name": "cards", + "version": "1.0.0", + "main": "Cards.js", + "license": "MIT" +} diff --git a/src/pages/cards/styles.js b/src/pages/cards/styles.js new file mode 100644 index 0000000..1faf5fa --- /dev/null +++ b/src/pages/cards/styles.js @@ -0,0 +1,23 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + card: { + minWidth: "100%", + backgroundImage: props => `url(${props.card})`, + backgroundSize: "cover", + backgroundPosition: "50%", + color: "#fff", + }, + cardMedia: { + minWidth: "100%", + }, + media: { + height: "140px", + }, + starIcon: { + color: "#ffc247", + }, + cardActions: { + padding: theme.spacing(2) + } +})); diff --git a/src/pages/carousel/Carousel.js b/src/pages/carousel/Carousel.js new file mode 100644 index 0000000..21acd40 --- /dev/null +++ b/src/pages/carousel/Carousel.js @@ -0,0 +1,263 @@ +import React from "react"; +import { Grid, MobileStepper } from "@mui/material"; +import { makeStyles, useTheme } from "styles/mui"; +import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft"; +import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight"; + +//images +import img1 from "../../images/carousel/1.jpg"; +import img2 from "../../images/carousel/2.jpg"; +import img3 from "../../images/carousel/3.jpg"; + +//components +import { Button, Typography } from "../../components/Wrappers"; +import Widget from "../../components/Widget"; + +const places1 = [ +{ + label: "San Francisco – Oakland Bay Bridge, United States", + imgPath: img1 +}, +{ + label: "Alaska - Glacier Bay National Park, United States", + imgPath: img2 +}, +{ + label: "Bali, Indonesia", + imgPath: img3 +}]; + + +const places2 = [ +{ + label: "Alaska - Glacier Bay National Park, United States", + imgPath: img2 +}, +{ + label: "Bali, Indonesia", + imgPath: img3 +}, +{ + label: "San Francisco – Oakland Bay Bridge, United States", + imgPath: img1 +}]; + + +const places3 = [ +{ + label: "Bali, Indonesia", + imgPath: img3 +}, +{ + label: "San Francisco – Oakland Bay Bridge, United States", + imgPath: img1 +}, +{ + label: "Alaska - Glacier Bay National Park, United States", + imgPath: img2 +}]; + + +const useStyles = makeStyles((theme) => ({ + root: { + maxWidth: 400, + flexGrow: 1 + }, + header: { + display: "flex", + alignItems: "center", + height: 50, + paddingLeft: theme.spacing(4), + backgroundColor: theme.palette.background.default + }, + img: { + height: 255, + display: "block", + maxWidth: "100%", + overflow: "hidden", + width: "100%" + } +})); + +function Carousel() { + const classes = useStyles(); + const theme = useTheme(); + const [activeStep, setActiveStep] = React.useState(0); + const maxSteps = places1.length; + + React.useEffect(() => { + const timer = setInterval(() => { + setActiveStep((prevStep) => (prevStep + 1) % maxSteps); + }, 5000); + + return () => clearInterval(timer); + }, [maxSteps]); + + const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + return ( + + + {places1[activeStep].label}} + disableWidgetMenu + noBodyPadding> + +
+ {places1[activeStep].label} + +
+ + + Next + {theme.direction === "rtl" ? + : + + + } + + } + backButton={ + + } /> + +
+
+ + {places2[activeStep].label}} + disableWidgetMenu + noBodyPadding> + +
+ {places2[activeStep].label} + +
+ + + Next + {theme.direction === "rtl" ? + : + + + } + + } + backButton={ + + } /> + +
+
+ + {places3[activeStep].label}} + disableWidgetMenu + noBodyPadding> + +
+ {places3[activeStep].label} + +
+ + + Next + {theme.direction === "rtl" ? + : + + + } + + } + backButton={ + + } /> + +
+
+
); + +} + +export default Carousel; \ No newline at end of file diff --git a/src/pages/carousel/package.json b/src/pages/carousel/package.json new file mode 100644 index 0000000..800b6f5 --- /dev/null +++ b/src/pages/carousel/package.json @@ -0,0 +1,6 @@ +{ + "name": "Carousel", + "version": "1.0.0", + "main": "Carousel.js", + "license": "MIT" +} diff --git a/src/pages/carousel/styles.js b/src/pages/carousel/styles.js new file mode 100644 index 0000000..a7a0645 --- /dev/null +++ b/src/pages/carousel/styles.js @@ -0,0 +1,5 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(() => ({ + +})); diff --git a/src/pages/charts/BarCharts.js b/src/pages/charts/BarCharts.js new file mode 100644 index 0000000..36f64a6 --- /dev/null +++ b/src/pages/charts/BarCharts.js @@ -0,0 +1,311 @@ +import { useState } from "react"; +import { Grid } from "@mui/material"; +import { useTheme } from "styles/mui"; +import ReactApexChart from "react-apexcharts"; +import img from "../../images/carousel/2.jpg"; + +// components +import Widget from "../../components/Widget/Widget"; + +const themeOptions = (theme) => { + return { + plotOptions: { + bar: { + horizontal: true + } + }, + dataLabels: { + enabled: false + }, + xaxis: { + categories: [ + "South Korea", + "Canada", + "United Kingdom", + "Netherlands", + "Italy", + "France", + "Japan", + "United States", + "China", + "Germany"] + + }, + stroke: { + curve: "smooth" + }, + legend: { + show: false + }, + chart: { + stacked: false, + toolbar: { + show: false + } + }, + tooltip: { + shared: false + }, + colors: [theme.palette.primary.main], + options: { + plotOptions: { + bar: { + horizontal: true, + dataLabels: { + position: "top" + } + } + }, + dataLabels: { + enabled: true, + offsetX: -6, + style: { + fontSize: "12px", + colors: ["#fff"] + } + }, + stroke: { + show: true, + width: 1, + colors: ["#fff"] + }, + + xaxis: { + categories: [2013, 2014, 2015, 2016, 2017, 2018, 2019] + }, + colors: [theme.palette.primary.main, theme.palette.success.light] + }, + options2: { + chart: { + stacked: true, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true + } + }, + stroke: { + width: 1, + colors: ["#fff"] + }, + xaxis: { + categories: [2013, 2014, 2015, 2016, 2017, 2018, 2019], + labels: { + formatter: function (val) { + return val + "K"; + } + } + }, + yaxis: { + title: { + text: undefined + } + }, + tooltip: { + y: { + formatter: function (val) { + return val + "K"; + } + } + }, + fill: { + opacity: 1 + }, + colors: [ + theme.palette.primary.main, + theme.palette.secondary.main, + theme.palette.warning.main, + theme.palette.success.light, + theme.palette.info.main], + + legend: { + position: "top", + horizontalAlign: "left", + offsetX: 40 + } + }, + options3: { + chart: { + animations: { + enabled: false + }, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true, + barHeight: "100%" + } + }, + dataLabels: { + enabled: false + }, + stroke: { + colors: ["#fff"], + width: 0.2 + }, + labels: Array.apply(null, { length: 39 }).map(function (el, index) { + return index + 1; + }), + yaxis: { + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + labels: { + show: false + } + }, + grid: { + position: "back" + }, + fill: { + type: "image", + opacity: 0.87, + image: { + src: [img], + width: 466, + height: 406 + } + } + } + }; +}; + +const values = { + series: [ + { + data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380] + }], + + series2: [ + { + data: [44, 55, 41, 64, 22, 43, 21] + }, + { + data: [53, 32, 33, 52, 13, 44, 32] + }], + + series3: [ + { + name: "Marine Sprite", + data: [44, 55, 41, 37, 22, 43, 21] + }, + { + name: "Striking Calf", + data: [53, 32, 33, 52, 13, 43, 32] + }, + { + name: "Tank Picture", + data: [12, 17, 11, 9, 15, 11, 20] + }, + { + name: "Bucket Slope", + data: [9, 7, 5, 8, 6, 9, 4] + }, + { + name: "Reborn Kid", + data: [25, 12, 19, 32, 25, 24, 10] + }], + + series4: [ + { + name: "coins", + data: [ + 2, + 4, + 3, + 4, + 3, + 5, + 5, + 6.5, + 6, + 5, + 4, + 5, + 8, + 7, + 7, + 8, + 8, + 10, + 9, + 9, + 12, + 12, + 11, + 12, + 13, + 14, + 16, + 14, + 15, + 17, + 19, + 21] + + }] + +}; + +export default function Charts() { + const theme = useTheme(); + const [state] = useState(values); + + // local + + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + ); + +} diff --git a/src/pages/charts/Charts.js b/src/pages/charts/Charts.js new file mode 100644 index 0000000..962d9fb --- /dev/null +++ b/src/pages/charts/Charts.js @@ -0,0 +1,238 @@ +import { useState } from "react"; +import { Grid } from "@mui/material"; +import { useTheme } from "styles/mui"; +import { + CartesianGrid, + Legend, + Line, + LineChart, + Pie, + PieChart, + ResponsiveContainer, + Sector, + Tooltip, + XAxis, + YAxis } from +"recharts"; + +// components +import Widget from "../../components/Widget/Widget"; +import ApexLineChart from "./components/ApexLineChart"; +import ApexHeatmap from "./components/ApexHeatmap"; +import ApexRadarChart from "./components/ApexRadarChart"; +import ApexBarChart from "./components/ApexBarChart"; + +const lineChartData = [ +{ + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400 +}, +{ + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210 +}, +{ + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290 +}, +{ + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000 +}, +{ + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181 +}, +{ + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500 +}, +{ + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100 +}]; + + +const pieChartData = [ +{ name: "Group A", value: 400 }, +{ name: "Group B", value: 300 }, +{ name: "Group C", value: 300 }, +{ name: "Group D", value: 200 }]; + + +export default function Charts() { + var theme = useTheme(); + + // local + var [activeIndex, setActiveIndexId] = useState(0); + + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + setActiveIndexId(id)} /> + + + + + + + ); + +} + +// ################################################################ + +function renderActiveShape(props) { + var RADIAN = Math.PI / 180; + var { + cx, + cy, + midAngle, + innerRadius, + outerRadius, + startAngle, + endAngle, + fill, + payload, + percent, + value + } = props; + var sin = Math.sin(-RADIAN * midAngle); + var cos = Math.cos(-RADIAN * midAngle); + var sx = cx + (outerRadius + 10) * cos; + var sy = cy + (outerRadius + 10) * sin; + var mx = cx + (outerRadius + 30) * cos; + var my = cy + (outerRadius + 30) * sin; + var ex = mx + (cos >= 0 ? 1 : -1) * 22; + var ey = my; + var textAnchor = cos >= 0 ? "start" : "end"; + + return ( + + + {payload.name} + + + + + + + + + = 0 ? 1 : -1) * 12} + y={ey} + textAnchor={textAnchor} + fill="#333"> + {`PV ${value}`} + = 0 ? 1 : -1) * 12} + y={ey} + dy={18} + textAnchor={textAnchor} + fill="#999"> + + {`(Rate ${(percent * 100).toFixed(2)}%)`} + + ); + +} diff --git a/src/pages/charts/LineCharts.js b/src/pages/charts/LineCharts.js new file mode 100644 index 0000000..0ea9b95 --- /dev/null +++ b/src/pages/charts/LineCharts.js @@ -0,0 +1,358 @@ +import { useState, useEffect } from "react"; +import { Grid } from "@mui/material"; +import { useTheme } from "styles/mui"; +import ReactApexChart from "react-apexcharts"; +import ApexCharts from "apexcharts"; + +// components +import Widget from "../../components/Widget/Widget"; + +//Realtime chart +var lastDate = 0; +var data = []; +var TICKINTERVAL = 86400000; +let XAXISRANGE = 777600000; +let _isMounted; +function getDayWiseTimeSeries(baseval, count, yrange) { + var i = 0; + while (i < count) { + var x = baseval; + var y = + Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min; + + data.push({ + x, + y + }); + lastDate = baseval; + baseval += TICKINTERVAL; + i++; + } +} + +function intervals() { + if (_isMounted) { + window.setInterval(() => { + getNewSeries(lastDate, { + min: 10, + max: 90 + }); + + ApexCharts.exec("realtime", "updateSeries", [ + { + data: data + }] + ); + }, 1000); + } +} + +getDayWiseTimeSeries(new Date("11 Feb 2019 GMT").getTime(), 10, { + min: 10, + max: 90 +}); + +function getNewSeries(baseval, yrange) { + var newDate = baseval + TICKINTERVAL; + lastDate = newDate; + + for (var i = 0; i < data.length - 10; i++) { + // IMPORTANT + // we reset the x and y of the data which is out of drawing area + // to prevent memory leaks + data[i].x = newDate - XAXISRANGE - TICKINTERVAL; + data[i].y = 0; + } + + data.push({ + x: newDate, + y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min + }); +} + +//Zoomable Timeseries +var ts2 = 1484418600000; +var dates = []; +for (var i = 0; i < 120; i++) { + ts2 = ts2 + 86400000; + var innerArr = [ts2, Math.round(Math.random(0) * 100)]; + dates.push(innerArr); +} + +const themeOptions = (theme) => { + return { + // first container chart + grid: { + row: { + colors: [theme.palette.primary.light, "transparent"], // takes an array which will be repeated on columns + opacity: 0.1 + } + }, + colors: [theme.palette.primary.main], + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep"] + + }, + dataLabels: { + enabled: false + }, + stroke: { + curve: "smooth" + }, + chart: { + toolbar: { + show: false + } + }, + legend: { + show: false + }, + // second container chart + options: { + dataLabels: { + enabled: false + }, + stroke: { + curve: "smooth" + }, + chart: { + shadow: { + enabled: true, + color: "#000", + top: 18, + left: 7, + blur: 10, + opacity: 1 + }, + toolbar: { + show: false + } + }, + colors: [theme.palette.primary.main, theme.palette.success.main], + grid: { + borderColor: "#e7e7e7", + row: { + colors: ["#f3f3f3", "transparent"], // takes an array which will be repeated on columns + opacity: 0.5 + } + }, + markers: { + size: 6 + }, + xaxis: { + categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul"], + title: { + text: "Month" + } + }, + yaxis: { + title: { + text: "Temperature" + }, + min: 5, + max: 40 + }, + legend: { + position: "top", + horizontalAlign: "right", + floating: true, + offsetY: -25, + offsetX: -5 + } + }, + // third container chart + options2: { + stroke: { + curve: "smooth" + }, + legend: { + show: false + }, + chart: { + stacked: false, + zoom: { + type: "x", + enabled: true, + autoScaleYaxis: true + }, + toolbar: { + show: false + } + }, + plotOptions: { + line: { + curve: "smooth" + } + }, + dataLabels: { + enabled: false + }, + markers: { + size: 0, + style: "full" + }, + colors: [theme.palette.success.light], + fill: { + type: "gradient", + gradient: { + shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 90, 100] + } + }, + xaxis: { + type: "datetime" + }, + + tooltip: { + shared: false, + y: { + formatter: function (val) { + return val; + } + } + } + }, + // fourth chart container + options3: { + colors: [theme.palette.primary.light], + chart: { + id: "realtime", + animations: { + enabled: true, + easing: "linear", + dynamicAnimation: { + speed: 1000 + } + }, + toolbar: { + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + curve: "smooth" + }, + markers: { + size: 0 + }, + xaxis: { + type: "datetime", + range: XAXISRANGE + }, + yaxis: { + max: 100 + }, + legend: { + show: false + } + } + }; +}; + +const values = { + series: [ + { + name: "Desktops", + data: [10, 41, 35, 51, 49, 62, 69, 91, 148] + }], + + series2: [ + { + name: "High - 2019", + data: [28, 29, 33, 36, 32, 32, 33] + }, + { + name: "Low - 2019", + data: [12, 11, 14, 18, 17, 13, 13] + }], + + series3: [ + { + name: "Flatlogic LLC", + data: dates + }], + + series4: [ + { + data: data.slice() + }] + +}; + +export default function Charts() { + useEffect(() => { + intervals(); + return function cleanup() { + _isMounted = false; + data = data.slice(data.length - 10, data.length); + }; + }); + const theme = useTheme(); + const [state] = useState(values); + + // local + + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + ); + +} diff --git a/src/pages/charts/PieCharts.js b/src/pages/charts/PieCharts.js new file mode 100644 index 0000000..8ada039 --- /dev/null +++ b/src/pages/charts/PieCharts.js @@ -0,0 +1,262 @@ +import { useState } from "react"; +import { useTheme } from "styles/mui"; +import ReactApexChart from "react-apexcharts"; +import { Box, Grid } from "@mui/material"; + +// components +import Widget from "../../components/Widget/Widget"; +import { Button } from "../../components/Wrappers"; + +const themeOptions = (theme) => { + return { + labels: ["Team A", "Team B", "Team C", "Team D", "Team E"], + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200 + }, + legend: { + position: "bottom" + } + } + }], + + colors: [ + theme.palette.primary.main, + theme.palette.secondary.main, + theme.palette.warning.main, + theme.palette.success.light, + theme.palette.info.main], + + options: { + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200 + }, + legend: { + position: "bottom" + } + } + }], + + colors: [ + theme.palette.primary.main, + theme.palette.secondary.main, + theme.palette.warning.main, + theme.palette.success.light, + theme.palette.info.main] + + }, + options2: { + dataLabels: { + enabled: false + }, + + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200 + }, + legend: { + show: false + } + } + }], + + legend: { + position: "right", + offsetY: 0, + height: 230 + }, + colors: [ + theme.palette.primary.main, + theme.palette.secondary.main, + theme.palette.warning.main, + theme.palette.success.light, + theme.palette.info.main] + + }, + options3: { + labels: [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday"], + + theme: { + monochrome: { + enabled: true + } + }, + colors: [ + theme.palette.primary.main, + theme.palette.secondary.main, + theme.palette.warning.main, + theme.palette.success.light, + theme.palette.info.main], + + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200 + }, + legend: { + position: "bottom" + } + } + }] + + } + }; +}; + +const values = { + series: [44, 55, 13, 43, 22], + series2: [44, 55, 41, 17, 15], + series3: [44, 55, 13, 33], + series4: [25, 15, 44, 55, 41, 17] +}; + +export default function Charts() { + const theme = useTheme(); + const [state, setState] = useState(values); + const appendData = () => { + var arr = state.series3.slice(); + arr.push(Math.floor(Math.random() * (100 - 1 + 1)) + 1); + + setState({ + ...state, + series3: arr + }); + }; + + const removeData = () => { + if (state.series3.length === 1) return; + + var arr = state.series3.slice(); + arr.pop(); + + setState({ + ...state, + series3: arr + }); + }; + + const randomize = () => { + setState({ + ...state, + series3: state.series3.map(() => { + return Math.floor(Math.random() * (100 - 1 + 1)) + 1; + }) + }); + }; + + const reset = () => { + setState({ + ...state, + series3: [44, 55, 13, 33] + }); + }; + + // local + + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); + +} diff --git a/src/pages/charts/components/ApexBarChart.js b/src/pages/charts/components/ApexBarChart.js new file mode 100644 index 0000000..bba5bc7 --- /dev/null +++ b/src/pages/charts/components/ApexBarChart.js @@ -0,0 +1,68 @@ +import { useState } from "react"; +import { useTheme } from "styles/mui"; +import ReactApexChart from "react-apexcharts"; + +const themeOptions = theme => { + return { + plotOptions: { + bar: { + horizontal: true, + }, + }, + dataLabels: { + enabled: false, + }, + xaxis: { + categories: [ + "South Korea", + "Canada", + "United Kingdom", + "Netherlands", + "Italy", + "France", + "Japan", + "United States", + "China", + "Germany", + ], + }, + stroke: { + curve: "smooth", + }, + chart: { + toolbar: { + show: false, + }, + }, + legend: { + show: false, + }, + labels: ["January", "February", "March", "April", "May", "June"], + fill: { + colors: [theme.palette.primary.main], + }, + }; +}; + +const values = { + series: [ + { + data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380], + }, + ], +}; + +const ApexBarChart = () => { + const theme = useTheme(); + const [state] = useState(values); + return ( + + ); +}; + +export default ApexBarChart; diff --git a/src/pages/charts/components/ApexHeatmap.js b/src/pages/charts/components/ApexHeatmap.js new file mode 100644 index 0000000..db0fd47 --- /dev/null +++ b/src/pages/charts/components/ApexHeatmap.js @@ -0,0 +1,114 @@ +import { useTheme } from "styles/mui"; +import ApexCharts from "react-apexcharts"; + +const series = [ + { + name: "Metric1", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric2", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric3", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric4", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric5", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric6", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric7", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric8", + data: generateData(18, { + min: 0, + max: 90, + }), + }, + { + name: "Metric9", + data: generateData(18, { + min: 0, + max: 90, + }), + }, +]; + +export default function ApexLineChart() { + var theme = useTheme(); + + return ( + + ); +} + +// ################################################################## +function generateData(count, yrange) { + var i = 0; + var series = []; + while (i < count) { + var x = "w" + (i + 1).toString(); + var y = + Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min; + + series.push({ + x: x, + y: y, + }); + i++; + } + + return series; +} + +function themeOptions(theme) { + return { + chart: { + toolbar: { + show: false, + }, + }, + dataLabels: { + enabled: false, + }, + colors: [theme.palette.primary.main], + }; +} diff --git a/src/pages/charts/components/ApexLineChart.js b/src/pages/charts/components/ApexLineChart.js new file mode 100644 index 0000000..8d09e6e --- /dev/null +++ b/src/pages/charts/components/ApexLineChart.js @@ -0,0 +1,67 @@ +import ApexCharts from "react-apexcharts"; +import { useTheme } from "styles/mui"; + +const series = [ + { + name: "series1", + data: [31, 40, 28, 51, 42, 109, 100], + }, + { + name: "series2", + data: [11, 32, 45, 32, 34, 52, 41], + }, +]; + +export default function ApexLineChart() { + let theme = useTheme(); + + return ( + + ); +} + +// ############################################################ +function themeOptions(theme) { + return { + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + xaxis: { + type: "datetime", + categories: [ + "2018-09-19T00:00:00", + "2018-09-19T01:30:00", + "2018-09-19T02:30:00", + "2018-09-19T03:30:00", + "2018-09-19T04:30:00", + "2018-09-19T05:30:00", + "2018-09-19T06:30:00", + ], + }, + tooltip: { + x: { + format: "dd/MM/yy HH:mm", + }, + }, + fill: { + colors: [theme.palette.primary.light, theme.palette.success.light], + }, + colors: [theme.palette.primary.main, theme.palette.success.main], + chart: { + toolbar: { + show: false, + }, + }, + legend: { + show: false, + }, + }; +} diff --git a/src/pages/charts/components/ApexRadarChart.js b/src/pages/charts/components/ApexRadarChart.js new file mode 100644 index 0000000..8aa63c6 --- /dev/null +++ b/src/pages/charts/components/ApexRadarChart.js @@ -0,0 +1,60 @@ +import { useState } from "react"; +import { useTheme } from "styles/mui"; +import ReactApexChart from "react-apexcharts"; + +const themeOptions = theme => { + return { + options: { + labels: ["January", "February", "March", "April", "May", "June"], + }, + series: [ + { + name: "Series 1", + data: [80, 50, 30, 40, 100, 20], + }, + ], + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + chart: { + toolbar: { + show: false, + }, + }, + legend: { + show: false, + }, + labels: ["January", "February", "March", "April", "May", "June"], + fill: { + colors: [theme.palette.primary.light, theme.palette.success.light], + }, + colors: [theme.palette.primary.main, theme.palette.success.main], + }; +}; + +const values = { + series: [ + { + name: "Series 1", + data: [80, 50, 30, 40, 100, 20], + }, + ], +}; + +const ApexRadarChart = () => { + const theme = useTheme(); + const [state] = useState(values); + return ( + + ); +}; + +export default ApexRadarChart; diff --git a/src/pages/charts/package.json b/src/pages/charts/package.json new file mode 100644 index 0000000..f43489f --- /dev/null +++ b/src/pages/charts/package.json @@ -0,0 +1,6 @@ +{ + "name": "Charts", + "version": "1.0.0", + "private": true, + "main": "Charts.js" +} diff --git a/src/pages/colors/Colors.js b/src/pages/colors/Colors.js new file mode 100644 index 0000000..bbbd287 --- /dev/null +++ b/src/pages/colors/Colors.js @@ -0,0 +1,213 @@ +import { + Table, + TableRow, + TableHead, + TableBody, + TableCell, + Grid, + Box } from +"@mui/material"; +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget"; +import Dot from "../../components/Sidebar/components/Dot"; +import Code from "../../components/Code"; +import { Typography, Button } from "../../components/Wrappers"; + +//Theme +import Theme from "../../themes/index"; + +export default function ColorsComp() { + const classes = useStyles(); + return ( + <> + + + + + There is a couple of brand colors that we're using. + + + + + State + Preview + Usage Example + Hex Value + + + + + Primary + + + + + {`
+
+
+ + +
+ + h1. Heading + + + h2. Heading + + + + h3. Heading + + + h4. Heading + + + + h5. Heading + + + h6. Heading + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ ); + +} \ No newline at end of file diff --git a/src/pages/colors/package.json b/src/pages/colors/package.json new file mode 100644 index 0000000..9d76bd7 --- /dev/null +++ b/src/pages/colors/package.json @@ -0,0 +1,6 @@ +{ + "name": "Colors", + "version": "1.0.0", + "private": true, + "main": "Colors.js" +} diff --git a/src/pages/colors/styles.js b/src/pages/colors/styles.js new file mode 100644 index 0000000..039b972 --- /dev/null +++ b/src/pages/colors/styles.js @@ -0,0 +1,15 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + dashedBorder: { + border: "1px dashed", + borderColor: theme.palette.primary.main, + padding: theme.spacing(2), + paddingTop: theme.spacing(4), + paddingBottom: theme.spacing(4), + marginTop: theme.spacing(1) + }, + text: { + marginBottom: theme.spacing(2) + } +})); diff --git a/src/pages/dashboard/Dashboard.js b/src/pages/dashboard/Dashboard.js new file mode 100644 index 0000000..ba71789 --- /dev/null +++ b/src/pages/dashboard/Dashboard.js @@ -0,0 +1,1074 @@ +import React, { useState } from "react"; +import { + Grid, + LinearProgress, + Select, + OutlinedInput, + MenuItem, + Box, + Table, + TableBody, + TableRow, + TableCell, + Checkbox, + TablePagination, + TableHead, + TableSortLabel, + Toolbar, + IconButton, Menu } from +"@mui/material"; +import { useTheme, makeStyles } from 'styles/mui'; +import { + ResponsiveContainer, + ComposedChart, + AreaChart, + Line, + Area, + PieChart, + Pie, + Cell, + YAxis, + XAxis, + Tooltip } from +"recharts"; + +// styles +import useStyles from "./styles"; + +// components +import mock from "./mock"; +import Widget from "../../components/Widget"; +import { Chip, Typography, Avatar } from "../../components/Wrappers"; +import Dot from "../../components/Sidebar/components/Dot"; +import BigStat from "./components/BigStat/BigStat"; +import { + Delete as DeleteIcon, + FilterList as FilterListIcon, MoreVert as MoreIcon } from +"@mui/icons-material"; +import PropTypes from "prop-types"; + +import { lighten } from '@mui/material/styles'; +import cn from "classnames"; + +const PieChartData = [ +{ name: "Group A", value: 400, color: "primary" }, +{ name: "Group B", value: 300, color: "secondary" }, +{ name: "Group C", value: 300, color: "warning" }, +{ name: "Group D", value: 200, color: "success" }]; + + +const TicketChartData = [ +{ name: "Client 1", value: 2, color: "primary" }, +{ name: "Client 2", value: 2, color: "primary" }, +{ name: "Client 3", value: 2, color: "primary" }, +{ name: "Client 4", value: 2, color: "primary" }, +{ name: "Client 5", value: 2, color: "primary" }, +{ name: "Client 6", value: 2, color: "primary" }, +{ name: "Client 7", value: 2, color: "primary" }, +{ name: "Client 8", value: 2, color: "primary" }, +{ name: "Client 9", value: 2, color: "primary" }, +{ name: "Client 10", value: 2, color: "primary" }, +{ name: "Client 11", value: 2, color: "primary" }, +{ name: "Client 12", value: 2, color: "primary" }, +{ name: "Client 13", value: 2, color: "primary" }, +{ name: "Client 14", value: 2, color: "primary" }, +{ name: "Client 15", value: 2, color: "primary" }, +{ name: "Client 16", value: 2, color: "primary" }, +{ name: "Client 17", value: 2, color: "primary" }, +{ name: "Client 18", value: 2, color: "primary" }, +{ name: "Client 19", value: 2, color: "primary" }, +{ name: "Client 20", value: 2, color: "primary" }]; + + +// Recent Orders + +const rows = [ +{ + id: 1, + orderId: Math.floor(Math.random(0) * 3000000), + customer: "Victoria Cantrel", + office: "Croatia", + weight: "1.4 kg", + price: 23.87, + purDate: "12 Jan 2019", + delDate: "-", + status: "Pending", + color: "primary" +}, +{ + id: 2, + orderId: Math.floor(Math.random(0) * 3000000), + customer: "Cherokee Ware", + office: "Belgium", + weight: "0.8 kg", + price: 987, + purDate: "11 Jan 2019", + delDate: "14 Jan 2019", + status: "Delivered", + color: "success" +}, +{ + id: 3, + orderId: Math.floor(Math.random(0) * 3000000), + customer: "Constance Clayton", + office: "Peru", + weight: "105 kg", + price: 1.876, + purDate: "09 Jan 2019", + delDate: "-", + status: "Canceled", + color: "secondary" +}, +{ + id: 4, + orderId: Math.floor(Math.random(0) * 3000000), + customer: "Cherokee Ware", + office: "Belgium", + weight: "0.8 kg", + price: 987, + purDate: "11 Jan 2019", + delDate: "14 Jan 2019", + status: "Delivered", + color: "success" +}, +{ + id: 5, + orderId: Math.floor(Math.random(0) * 3000000), + customer: "Constance Clayton", + office: "Peru", + weight: "105 kg", + price: 1.876, + purDate: "06 Jan 2019", + delDate: "19 Jan 2019", + status: "In a process", + color: "warning" +}, +{ + id: 6, + orderId: Math.floor(Math.random() * 3000000), + customer: "Constance Clayton", + office: "Peru", + weight: "105 kg", + price: 1.876, + purDate: "06 Jan 2019", + delDate: "19 Jan 2019", + status: "In a process", + color: "warning" +}]; + + +function desc(a, b, orderBy) { + if (b[orderBy] < a[orderBy]) { + return -1; + } + if (b[orderBy] > a[orderBy]) { + return 1; + } + return 0; +} + +function stableSort(array, cmp) { + const stabilizedThis = array.map((el, index) => [el, index]); + stabilizedThis.sort((a, b) => { + const order = cmp(a[0], b[0]); + if (order !== 0) return order; + return a[1] - b[1]; + }); + return stabilizedThis.map((el) => el[0]); +} + +function getSorting(order, orderBy) { + return order === "desc" ? + (a, b) => desc(a, b, orderBy) : + (a, b) => -desc(a, b, orderBy); +} + +const headCells = [ +{ + id: "id", + numeric: true, + disablePadding: true, + label: "Order ID" +}, +{ id: "customer", numeric: true, disablePadding: false, label: "Customer" }, +{ id: "office", numeric: true, disablePadding: false, label: "Office" }, +{ id: "weight", numeric: true, disablePadding: false, label: "Netto Weight" }, +{ id: "price", numeric: true, disablePadding: false, label: "Price" }, +{ + id: "purchase-date", + numeric: true, + disablePadding: false, + label: "Date of purchase" +}, +{ + id: "delivery-date", + numeric: true, + disablePadding: false, + label: "Date of Delivery" +}, +{ id: "status", numeric: true, disablePadding: false, label: "Status" }, +{ id: "actions", numeric: true, disablePadding: false, label: "Actions" }]; + + +function EnhancedTableHead(props) { + const { + classes, + onSelectAllClick, + order, + orderBy, + numSelected, + rowCount, + onRequestSort + } = props; + const createSortHandler = (property) => (event) => { + onRequestSort(event, property); + }; + + return ( + + + + 0 && numSelected < rowCount} + checked={numSelected === rowCount} + onChange={onSelectAllClick} + inputProps={{ "aria-label": "select all rows" }} /> + + + {headCells.map((headCell) => + + + + + {headCell.label} + {orderBy === headCell.id ? + + {order === "desc" ? "sorted descending" : "sorted ascending"} + : + null} + + + )} + + ); + +} + +EnhancedTableHead.propTypes = { + classes: PropTypes.object.isRequired, + numSelected: PropTypes.number.isRequired, + onRequestSort: PropTypes.func.isRequired, + onSelectAllClick: PropTypes.func.isRequired, + order: PropTypes.oneOf(["asc", "desc"]).isRequired, + orderBy: PropTypes.string.isRequired, + rowCount: PropTypes.number.isRequired +}; + +const useToolbarStyles = makeStyles((theme) => ({ + highlight: + theme.palette.mode === "light" ? + { + color: theme.palette.secondary.main, + backgroundColor: lighten(theme.palette.secondary.light, 0.85) + } : + { + color: theme.palette.text.primary, + backgroundColor: theme.palette.secondary.dark + }, + title: { + flex: "1 1 100%" + } +})); + +const EnhancedTableToolbar = (props) => { + const classes = useToolbarStyles(); + const { numSelected } = props; + + return ( + 0 + })}> + + {numSelected > 0 ? + + + {numSelected} selected + : + + + + + Recent Orders + + + + 1.340 total + + + + + } + + {numSelected > 0 ? + + + + + : + + + + + + + } + ); + +}; + +EnhancedTableToolbar.propTypes = { + numSelected: PropTypes.number.isRequired +}; + +function Dashboard() { + let classes = useStyles(); + let theme = useTheme(); + + // local + let [mainChartState, setMainChartState] = useState("monthly"); + + // Recent Orders table + + const [order, setOrder] = React.useState("asc"); + const [orderBy, setOrderBy] = React.useState("price"); + const [selected, setSelected] = React.useState([]); + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + const [actionsMenuAnchorEl, setActionsMenuAnchorEl] = React.useState(null); + const [actionsMenuRowId, setActionsMenuRowId] = React.useState(null); + + + const handleRequestSort = (event, property) => { + const isDesc = orderBy === property && order === "desc"; + setOrder(isDesc ? "asc" : "desc"); + setOrderBy(property); + }; + + const handleSelectAllClick = (event) => { + if (event.target.checked) { + const newSelecteds = rows.map((n) => n.id); + setSelected(newSelecteds); + return; + } + setSelected([]); + }; + + const handleClick = (event, name) => { + const selectedIndex = selected.indexOf(name); + let newSelected = []; + + if (selectedIndex === -1) { + newSelected = newSelected.concat(selected, name); + } else if (selectedIndex === 0) { + newSelected = newSelected.concat(selected.slice(1)); + } else if (selectedIndex === selected.length - 1) { + newSelected = newSelected.concat(selected.slice(0, -1)); + } else if (selectedIndex > 0) { + newSelected = newSelected.concat( + selected.slice(0, selectedIndex), + selected.slice(selectedIndex + 1) + ); + } + + setSelected(newSelected); + }; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + const handleActionsMenuOpen = (event, rowId) => { + event.stopPropagation(); + setActionsMenuAnchorEl(event.currentTarget); + setActionsMenuRowId(rowId); + }; + + const handleActionsMenuClose = () => { + setActionsMenuAnchorEl(null); + setActionsMenuRowId(null); + }; + + const isSelected = (name) => selected.indexOf(name) !== -1; + + const emptyRows = + rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage); + + const randomData = React.useMemo(() => getRandomData(10), []); + + const mainChartData = React.useMemo(() => { + let resultArray = []; + let tablet = getRandomData(31, 3500, 6500, 7500, 1000); + let desktop = getRandomData(31, 1500, 7500, 7500, 1500); + let mobile = getRandomData(31, 1500, 7500, 7500, 1500); + + for (let i = 0; i < tablet.length; i++) { + resultArray.push({ + tablet: tablet[i].value, + desktop: desktop[i].value, + mobile: mobile[i].value + }); + } + + return resultArray; + }, [mainChartState]); + + return ( + + + + + + + + + 543 + + + + + Tickets + + + + + + + + 64% + + + + + + {TicketChartData.map((entry, index) => + + + )} + + + + + + + + + + + New Tickets + + + + + 45 + + + + + + + + Open + + + + + 147 + + + + + + + + Completed + + + + + 351 + + + + + + + + + + + + + + + + 1700 + + + + + + {PieChartData.map((entry, index) => + + + )} + + + + + +
+ {PieChartData.map(({ name, value, color }) => +
+ + + +  {name}  + + +  {value} + +
+ )} +
+
+
+
+
+ + + +
+
+ + + + Integration + +
+
+ + + + SDK + +
+
+
+ + + Integration + + + +
+
+ + + SDK + + + +
+
+
+ + + +
+ + + 60% / 37°С / 3.3 Ghz + +
+ + + + + + +
+
+
+ + + 54% / 31°С / 3.3 Ghz + +
+ + + + + + +
+
+
+ + + 57% / 21°С / 3.3 Ghz + +
+ + + + + + +
+
+
+
+ + + + + Daily Line Chart + +
+
+ + + Tablet + +
+
+ + + Mobile + +
+
+ + + Desktop + +
+
+ +
+ }> + + + + + + + i + 1} + tick={{ + fill: theme.palette.text.hint + "80", + fontSize: 14 + }} + stroke={theme.palette.text.hint + "80"} + tickLine={false} /> + + + + + + + + + + + + + {mock.bigStat.map((stat) => + + + + )} + + + +
+ + + + + + {stableSort(rows, getSorting(order, orderBy)) + .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + .map((row, index) => { + const isItemSelected = isSelected(row.id); + const labelId = `orders-table-checkbox-${index}`; + + return ( + handleClick(event, row.id)} + role="checkbox" + aria-checked={isItemSelected} + tabIndex={-1} + key={row.id} + selected={isItemSelected}> + + + + + + + + {row.orderId} + + + + + + + {row.customer[0]} + + + {row.customer} + + + + {row.office} + {row.weight} + ${row.price} + {row.purDate} + {row.delDate} + + + + + handleActionsMenuOpen(e, row.id)}> + + + + + + + + Edit + + + Delete + + + + + ); + + })} + {emptyRows > 0 && + + + + } + +
+
+ + +
+
+ ); + +} + +// ####################################################################### + +function getRandomData(length, min, max, multiplier = 10, maxDiff = 10) { + let array = new Array(length).fill(); + let lastValue; + + return array.map(() => { + let randomValue = Math.floor(Math.random() * multiplier + 1); + + while ( + randomValue <= min || + randomValue >= max || + (lastValue && randomValue - lastValue > maxDiff) + ) { + randomValue = Math.floor(Math.random() * multiplier + 1); + } + + lastValue = randomValue; + + return { value: randomValue }; + }); +} + +export default Dashboard; diff --git a/src/pages/dashboard/components/BigStat/BigStat.js b/src/pages/dashboard/components/BigStat/BigStat.js new file mode 100644 index 0000000..0532e7e --- /dev/null +++ b/src/pages/dashboard/components/BigStat/BigStat.js @@ -0,0 +1,145 @@ +import React, { useState } from "react"; +import { Grid, Select, MenuItem, Input } from "@mui/material"; +import { ArrowForward as ArrowForwardIcon } from "@mui/icons-material"; +import { useTheme } from "styles/mui"; +import { BarChart, Bar } from "recharts"; +import classnames from "classnames"; + +// styles +import useStyles from "./styles"; + +// components +import Widget from "../../../../components/Widget"; +import { Typography } from "../../../../components/Wrappers"; + +export default function BigStat(props) { + var { product, total, color, registrations, bounce } = props; + var classes = useStyles(); + var theme = useTheme(); + + // local + var [value, setValue] = useState("daily"); + + const getRandomData = React.useMemo( + function getRandomData() { + return Array(7) + .fill() + .map(() => ({ value: Math.floor(Math.random() * 10) + 1 })); + }, + [value] + ); + + return ( + + + {product} + + + + } + className={classes.select} + > + Daily + Weekly + Monthly + +
+ } + > +
+
+ + {total[value]} + + +  {total.percent.profit ? "+" : "-"} + {total.percent.value}% + +
+ + + +
+
+
+ + + {registrations[value].value} + + + + + Registrations + +
+
+ + + {bounce[value].value}% + + + + + Bounce Rate + +
+
+ + + {registrations[value].value * 10} + + + + + Views + +
+
+ + ); +} diff --git a/src/pages/dashboard/components/BigStat/styles.js b/src/pages/dashboard/components/BigStat/styles.js new file mode 100644 index 0000000..c41cccc --- /dev/null +++ b/src/pages/dashboard/components/BigStat/styles.js @@ -0,0 +1,48 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + title: { + display: "flex", + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + width: "100%", + marginBottom: theme.spacing(1), + }, + bottomStatsContainer: { + display: "flex", + justifyContent: "space-between", + margin: theme.spacing(1) * -2, + marginTop: theme.spacing(1), + }, + statCell: { + padding: theme.spacing(2), + }, + totalValueContainer: { + display: "flex", + alignItems: "flex-end", + justifyContent: "space-between", + }, + totalValue: { + display: "flex", + alignItems: "baseline", + }, + profitArrow: { + transform: "rotate(-45deg)", + fill: theme.palette.success.main, + }, + profitArrowDanger: { + transform: "rotate(45deg)", + fill: theme.palette.secondary.main, + }, + selectInput: { + padding: 10, + paddingRight: 25, + "&:focus": { + backgroundColor: "white", + }, + }, + bodyWidgetOverflow: { + overflow: 'auto' + } +})); diff --git a/src/pages/dashboard/components/Table/Table.js b/src/pages/dashboard/components/Table/Table.js new file mode 100644 index 0000000..6e9eac9 --- /dev/null +++ b/src/pages/dashboard/components/Table/Table.js @@ -0,0 +1,65 @@ +import { + Table, + TableRow, + TableHead, + TableBody, + TableCell, + Box +} from "@mui/material"; + +import { Button, Avatar } from "../../../../components/Wrappers"; + +// components +const states = { + sent: "success", + pending: "warning", + declined: "secondary" +}; +export default function TableComponent({ data }) { + let keys = Object.keys(data[0]).map(i => i.toUpperCase()); + keys.shift(); + keys.pop(); // delete "id, colors" key + + return ( + + + + {keys.map(key => ( + {key} + ))} + + + + {data.map( + ({ id, name, email, product, price, date, city, status, color }) => ( + + + + + {name[0]} + {" "} + {name} + + + {email} + {product} + {price} + {date} + {city} + + + + + ) + )} + +
+ ); +} diff --git a/src/pages/dashboard/mock.js b/src/pages/dashboard/mock.js new file mode 100644 index 0000000..169cb59 --- /dev/null +++ b/src/pages/dashboard/mock.js @@ -0,0 +1,189 @@ +const mock = { + tasks: [ + { + id: 0, + type: "Meeting", + title: "Meeting with Andrew Piker", + time: "9:00" + }, + { + id: 1, + type: "Call", + title: "Call with HT Company", + time: "12:00" + }, + { + id: 2, + type: "Meeting", + title: "Meeting with Zoe Alison", + time: "14:00" + }, + { + id: 3, + type: "Interview", + title: "Interview with HR", + time: "15:00" + } + ], + bigStat: [ + { + product: "Light Blue", + total: { + monthly: 4232, + weekly: 1465, + daily: 199, + percent: { value: 3.7, profit: false } + }, + color: "primary", + registrations: { + monthly: { value: 830, profit: false }, + weekly: { value: 215, profit: true }, + daily: { value: 33, profit: true } + }, + bounce: { + monthly: { value: 4.5, profit: false }, + weekly: { value: 3, profit: true }, + daily: { value: 3.25, profit: true } + } + }, + { + product: "Sing App", + total: { + monthly: 754, + weekly: 180, + daily: 27, + percent: { value: 2.5, profit: true } + }, + color: "warning", + registrations: { + monthly: { value: 32, profit: true }, + weekly: { value: 8, profit: true }, + daily: { value: 2, profit: false } + }, + bounce: { + monthly: { value: 2.5, profit: true }, + weekly: { value: 4, profit: false }, + daily: { value: 4.5, profit: false } + } + }, + { + product: "RNS", + total: { + monthly: 1025, + weekly: 301, + daily: 44, + percent: { value: 3.1, profit: true } + }, + color: "secondary", + registrations: { + monthly: { value: 230, profit: true }, + weekly: { value: 58, profit: false }, + daily: { value: 15, profit: false } + }, + bounce: { + monthly: { value: 21.5, profit: false }, + weekly: { value: 19.35, profit: false }, + daily: { value: 10.1, profit: true } + } + } + ], + notifications: [ + { + id: 0, + icon: "thumbs-up", + color: "primary", + content: + 'Ken accepts your invitation' + }, + { + id: 1, + icon: "file", + color: "success", + content: "Report from LT Company" + }, + { + id: 2, + icon: "envelope", + color: "danger", + content: '4 Private Mails' + }, + { + id: 3, + icon: "comment", + color: "success", + content: '3 Comments to your Post' + }, + { + id: 4, + icon: "cog", + color: "light", + content: 'New Version of RNS app' + }, + { + id: 5, + icon: "bell", + color: "info", + content: + '15 Notifications from Social Apps' + } + ], + table: [ + { + id: 0, + name: "Mark Otto", + email: "ottoto@example.com", + product: "ON the Road", + price: "$25 224.2", + date: "11 May 2017", + city: "Otsego", + status: "Sent", + color: "primary" + }, + { + id: 1, + name: "Jacob Thornton", + email: "thornton@example.com", + product: "HP Core i7", + price: "$1 254.2", + date: "4 Jun 2017", + city: "Fivepointville", + status: "Sent", + color: "secondary" + }, + { + id: 2, + name: "Larry the Bird", + email: "bird@example.com", + product: "Air Pro", + price: "$1 570.0", + date: "27 Aug 2017", + city: "Leadville North", + status: "Pending", + color: "warning" + }, + { + id: 3, + name: "Joseph May", + email: "josephmay@example.com", + product: "Version Control", + price: "$5 224.5", + date: "19 Feb 2018", + city: "Seaforth", + status: "Declined", + color: "success" + }, + { + id: 4, + name: "Peter Horadnia", + email: "horadnia@example.com", + product: "Let's Dance", + price: "$43 594.7", + date: "1 Mar 2018", + city: "Hanoverton", + status: "Sent", + color: "info" + } + ] +}; + +export default mock; \ No newline at end of file diff --git a/src/pages/dashboard/package.json b/src/pages/dashboard/package.json new file mode 100644 index 0000000..bc904f8 --- /dev/null +++ b/src/pages/dashboard/package.json @@ -0,0 +1,6 @@ +{ + "name": "Dashboard", + "version": "1.0.0", + "private": true, + "main": "Dashboard.js" +} diff --git a/src/pages/dashboard/styles.js b/src/pages/dashboard/styles.js new file mode 100644 index 0000000..aa35f93 --- /dev/null +++ b/src/pages/dashboard/styles.js @@ -0,0 +1,148 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + card: { + minHeight: '100%', + display: 'flex', + flexDirection: 'column', + }, + progressSection: { + marginBottom: theme.spacing(1), + }, + progressSectionTitle: { + marginBottom: theme.spacing(1), + }, + progress: { + marginBottom: theme.spacing(1), + backgroundColor: 'rgb(236, 236, 236)', + }, + pieChartLegendWrapper: { + height: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'flex-end', + marginRight: theme.spacing(1), + }, + legendItemContainer: { + display: 'flex', + alignItems: 'center', + marginBottom: theme.spacing(1), + justifyContent: 'space-between', + width: '100%', + }, + fullHeightBody: { + display: 'flex', + flexGrow: 1, + flexDirection: 'column', + justifyContent: 'space-between', + }, + alignStandaloneElement: { + display: 'flex', + flexGrow: 1, + flexDirection: 'column', + justifyContent: 'center', + }, + tableWidget: { + overflowX: 'auto', + }, + progressBar: { + backgroundColor: theme.palette.warning.main, + }, + progressBarPrimary: { + backgroundColor: theme.palette.primary.main, + }, + progressBarWarning: { + backgroundColor: theme.palette.warning.main, + }, + performanceLegendWrapper: { + display: 'flex', + flexGrow: 1, + alignItems: 'center', + marginBottom: theme.spacing(1), + }, + legendElement: { + display: 'flex', + alignItems: 'center', + marginRight: theme.spacing(2), + }, + legendElementText: { + marginLeft: theme.spacing(1), + }, + serverOverviewElement: { + display: 'flex', + alignItems: 'center', + maxWidth: '100%', + }, + serverOverviewElementText: { + minWidth: 149, + paddingRight: theme.spacing(2), + }, + serverOverviewElementChartWrapper: { + width: '100%', + }, + mainChartBody: { + overflowX: 'auto', + }, + mainChartHeader: { + width: '100%', + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + [theme.breakpoints.only('xs')]: { + flexWrap: 'wrap', + }, + }, + mainChartHeaderLabels: { + display: 'flex', + alignItems: 'center', + [theme.breakpoints.only('xs')]: { + order: 3, + width: '100%', + justifyContent: 'center', + marginTop: theme.spacing(3), + marginBottom: theme.spacing(2), + }, + }, + mainChartHeaderLabel: { + display: 'flex', + alignItems: 'center', + marginLeft: theme.spacing(3), + }, + mainChartSelectRoot: { + borderColor: theme.palette.text.hint + '80 !important', + }, + mainChartSelect: { + padding: 10, + paddingRight: 25, + }, + mainChartLegendElement: { + fontSize: '14px !important', + marginLeft: theme.spacing(1), + }, + table: { + minWidth: 750, + }, + tableWrapper: { + overflowX: 'auto', + }, + visuallyHidden: { + border: 0, + clip: 'rect(0 0 0 0)', + height: 1, + margin: -1, + overflow: 'hidden', + padding: 0, + position: 'absolute', + top: 20, + width: 1, + }, + fixIconRight: { + '& .MuiSelect-icon': { + right: 4, + }, + }, + actionsIcon: { + color: '#76767B', + }, +})); diff --git a/src/pages/draggablegrid/Components/AutoloadWidget.js b/src/pages/draggablegrid/Components/AutoloadWidget.js new file mode 100644 index 0000000..43c158b --- /dev/null +++ b/src/pages/draggablegrid/Components/AutoloadWidget.js @@ -0,0 +1,127 @@ +import { makeStyles } from 'styles/mui'; +import { Typography, Grid, FormGroup, FormLabel, TextField } from '@mui/material'; +import { Button } from "../../../components/Wrappers"; + +const styles = (theme) => ({ + header: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + marginTop: 10 + }, + headerText: { + textAlign: 'center' + }, + description: { + fontSize: '1.25rem', + padding: '5px 30px 15px', + textAlign: 'center', + color: theme.palette.text.secondary + }, + label: { + margin: '5px 0' + }, + blocksMargin: { + marginBottom: '1rem' + }, + buttonsGroup: { + display: 'flex', + flexDirection: 'row', + float: 'right' + }, + button: { + marginLeft: '1rem' + }, + formLabels: { + padding: 0, + margin: 0 + } +}); + +const useStyles = makeStyles(styles); + +const AutoloadWidget = () => { + const classes = useStyles(); + return ( + + + Sign up, it's free! +
+ Faith makes it possible to achieve that which man's mind can conceive and believe. +
+
+ + + +
+   Email address +
+ + +
+
+ + +
+   Password +
+ + +
+
+ + + To make a widget automatically load it's content you just need to set autoload attribute and provide an api to update the widget content. + + + + + + {/*
<Widget updateWidgetData={"{this.updateWidgetData}"} />
*/} + + autoload may be set to an integer value. If set, for example, to 2000 will refresh widget every 2 seconds. + +
+ + +
+ +
+
+
); + +}; + +export default AutoloadWidget; diff --git a/src/pages/draggablegrid/Components/CollapsedWidget.js b/src/pages/draggablegrid/Components/CollapsedWidget.js new file mode 100644 index 0000000..31efbbc --- /dev/null +++ b/src/pages/draggablegrid/Components/CollapsedWidget.js @@ -0,0 +1,31 @@ +import { Typography, useTheme } from '@mui/material'; + +function CollapsedWidget() { + const theme = useTheme(); + const highlightedStyle = { + fontSize: '1.2rem', + color: theme.palette.primary.main, + }; + + return ( + +
+ "There are no limits. There are plateaus, but you must not stay there, you must go beyond + them. If it kills you, it kills you. A man must constantly exceed his level." +
+ — Bruce Lee +
+
+

+ To make a widget initially collapsed just add collapsed{' '} + property to .widget. +

+

+ To make it locked (prevent dragging) add .locked{' '} + class. +

+
+ ); +} + +export default CollapsedWidget; diff --git a/src/pages/draggablegrid/Components/DraggableStory.js b/src/pages/draggablegrid/Components/DraggableStory.js new file mode 100644 index 0000000..04d63bf --- /dev/null +++ b/src/pages/draggablegrid/Components/DraggableStory.js @@ -0,0 +1,63 @@ +import { useTheme } from '@mui/material/styles'; +import { Button } from "../../../components/Wrappers"; + +function DraggableStory() { + const theme = useTheme(); + + return ( +
+
+

+ Draggable story! +

+

+ Build your own interfaces! Sit back and relax. +

+
+ +
+
+
+ ); +} + +export default DraggableStory; diff --git a/src/pages/draggablegrid/Components/Loader/Loader.js b/src/pages/draggablegrid/Components/Loader/Loader.js new file mode 100644 index 0000000..005ab6c --- /dev/null +++ b/src/pages/draggablegrid/Components/Loader/Loader.js @@ -0,0 +1,18 @@ +import CircularProgress from '@mui/material/CircularProgress'; + +function Loader() { + return ( +
+ +
+ ); +} + +export default Loader; diff --git a/src/pages/draggablegrid/Components/NewsWidget.js b/src/pages/draggablegrid/Components/NewsWidget.js new file mode 100644 index 0000000..f846e5e --- /dev/null +++ b/src/pages/draggablegrid/Components/NewsWidget.js @@ -0,0 +1,110 @@ +import { makeStyles } from 'styles/mui'; +import { Typography } from '@mui/material'; +import { Link } from 'react-router-dom'; +import { + Star as StarIcon, + Mic as MicIcon, + Visibility as VisibilityIcon, + Lock as LockIcon, + HelpOutline as HelpOutlineIcon, +} from '@mui/icons-material'; +import mock from '../mock'; + +const styles = (theme) => ({ + newsList: { + marginBottom: 0, + paddingLeft: 0, + }, + listRow: { + display: 'flex', + listStyle: 'none', + boxSizing: 'content-box', + borderTop: `2px solid rgba(185, 185, 185, 0.3)`, + padding: '12px 12px 12px 0', + cursor: 'pointer', + '&:last-child': { + height: 'auto' + } + }, + iconBlock: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + width: 60, + height: 60, + '@media (max-width: 425px)': { + display: 'none', + } + }, + icon: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + fontSize: 30, + width: 60, + height: 60, + borderRadius: '50%', + color: '#fff', + }, + newsItemInfo: { + marginLeft: '1rem', + }, + newsHeader: { + textDecoration: 'none', + textTransform: 'uppercase', + color: '#536DFE', + }, + timeBlock: { + marginTop: 10, + fontSize: '0.9rem', + color: theme.palette.text.secondary, + display: 'block', + } +}) + +const useStyles = makeStyles(styles); + +const NewsWidget = () => { + const classes = useStyles(); + const getNewsIcon = (icon) => { + switch (icon) { + case 'star': + return ; + case 'microphone': + return ; + case 'eye': + return ; + case 'lock': + return ; + default: + return ; + } + }; + + return ( +
    + {mock.mainData.news.map(item => ( +
  • +
    + + {getNewsIcon(item.icon)} + +
    +
    + + + {item.title} + + +
    + {item.description} +
    + +
    +
  • + ))} +
+ ) +} + +export default NewsWidget; diff --git a/src/pages/draggablegrid/Components/SharesWidget.js b/src/pages/draggablegrid/Components/SharesWidget.js new file mode 100644 index 0000000..2de9d77 --- /dev/null +++ b/src/pages/draggablegrid/Components/SharesWidget.js @@ -0,0 +1,100 @@ +import { Box } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; + +import Dot from '../../../components/Dot/Dot'; + +import a1 from '../../../images/grid/a1.jpg'; +import a2 from '../../../images/grid/a2.jpg'; +import a3 from '../../../images/grid/a3.jpg'; +import a4 from '../../../images/grid/a4.jpg'; +function SharesWidget() { + const theme = useTheme(); + + const shares = [ + { + img: a1, + name: 'Maikel Basso', + comment: 'about 2 mins ago', + type: '#FFC35F' + }, + { + img: a2, + name: 'Ianus Arendse', + comment: 'about 42 mins ago', + type: '#536DFE' + }, + { + img: a3, + name: 'Valdemar Landau', + comment: 'one hour ago', + type: '#3CD4A0' + }, + { + img: a4, + name: 'Rick Teagan', + comment: '3 hours ago', + type: '#FF5C93' + } + ] + + // function updatedData = (data) => { + + // } + return ( +
+ {shares.map(item => ( +
+
+ + ... + +
+
{item.name}
+ {item.comment} +
+
+ + + +
+ ))} +
+ ); +} + +export default SharesWidget; diff --git a/src/pages/draggablegrid/Components/WidgsterInfo.js b/src/pages/draggablegrid/Components/WidgsterInfo.js new file mode 100644 index 0000000..5b2edab --- /dev/null +++ b/src/pages/draggablegrid/Components/WidgsterInfo.js @@ -0,0 +1,44 @@ +import { useTheme } from '@mui/material/styles'; + +import { Typography } from "../../../components/Wrappers"; + +function WidgsterInfo() { + const theme = useTheme(); + + return ( + +

+ Widgster is a plugin that allows to easily implement basic widget functions that + lots of our customers have requested. For now it has the following essential + widget features: +

+
    +
  • Collapse/Expand - all widgets can be collapsed to fill only header's + vertical + space; +
  • +
  • Close - closable. Any widget may be removed by clicking the close btn;
  • +
  • Full Screen - an option to make widget fill the whole window (just like OS);
  • +
  • Ajax Load - the hottest option allowing to load/reload widget content + asynchronously. You just + need to provide an url to fetch the data from. With loader delivered. +
  • +
+

It's available under MIT license, check out + + {' '}github{' '} + + to find it.

+

+ Test it out! +

+
+ ); +} + +export default WidgsterInfo; diff --git a/src/pages/draggablegrid/DraggableGrid.js b/src/pages/draggablegrid/DraggableGrid.js new file mode 100644 index 0000000..9877f34 --- /dev/null +++ b/src/pages/draggablegrid/DraggableGrid.js @@ -0,0 +1,137 @@ +import React from 'react'; +import { Grid, Typography } from '@mui/material'; +import Widget from '../../components/Widget'; +import { ReactSortable } from 'react-sortablejs'; +// Components +import DraggableStory from './Components/DraggableStory'; +import Loader from './Components/Loader/Loader'; +import CollapsedWidget from './Components/CollapsedWidget'; +import WidgsterInfo from './Components/WidgsterInfo'; +import SharesWidget from './Components/SharesWidget'; +import AutoloadWidget from './Components/AutoloadWidget'; +import NewsWidget from './Components/NewsWidget'; + +import mock from './mock'; +import useStyles from "./styles"; + +const initialLeftWidgets = [ + { id: 'widgster-info' }, + { id: 'default-widget' }, + { id: 'latest-shares' }, + { id: 'autoload-widget' }, +]; + +const initialRightWidgets = [ + { id: 'news-widget' }, + { id: 'collapsed-widget' }, + { id: 'draggable-story' }, + { id: 'custom-loader' }, +]; + +function renderWidget(widgetId, classes) { + switch (widgetId) { + case 'widgster-info': + return ( + + + + + + ); + case 'default-widget': + return ( + + + {mock.mainData.default.map((item) => ( + + {item.value} + + ))} + + + ); + case 'latest-shares': + return ( + + + + + + ); + case 'autoload-widget': + return ( + + + + + + ); + case 'news-widget': + return ( + + + + + + ); + case 'collapsed-widget': + return ( + + + + + + ); + case 'draggable-story': + return ( + + + + ); + case 'custom-loader': + return ( + + + + + + ); + default: + return null; + } +} + +function DraggableGrid() { + const classes = useStyles(); + const [leftWidgets, setLeftWidgets] = React.useState(initialLeftWidgets); + const [rightWidgets, setRightWidgets] = React.useState(initialRightWidgets); + + return ( + + + + {leftWidgets.map(({ id }) => renderWidget(id, classes))} + + + + + {rightWidgets.map(({ id }) => renderWidget(id, classes))} + + + ); + +} + +export default DraggableGrid; diff --git a/src/pages/draggablegrid/mock.js b/src/pages/draggablegrid/mock.js new file mode 100644 index 0000000..a4ea663 --- /dev/null +++ b/src/pages/draggablegrid/mock.js @@ -0,0 +1,152 @@ +import dayjs from 'utils/dayjs'; + +const draggableGridMock = { + mainData: { + default: [ + { + id: 1, + value: 'A timestamp this widget was created: Jan 12, 19:01:07' + }, + { + id: 2, + value: 'A timestamp this widget was updated: Jan 12, 19:07:07' + }, + ], + shares: [ + { + img: '/react-material-admin-full/src/images/grid/a1.jpg', + name: 'Maikel Basso', + comment: 'about 2 mins ago', + type: 'danger' + }, + { + img: '/react-material-admin-full/src/images/grid/a2.jpg', + name: 'Ianus Arendse', + comment: 'about 42 mins ago', + type: 'info' + }, + { + img: '/react-material-admin-full/src/images/grid/a3.jpg', + name: 'Valdemar Landau', + comment: 'one hour ago', + type: 'success' + }, + { + img: '/react-material-admin-full/src/images/grid/a3.jpg', + name: 'Rick Teagan', + comment: '3 hours ago', + type: 'warning' + } + ], + autoload: { + title: '

Sign up, it's free

', + }, + news: [ + { + background: '#FFC260', + icon: 'star', + title: 'First Human Colony on Mars', + description: 'First 700 will take part in building first human settlement outside of Earth. That\'s awesome, right?', + date: 'Mar 20, 18:46' + }, + { + background: '#536DFE', + icon: 'microphone', + title: 'Light Blue reached $300', + description: 'Light Blue Inc. shares just hit $300 price. "This was inevitable. It should have happen sooner or later" - says NYSE expert.', + date: 'Sep 25, 11:59' + }, + { + background: '#3CD4A0', + icon: 'eye', + title: 'No more spying', + description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + date: dayjs().format('MMM DD, hh:mm:ss') + } + ] + }, + updatedData: { + default: [ + { + extraClass: 'text-muted', + value: 'Simulating latency with tiny html block on the server-side.' + }, + { + value: 'A timestamp this widget was created: Apr 24, 19:07:07' + }, + { + value: 'A timestamp this widget was updated: ' + dayjs().format('MMM DD, hh:mm:ss') + }, + ], + shares: [ + { + img: '/react-material-admin-full/src/images/grid/a6.jpg', + name: 'Jenny Wilington', + comment: 'just now', + type: 'success', + extraClass: 'animated fadeInDown' + }, + { + img: '/react-material-admin-full/src/images/grid/a1.jpg', + name: 'Maikel Basso', + comment: 'about 2 mins ago', + type: 'danger' + }, + { + img: '/react-material-admin-full/src/images/grid/a2.jpg', + name: 'Ianus Arendse', + comment: 'about 42 mins ago', + type: 'info' + }, + { + img: '/react-material-admin-full/src/images/grid/a3.jpg', + name: 'Valdemar Landau', + comment: 'one hour ago', + type: 'success' + }, + { + img: '/react-material-admin-full/src/images/grid/a3.jpg', + name: 'Rick Teagan', + comment: '3 hours ago', + type: 'warning' + } + ], + autoload: { + title: '

Sign up, it\'s free and get $50 now!

', + btnExtraClass: 'animated wobble' + }, + news: [ + { + extraClass: 'animated fadeInDown', + background: 'warning', + icon: 'lock', + title: 'Just now! Check update time', + description: 'Check this news item timestamp. There is a small server part that generates current timestamp so it would be easier for you to see ajax widgets in action', + date: 'Mar 20, 18:46' + }, + { + background: 'danger', + icon: 'star', + title: 'First Human Colony on Mars', + description: 'First 700 will take part in building first human settlement outside of Earth. That's awesome, right?', + date: 'Mar 20, 18:46' + }, + { + background: 'info', + icon: 'microphone', + title: 'Light Blue reached $300', + description: 'Light Blue Inc. shares just hit $300 price. ‘This was inevitable. It should have happen sooner or later" - says NYSE expert.', + date: 'Sep 25, 11:59' + }, + { + background: 'success', + icon: 'eye', + title: 'No more spying', + description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + date: dayjs().format('MMM DD, hh:mm:ss') + } + ] + } +}; + +export default draggableGridMock; diff --git a/src/pages/draggablegrid/package.json b/src/pages/draggablegrid/package.json new file mode 100644 index 0000000..5c00035 --- /dev/null +++ b/src/pages/draggablegrid/package.json @@ -0,0 +1,7 @@ +{ + "name": "DraggableGrid", + "version": "1.0.0", + "private": true, + "main": "DraggableGrid.js" +} + diff --git a/src/pages/draggablegrid/styles.js b/src/pages/draggablegrid/styles.js new file mode 100644 index 0000000..be91fb4 --- /dev/null +++ b/src/pages/draggablegrid/styles.js @@ -0,0 +1,16 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(() => ({ + root: { + // marginTop: '-36px', + }, + widgetLayout: { + margin: '0 0 32px 0', + }, + loaderWidgetLayout: { + marginTop: '32px', + }, + autoloadWidgetLayout: { + margin: 0, + }, +})); diff --git a/src/pages/ecommerce/CreateProduct.js b/src/pages/ecommerce/CreateProduct.js new file mode 100644 index 0000000..e22cac7 --- /dev/null +++ b/src/pages/ecommerce/CreateProduct.js @@ -0,0 +1,411 @@ +import React, { useEffect } from "react"; +import { + Box, + CircularProgress, + Grid, + MenuItem, + Select, + TextField as Input } from +"@mui/material"; +import { useLocation, useNavigate, useParams } from "react-router-dom"; + +//context +import { + getProductsRequest, + useProductsState, + updateProduct, + createProduct, + getProductsImages } from +"../../context/ProductContext"; + +//components +import Widget from "../../components/Widget"; +import { Typography, Button } from "../../components/Wrappers"; +import config from "../../config"; + +const CreateProduct = () => { + const { id } = useParams(); + const context = useProductsState(); + + const getId = (id) => { + return context.products.products.findIndex((c) => { + return c.id == id; + }); + }; + + const [localProducts, setLocalProducts] = React.useState( + context.products.products[getId(id)] + ); + + const [newProduct, setNewProduct] = React.useState({ + img: + "https://flatlogic-node-backend.flatlogic.com/assets/products/img1.jpg", + title: null, + subtitle: null, + price: 0.1, + rating: 5, + description_1: null, + description_2: null, + code: null, + hashtag: null, + technology: [], + discount: 0 + }); + + // function sendNotification() { + // const componentProps = { + // type: "feedback", + // message: "Product has been Updated!", + // variant: "contained", + // color: "success" + // }; + // const options = { + // type: "info", + // position: toast.POSITION.TOP_RIGHT, + // progressClassName: classes.progress, + // className: classes.notification, + // timeOut: 1000 + // }; + // return toast( + // , + // options + // ); + // } + + useEffect(() => { + getProductsRequest(context.setProducts); + getProductsImages(context.setProducts); + }, []); + + useEffect(() => { + setLocalProducts(context.products.products[getId(id)]); + }, [context]); + + const navigate = useNavigate(); + const location = useLocation(); + + const editProduct = (e) => { + setLocalProducts({ + ...localProducts, + [e.target.id]: e.currentTarget.value.split(' ') + }); + }; + + const editNewProduct = (e) => { + setNewProduct({ + ...newProduct, + [e.target.id]: e.currentTarget.value + }); + }; + + const getEditProduct = () => { + updateProduct(localProducts, context.setProducts); + navigate('/app/ecommerce/management'); + // sendNotification(); + }; + + const createNewProduct = () => { + createProduct(newProduct, context.setProducts); + navigate('/app/ecommerce/management'); + }; + + const changeImgSrc = (e) => { + if (isCreateProduct) { + setNewProduct({ ...localProducts, img: e.target.value }); + } else { + setLocalProducts({ ...localProducts, img: e.target.value }); + } + }; + + + const isCreateProduct = + location.pathname === "/app/ecommerce/management/create"; + + return ( + <> + + {/**/} + {/* }*/} + {/* closeOnClick={false}*/} + {/* progressClassName={classes.notificationProgress}*/} + {/*/>*/} + + + + {config.isBackend && !context.products.isLoaded ? + + + + : + + + + + Image + + + + + + + + Title + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Subtitle + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Price + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Discount + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Description 1 + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Description 2 + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Code + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Hashtag + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Technology + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + Rating + + + + isCreateProduct ? editNewProduct(e) : editProduct(e) + } /> + + + + + + + + + } + + + + ); + +}; + + +export default CreateProduct; diff --git a/src/pages/ecommerce/Ecommerce.js b/src/pages/ecommerce/Ecommerce.js new file mode 100644 index 0000000..9b3cc45 --- /dev/null +++ b/src/pages/ecommerce/Ecommerce.js @@ -0,0 +1,619 @@ +import React, { useEffect } from "react"; +import { + Grid, + Table, + TableBody, + TableCell, + TablePagination, + TableRow, + TableHead, + IconButton, + Checkbox, + TableSortLabel, + Tooltip, + Toolbar, + CircularProgress, + Box, + InputAdornment, + TextField as Input } from +"@mui/material"; +import { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom'; + +//config +import config from "../../config"; + +// Material UI icons +import { + Star as StarIcon, + Delete as DeleteIcon, + FilterList as FilterListIcon, + Close as CloseIcon, + Search as SearchIcon } from +"@mui/icons-material"; +import { yellow } from "@mui/material/colors"; +import { lighten } from "@mui/material/styles"; +import { makeStyles } from "styles/mui"; +import PropTypes from "prop-types"; +import useStyles from "./styles"; +import cn from "classnames"; + +//context +import { + useProductsState, + getProductsRequest, + deleteProductRequest } from +"../../context/ProductContext"; + +// components +import Widget from "../../components/Widget"; +import { Typography, Button, Link } from "../../components/Wrappers"; +// import Notification from "../../components/Notification"; + +function desc(a, b, orderBy) { + if (b[orderBy] < a[orderBy]) { + return -1; + } + if (b[orderBy] > a[orderBy]) { + return 1; + } + return 0; +} + +function stableSort(array, cmp) { + const stabilizedThis = array.map((el, index) => [el, index]); + stabilizedThis.sort((a, b) => { + const order = cmp(a[0], b[0]); + if (order !== 0) return order; + return a[1] - b[1]; + }); + return stabilizedThis.map((el) => el[0]); +} + +function getSorting(order, orderBy) { + return order === "desc" ? + (a, b) => desc(a, b, orderBy) : + (a, b) => -desc(a, b, orderBy); +} + +const headCells = [ +{ + id: "id", + numeric: true, + disablePadding: true, + label: "ID" +}, +{ id: "image", numeric: true, disablePadding: false, label: "Image" }, +{ id: "title", numeric: true, disablePadding: false, label: "Title" }, +{ id: "subtitle", numeric: true, disablePadding: false, label: "Subtitle" }, +{ id: "price", numeric: true, disablePadding: false, label: "Price" }, +{ id: "rating", numeric: true, disablePadding: false, label: "Rating" }, +{ id: "actions", numeric: true, disablePadding: false, label: "Actions" }]; + + +function EnhancedTableHead(props) { + const { + classes, + onSelectAllClick, + order, + orderBy, + numSelected, + rowCount, + onRequestSort + } = props; + const createSortHandler = (property) => (event) => { + onRequestSort(event, property); + }; + + return ( + + + + 0 && numSelected < rowCount} + checked={numSelected === rowCount} + onChange={onSelectAllClick} + inputProps={{ "aria-label": "select all rows" }} /> + + + {headCells.map((headCell) => + + + + + {headCell.label} + {orderBy === headCell.id ? + + {order === "desc" ? "sorted descending" : "sorted ascending"} + : + null} + + + )} + + ); + +} + +EnhancedTableHead.propTypes = { + classes: PropTypes.object.isRequired, + numSelected: PropTypes.number.isRequired, + onRequestSort: PropTypes.func.isRequired, + onSelectAllClick: PropTypes.func.isRequired, + order: PropTypes.oneOf(["asc", "desc"]).isRequired, + orderBy: PropTypes.string.isRequired, + rowCount: PropTypes.number.isRequired +}; + +const useToolbarStyles = makeStyles((theme) => ({ + root: { + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(1) + }, + highlight: + theme.palette.mode === "light" ? + { + color: theme.palette.secondary.main, + backgroundColor: lighten(theme.palette.secondary.light, 0.85) + } : + { + color: theme.palette.text.primary, + backgroundColor: theme.palette.secondary.dark + }, + title: { + flex: "1 1 100%" + } +})); + +const EnhancedTableToolbar = ({ numSelected, selected, onDeleteSelected }) => { + const classes = useToolbarStyles(); + + return ( + 0 + })} + style={{ marginTop: 8 }}> + + {numSelected > 0 ? + + + {numSelected} selected + : + + + Products + + } + + {numSelected > 0 ? + + + onDeleteSelected(selected, e)} /> + + : + + + + + + + } + ); + +}; + +EnhancedTableToolbar.propTypes = { + numSelected: PropTypes.number.isRequired +}; + +function EcommercePage() { + const classes = useStyles(); + const navigate = useNavigate(); + const location = useLocation(); + const context = useProductsState(); + const [order, setOrder] = React.useState("asc"); + const [orderBy, setOrderBy] = React.useState("price"); + const [selected, setSelected] = React.useState([]); + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + const [backProducts, setBackProducts] = React.useState( + context.products.products + ); + + useEffect(() => { + // sendNotification(); + getProductsRequest(context.setProducts); + }, []); + + useEffect(() => { + setBackProducts(context.products.products); + }, [context]); + + const handleRequestSort = (event, property) => { + const isDesc = orderBy === property && order === "desc"; + setOrder(isDesc ? "asc" : "desc"); + setOrderBy(property); + }; + + const searchProducts = (e) => { + let products = []; + context.products.products.forEach((c) => { + if (c.title.includes(e.currentTarget.value)) { + products.push(c); + } + return; + }); + setBackProducts(products); + }; + + const openProduct = (id, event) => { + navigate(`/app/ecommerce/product/${id}`); + event.stopPropagation(); + }; + + const handleSelectAllClick = (event) => { + if (event.target.checked) { + const newSelecteds = backProducts.map((n) => n.id); + setSelected(newSelecteds); + return; + } + setSelected([]); + }; + + const handleClick = (event, name) => { + const selectedIndex = selected.indexOf(name); + let newSelected = []; + + if (selectedIndex === -1) { + newSelected = newSelected.concat(selected, name); + } else if (selectedIndex === 0) { + newSelected = newSelected.concat(selected.slice(1)); + } else if (selectedIndex === selected.length - 1) { + newSelected = newSelected.concat(selected.slice(0, -1)); + } else if (selectedIndex > 0) { + newSelected = newSelected.concat( + selected.slice(0, selectedIndex), + selected.slice(selectedIndex + 1) + ); + } + + setSelected(newSelected); + }; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + const isSelected = (name) => selected.indexOf(name) !== -1; + + const emptyRows = + rowsPerPage - + Math.min(rowsPerPage, backProducts.length - page * rowsPerPage); + + // function sendNotification() { + // const componentProps = { + // type: "feedback", + // message: + // "This page is only available in React Material Admin Full with Node.js integration!", + // variant: "contained", + // color: "success" + // }; + // const options = { + // type: "info", + // position: toast.POSITION.TOP_RIGHT, + // progressClassName: classes.progress, + // className: classes.notification, + // timeOut: 1000 + // }; + // return toast( + // , + // options + // ); + // } + + const deleteProduct = (id, event) => { + deleteProductRequest({ + id, + navigate, + pathname: location.pathname, + dispatch: context.setProducts, + }); + event.stopPropagation(); + }; + + const openProductEdit = (event, id) => { + navigate(`/app/ecommerce/management/edit/${id}`); + event.stopPropagation(); + }; + + return ( + <> + + + + + + + + Products + + + + + {backProducts.length} total + + + + + + + + }} + onChange={(e) => searchProducts(e)} /> + + + }> + + {config.isBackend ? + : + + + + } + + + {config.isBackend && !context.products.isLoaded ? + + + + : + +
+ + + + + + {stableSort(backProducts, getSorting(order, orderBy)) + .slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + .map((row, index) => { + const isItemSelected = isSelected(row.id); + const labelId = `enhanced-table-checkbox-${index}`; + + return ( + handleClick(event, row.id)} + role="checkbox" + aria-checked={isItemSelected} + selected={isItemSelected} + key={row.id}> + + + + + + + + {row.id} + + + {row.title} + + + + openProduct(row.id, e)} + color={"primary"}> + + {row.title ? + row.title.split("").map((c, n) => { + return n === 0 ? c.toUpperCase() : c; + }) : + null} + + + {row.subtitle} + ${row.price} + + + + + {row.rating} + {" "} + + + + + {/**/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* {row.status}*/} + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + {/* {row.process}*/} + {/* */} + {/* */} + {/* */} + {/**/} + + + {config.isBackend ? + : + + + + } + + + + ); + + })} + {emptyRows > 0 && + + + + } + +
+
+ } + + +
+
+
+ ); + +} + +// eslint-disable-next-line no-unused-vars +function CloseButton({ closeToast, className }) { + return ; +} + +export default EcommercePage; diff --git a/src/pages/ecommerce/Products.js b/src/pages/ecommerce/Products.js new file mode 100644 index 0000000..797de76 --- /dev/null +++ b/src/pages/ecommerce/Products.js @@ -0,0 +1,605 @@ +import React from "react"; +import { + Grid, + Box, + FormControl, + InputLabel, + MenuItem, + Select, + IconButton, + Card, + CardActionArea, + CardActions, + CardContent, + CardMedia } from +"@mui/material"; +import { + Star as StarIcon, + StarBorder as StarOutlinedIcon, + ShoppingCart as ShoppingCartIcon, + Facebook as FacebookIcon, + Instagram as InstagramIcon, + Twitter as TwitterIcon } from +"@mui/icons-material"; +import useStyles from "./styles"; +import { yellow } from "@mui/material/colors"; + +//components +import Widget from "../../components/Widget"; +import PageTitle from "../../components/PageTitle"; +import { Typography, Link, Button } from "../../components/Wrappers"; + +//images +import img1 from "../../images/product/img1.jpg"; +import img2 from "../../images/product/img2.jpg"; +import img3 from "../../images/product/img3.jpg"; +import img4 from "../../images/product/img4.jpg"; +import img5 from "../../images/product/img5.jpeg"; +import img6 from "../../images/product/img6.jpg"; +import payment1 from "../../images/product/mastercard.svg"; +import payment2 from "../../images/product/paypal.svg"; +import payment3 from "../../images/product/visa.svg"; +import payment4 from "../../images/product/aexpress.svg"; +import { useParams } from 'react-router-dom'; + +export const rows = [ +{ + id: 1, + img: img1, + title: "Trainers", + subtitle: "Trainers In White", + price: 76, + rating: 4.6, + color: "primary", + status: "Shipped", + process: "64%" +}, +{ + id: 2, + img: img2, + title: "Boots", + subtitle: "Trainers In Blue", + price: 37, + rating: 4.6, + color: "success", + status: "Delivered", + process: "100%" +}, +{ + id: 3, + img: img3, + title: "Flat sandals", + subtitle: "Trainers In White", + price: 70, + rating: 4.6, + color: "secondary", + status: "Canceled", + process: "0%" +}, +{ + id: 4, + img: img4, + title: "Trainers", + subtitle: "Trainers In Blue", + price: 85, + rating: 4.6, + color: "primary", + status: "Shipped", + process: "64%" +}, +{ + id: 5, + img: img5, + title: "Flat sandals", + subtitle: "Trainers In White", + price: 12, + rating: 4.6, + color: "success", + status: "Delivered", + process: "100%" +}, +{ + id: 6, + img: img6, + title: "Trainers", + subtitle: "Trainers In Blue", + price: 76, + rating: 4.6, + color: "secondary", + status: "Canceled", + process: "0%" +}, +{ + id: 7, + img: img1, + title: "Boots", + subtitle: "Trainers In White", + price: 76, + rating: 4.6, + color: "primary", + status: "Shipped", + process: "64%" +}, +{ + id: 8, + img: img2, + title: "Flat sandals", + subtitle: "Trainers In White", + price: 76, + rating: 4.6, + color: "success", + status: "Delivered", + process: "100%" +}, +{ + id: 9, + img: img3, + title: "Trainers", + subtitle: "Trainers In White", + price: 76, + rating: 4.6, + color: "secondary", + status: "Canceled", + process: "0%" +}, +{ + id: 10, + img: img4, + title: "Boots", + subtitle: "Trainers In Blue", + price: 76, + rating: 4.6, + color: "primary", + status: "Shipped", + process: "64%" +}, +{ + id: 11, + img: img5, + title: "Trainers", + subtitle: "Trainers In White", + price: 71, + rating: 4.6, + color: "success", + status: "Delivered", + process: "100%" +}, +{ + id: 12, + img: img6, + title: "Flat sandals", + subtitle: "Trainers In Blue", + price: 76, + rating: 4.6, + color: "secondary", + status: "Canceled", + process: "0%" +}]; + + +const Product = () => { + const { id } = useParams(); + const productId = Number(id); + const classes = useStyles(); + const [size, setValues] = React.useState(""); + const handleChange = (event) => { + setValues(event.target.value); + }; + const [addSize, setAddSize] = React.useState(1); + const handleChangeAddSize = (event) => { + setAddSize(event.target.value); + }; + + return ( + <> + + + + + + {!productId ? + {rows[0].title} : + + + {rows[productId + + } + + + + + + {!productId ? +
+ {rows[0].rating} + + +
: + + <> + + + {rows[productId - 1].rating} + + + + + }{" "} +
+ + {!productId ? + <> + + {rows[0].title} + + {rows[0].subtitle} + : + + <> + + {rows[productId - 1].title} + + + {rows[productId].subtitle} + + + }{" "} + + + {!productId ? + <> + + ${rows[0].price} + + : + + <> + + ${rows[productId].price} + + + }{" "} + + + Size Guide + + + + + + Select size + + + + + + + + + + + + + + {"mastercard"} + + {"paypal"} + + {"visa"} + + {"americanexpress"} + + + + FREE Delivery & Returns + +
+
+
+
+
+ + + + + + + + PRODUCT DESCRIPTION + +
    +
  • + Sneakers (also known as athletic shoes, tennis shoes,gym + shoes, runners, takkies, or trainers) are shoes + primarily designed for sports or other forms of physical + exercise, but which are now also often used for everyday + wear. +
  • +
  • + The term generally describes a type of footwear with a + flexible sole made of rubber or synthetic material and + an upper part made of leather or synthetic materials. +
  • +
+
+ + + + + PRODUCT CODE + +

135234

+
+ + + TECHNOLOGY + +
    +
  • Ollie patch
  • +
  • Cup soles
  • +
  • Vulcanized rubber soles
  • +
+
+
+ + + + SHARE + +

+ Share photo with a tag{" "} + + #whitetrainers + +

+ + + + + + + + + + + +
+ + + RATING & REVIEWS + + {!productId ? +
+ {rows[0].rating} + + +
: + + <> + + + {rows[productId - 1].rating} + + + + + } +

32 Reviews

+ + Read all + +
+
+
+
+
+
+
+
+ + + + + + + + + + + {rows[0].title} + + + {rows[0].subtitle} + + + + + + + ${rows[0].price} + +
+ {rows[0].rating} + +
+
+
+
+ + + + + + + + {rows[1].title} + + + {rows[1].subtitle} + + + + + + + ${rows[1].price} + +
+ {rows[1].rating} + +
+
+
+
+ + + + + + + + {rows[2].title} + + + {rows[2].subtitle} + + + + + + + ${rows[2].price} + +
+ {rows[2].rating} + +
+
+
+
+ + + + + + + + {rows[3].title} + + + {rows[3].subtitle} + + + + + + + ${rows[3].price} + +
+ {rows[3].rating} + +
+
+
+
+
+
+ ); + +}; + +export default Product; diff --git a/src/pages/ecommerce/ProductsGrid.js b/src/pages/ecommerce/ProductsGrid.js new file mode 100644 index 0000000..bb40f5a --- /dev/null +++ b/src/pages/ecommerce/ProductsGrid.js @@ -0,0 +1,300 @@ +import React from "react"; +import { + Grid, + Box, + FormControl, + InputLabel, + MenuItem, + Select, + Card, + CardActions, + CardContent, + CardActionArea, + CardMedia } from +"@mui/material"; +import { Star as StarIcon } from "@mui/icons-material"; +import { yellow } from "@mui/material/colors"; +import useStyles from "./styles"; + +//components +import { Typography, Chip } from "../../components/Wrappers"; + +//products array +import { rows } from "./mock"; + +const Product = () => { + const classes = useStyles(); + + const selectReducer = (state, action) => { + switch (action.type) { + case "SELECT_TYPE": + return { + ...state, + valueType: action.valueType + }; + case "SELECT_BRANDS": + return { + ...state, + valueBrands: action.valueBrands + }; + case "SELECT_SIZE": + return { + ...state, + valueSize: action.valueSize + }; + case "SELECT_COLOUR": + return { + ...state, + valueColor: action.valueColor + }; + case "SELECT_RANGE": + return { + ...state, + valueRange: action.valueRange + }; + case "SELECT_SORT": + return { + ...state, + valueSort: action.valueSort + }; + default: + return { + ...state + }; + } + }; + + const [state, dispatch] = React.useReducer(selectReducer, { + valueType: "Shoes", + valueBrands: "All", + valueSize: 7, + valueColour: "All", + valueRange: "All", + valueSort: "Favorite" + }); + return ( + <> + + + + + + + Type + + + + + + + Brands + + + + + + + Size + + + + + + + Colour + + + + + + + Range + + + + + + + Sort + + + + + + + + + {rows.map((c) => + + + + + + {c.id % 2 ? + : + + + } + + + + {c.title} + + + + {c.subtitle} + + + + + + + ${c.price} + +
+ {rows[0].rating} + + +
+
+
+
+
+
+ )} +
+
+
+
+ ); + +}; + +export default Product; diff --git a/src/pages/ecommerce/mock.js b/src/pages/ecommerce/mock.js new file mode 100644 index 0000000..f053614 --- /dev/null +++ b/src/pages/ecommerce/mock.js @@ -0,0 +1,106 @@ +//images +import img1 from "../../images/product/img1.jpg"; +import img2 from "../../images/product/img2.jpg"; +import img3 from "../../images/product/img3.jpg"; +import img4 from "../../images/product/img4.jpg"; +import img5 from "../../images/product/img5.jpeg"; +import img6 from "../../images/product/img6.jpg"; + +export const rows = [ + { + id: 1, + img: img1, + title: "Trainers", + subtitle: "Trainers In White", + price: 80, + rating: 4.6 + }, + { + id: 2, + img: img2, + title: "Boots", + subtitle: "Trainers In Blue", + price: 37, + rating: 4.6 + }, + { + id: 3, + img: img3, + title: "Flat sandals", + subtitle: "Trainers In White", + price: 70, + rating: 4.6 + }, + { + id: 4, + img: img4, + title: "Trainers", + subtitle: "Trainers In Blue", + price: 85, + rating: 4.6 + }, + { + id: 5, + img: img5, + title: "Flat sandals", + subtitle: "Trainers In White", + price: 12, + rating: 4.6 + }, + { + id: 6, + img: img6, + title: "Trainers", + subtitle: "Trainers In Blue", + price: 76, + rating: 4.6 + }, + { + id: 7, + img: img1, + title: "Boots", + subtitle: "Trainers In White", + price: 76, + rating: 4.6 + }, + { + id: 8, + img: img2, + title: "Flat sandals", + subtitle: "Trainers In White", + price: 76, + rating: 4.6 + }, + { + id: 9, + img: img3, + title: "Trainers", + subtitle: "Trainers In White", + price: 76, + rating: 4.6 + }, + { + id: 10, + img: img4, + title: "Boots", + subtitle: "Trainers In Blue", + price: 76, + rating: 4.6 + }, + { + id: 11, + img: img5, + title: "Trainers", + subtitle: "Trainers In White", + price: 71, + rating: 4.6 + }, + { + id: 12, + img: img6, + title: "Flat sandals", + subtitle: "Trainers In Blue", + price: 76, + rating: 4.6 + } +]; diff --git a/src/pages/ecommerce/package.json b/src/pages/ecommerce/package.json new file mode 100644 index 0000000..30529c1 --- /dev/null +++ b/src/pages/ecommerce/package.json @@ -0,0 +1,6 @@ +{ + "name": "Ecommerce", + "version": "1.0.0", + "main": "Ecommerce.js", + "license": "MIT" +} diff --git a/src/pages/ecommerce/styles.js b/src/pages/ecommerce/styles.js new file mode 100644 index 0000000..80d4400 --- /dev/null +++ b/src/pages/ecommerce/styles.js @@ -0,0 +1,126 @@ +import { makeStyles } from "styles/mui"; +import tinycolor from "tinycolor2"; + +export default makeStyles(theme => ({ + form: { + flexGrow: 1 + }, + selectEmpty: { + marginTop: theme.spacing(2) + }, + card: { + width: "100%" + }, + media: { + height: 320, + padding: theme.spacing(2) + }, + root: { + width: "100%", + marginTop: theme.spacing(3) + }, + paper: { + width: "100%", + marginBottom: theme.spacing(2) + }, + table: { + minWidth: 750 + }, + tableWrapper: { + overflowX: "auto" + }, + visuallyHidden: { + border: 0, + clip: "rect(0 0 0 0)", + height: 1, + margin: -1, + overflow: "hidden", + padding: 0, + position: "absolute", + top: 20, + width: 1 + }, + denseSelect: { + "& .MuiOutlinedInput-input": { + padding: 17 + } + }, + // toast classes + layoutContainer: { + height: 200, + display: "flex", + flexDirection: "column", + justifyContent: "space-between", + alignItems: "center", + marginTop: theme.spacing(2), + border: "1px dashed", + borderColor: theme.palette.primary.main, + position: "relative" + }, + layoutText: { + color: tinycolor(theme.palette.background.light) + .darken() + .toHexString() + }, + layoutButtonsRow: { + width: "100%", + display: "flex", + justifyContent: "space-between" + }, + layoutButton: { + backgroundColor: theme.palette.background.light, + width: 125, + height: 50, + outline: "none", + border: "none" + }, + layoutButtonActive: { + backgroundColor: tinycolor(theme.palette.background.light) + .darken() + .toHexString() + }, + buttonsContainer: { + display: "flex", + flexDirection: "column", + alignItems: "flex-start", + marginTop: theme.spacing(2) + }, + notificationCallButton: { + color: "white", + marginBottom: theme.spacing(1), + textTransform: "none" + }, + codeContainer: { + display: "flex", + flexDirection: "column", + marginTop: theme.spacing(2) + }, + codeComponent: { + flexGrow: 1 + }, + notificationItem: { + marginTop: theme.spacing(2) + }, + notificationCloseButton: { + position: "absolute", + right: theme.spacing(2) + }, + toastsContainer: { + width: "auto", + marginTop: theme.spacing(6), + right: 0 + }, + progress: { + visibility: "hidden" + }, + notification: { + display: "flex", + alignItems: "center", + background: "transparent", + boxShadow: "none", + overflow: "visible" + }, + searchIcon: { + color: "rgba(0, 0, 0, 0.23)" + } +})); diff --git a/src/pages/error/Error.js b/src/pages/error/Error.js new file mode 100644 index 0000000..912f14c --- /dev/null +++ b/src/pages/error/Error.js @@ -0,0 +1,77 @@ +import { Grid, Paper } from '@mui/material'; +import { Link, useLocation } from 'react-router-dom'; +import classnames from 'classnames'; + +// styles +import useStyles from './styles'; + +//components +import { Button, Typography } from '../../components/Wrappers'; + +// logo +import logo from './logo.svg'; + +const ERROR_CONTENT = { + 403: { + title: 'Access denied', + description: "You don't have permissions to view this page", + }, + 404: { + title: "Page doesn't exist", + description: "Looks like the page you're looking for no longer exists", + }, + 500: { + title: 'Server error', + description: 'Something went wrong while processing your request', + }, +}; + +export default function Error({ code }) { + let classes = useStyles(); + const location = useLocation(); + const queryParams = new URLSearchParams(location.search); + const queryCode = Number(queryParams.get('code')); + const errorCode = Number(code) || queryCode || 404; + const content = ERROR_CONTENT[errorCode] || ERROR_CONTENT[404]; + + return ( + +
+ logo + + React Material Admin Full + +
+ + + {errorCode} + + + {content.title} + + + {content.description} + + + +
+ ); +} diff --git a/src/pages/error/logo.svg b/src/pages/error/logo.svg new file mode 100644 index 0000000..60006a3 --- /dev/null +++ b/src/pages/error/logo.svg @@ -0,0 +1,13 @@ + + + + logo_white + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/pages/error/package.json b/src/pages/error/package.json new file mode 100644 index 0000000..441c07a --- /dev/null +++ b/src/pages/error/package.json @@ -0,0 +1,6 @@ +{ + "name": "Error", + "version": "0.0.0", + "main": "Error.js", + "private": true +} diff --git a/src/pages/error/styles.js b/src/pages/error/styles.js new file mode 100644 index 0000000..072004c --- /dev/null +++ b/src/pages/error/styles.js @@ -0,0 +1,60 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + container: { + height: '100vh', + width: '100vw', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: theme.palette.primary.main, + position: 'absolute', + top: 0, + left: 0, + }, + logotype: { + display: 'flex', + alignItems: 'center', + marginBottom: theme.spacing(12), + [theme.breakpoints.down('sm')]: { + display: 'none', + }, + }, + logotypeText: { + fontWeight: 500, + color: 'white', + marginLeft: theme.spacing(2), + }, + logotypeIcon: { + width: 70, + marginRight: theme.spacing(2), + }, + paperRoot: { + boxShadow: theme.customShadows.widgetDark, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + paddingTop: theme.spacing(8), + paddingBottom: theme.spacing(8), + paddingLeft: theme.spacing(6), + paddingRight: theme.spacing(6), + maxWidth: 404, + }, + textRow: { + marginBottom: theme.spacing(10), + textAlign: 'center', + }, + errorCode: { + fontSize: 148, + fontWeight: 600, + }, + safetyText: { + fontWeight: 300, + color: theme.palette.text.hint, + }, + backButton: { + textTransform: 'none', + fontSize: 22, + }, +})); diff --git a/src/pages/forms/elements/FormsElements.js b/src/pages/forms/elements/FormsElements.js new file mode 100644 index 0000000..e87832c --- /dev/null +++ b/src/pages/forms/elements/FormsElements.js @@ -0,0 +1,518 @@ +import React from "react"; +import { + Grid, + FormHelperText, + InputAdornment, + Divider, + MenuItem, + Select, + TextField } from +"@mui/material"; +import { styled } from '@mui/material/styles'; +import useStyles from "./styles"; +import cn from "classnames"; +import { Checkbox, Radio, Input, FormControlLabel } from "@mui/material"; + +import CheckBoxIcon from '@mui/icons-material/CheckBox'; +import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'; +import RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked'; +import RadioButtonCheckedIcon from '@mui/icons-material/RadioButtonChecked'; + +import { + Favorite, + FavoriteBorder, + AccountCircle, + VpnKey as PasswordIcon, + AccountBalanceWallet as WalletIcon } from +"@mui/icons-material"; + +// components +import Widget from "../../../components/Widget/Widget"; +import { Button, Typography } from "../../../components/Wrappers/Wrappers"; +import Code from "../../../components/Code/Code"; + +const GreenCheckbox = styled((props) => )({ + color: "green", + "&.Mui-checked": { + color: "green", + }, +}); + +const GreenRadio = styled((props) => )({ + color: "green", + "&.Mui-checked": { + color: "green", + }, +}); + +const actions = [ +{ + id: 0, + value: "Action" +}, +{ + id: 1, + value: "Another action" +}, +{ + id: 2, + value: "Something else here" +}, +{ + id: 3, + type: "divider" +}, +{ + id: 4, + value: "Separated link" +}]; + + +export default function FormsElements() { + const [isChecked, setChecked] = React.useState({ + default: false, + horizontal: false + }); + const [action, setAction] = React.useState("Action"); + + const handleChange = (e) => { + setAction(e.target.value); + }; + + const classes = useStyles(); + + function StyledRadio(props) { + return ( + } + icon={} + {...props} />); + + + } + return ( +
+ + + + + + + + + Normal field + + + + + + + + + Label hint + + + + + + Some important helper text + + + + + + Disabled input + + + + + + + + + Max length + + + + + + + + + Prepended input + + + + + + } + style={{ width: "100%" }} /> + + + + + + Password + + + + + + } + style={{ width: "100%" }} /> + + + + + + Appended input + + + .00 + } + style={{ width: "100%" }} /> + + + + + + Combined input + + + + + + } + endAdornment={ + .00 + } + style={{ width: "100%" }} /> + + + + + + + + + + + + + + + + + + + + Search type input + + + + + + Outlined input + + + + + + Filled input + + + + + + + + + + + + Default select + + + + + + + + Grouped select + + + + + + + + + + + + + + + + + Fancy smaller inputs? Use the size + + small + + prop.{" "} + + + + + + + + + + + + + + + + + Custom checkboxes & radios + + + setChecked({ [e.target.value]: !isChecked.default }) + } + value="checkedG" /> + + } + label="Disabled" /> + + + setChecked({ [e.target.value]: !isChecked.default }) + } + value="checkedG" /> + + } + label="Custom color" /> + + } + checkedIcon={} + value="checkedH" /> + + } + label="Custom icon" /> + + } + checkedIcon={} + value="checkedI" /> + + } + label="Custom size" /> + + + + + setChecked({ [e.target.value]: !isChecked.default }) + } + value="c" + name="radio-button-demo" + inputProps={{ "aria-label": "C" }} /> + + } + label={"Disabled"} /> + + + setChecked({ [e.target.value]: !isChecked.default }) + } + value="c" + name="radio-button-demo" + inputProps={{ "aria-label": "C" }} /> + + } + label={"Custom color"} /> + + + setChecked({ [e.target.value]: !isChecked.default }) + } + value="e" + color="default" + name="radio-button-demo" + inputProps={{ "aria-label": "E" }} + icon={} + checkedIcon={} /> + + } + label={"Small radio"} /> + + } + label="Custom style" /> + + + + + + + + + + + + + + + Simple textarea + + + + + + + + + + + +
); + +} diff --git a/src/pages/forms/elements/package.json b/src/pages/forms/elements/package.json new file mode 100644 index 0000000..e4104ee --- /dev/null +++ b/src/pages/forms/elements/package.json @@ -0,0 +1,6 @@ +{ + "name": "elements", + "version": "1.0.0", + "main": "FormsElements.js", + "license": "MIT" +} diff --git a/src/pages/forms/elements/styles.js b/src/pages/forms/elements/styles.js new file mode 100644 index 0000000..8944bf2 --- /dev/null +++ b/src/pages/forms/elements/styles.js @@ -0,0 +1,48 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + root: { + "&:hover": { + backgroundColor: "transparent" + } + }, + icon: { + borderRadius: "50%", + width: 16, + height: 16, + boxShadow: + "inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)", + backgroundColor: "#f5f8fa", + backgroundImage: + "linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))", + "$root.Mui-focusVisible &": { + outline: "2px auto rgba(19,124,189,.6)", + outlineOffset: 2 + }, + "input:hover ~ &": { + backgroundColor: "#ebf1f5" + }, + "input:disabled ~ &": { + boxShadow: "none", + background: "rgba(206,217,224,.5)" + } + }, + checkedIcon: { + backgroundColor: "#137cbd", + backgroundImage: + "linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))", + "&:before": { + display: "block", + width: 16, + height: 16, + backgroundImage: "radial-gradient(#fff,#fff 28%,transparent 32%)", + content: '""' + }, + "input:hover ~ &": { + backgroundColor: "#106ba3" + } + }, + horizontalFormTop: { + paddingTop: theme.spacing(2) + } +})); diff --git a/src/pages/forms/validation.js b/src/pages/forms/validation.js new file mode 100644 index 0000000..d8192a6 --- /dev/null +++ b/src/pages/forms/validation.js @@ -0,0 +1,150 @@ +import React from 'react'; +import { Grid, Box } from '@mui/material'; +import Input from '@mui/material/TextField'; + +// components +import Widget from '../../components/Widget'; +import { Button, Typography } from '../../components/Wrappers'; + +const Validation = () => { + const MIN_LENGTH = 10; + const [requiredValue, setRequiredValue] = React.useState(''); + const [minLengthValue, setMinLengthValue] = React.useState(''); + const [isSubmitted, setIsSubmitted] = React.useState(false); + + const requiredError = isSubmitted && !requiredValue.trim(); + const minLengthError = + minLengthValue.length > 0 && minLengthValue.length < MIN_LENGTH; + + const validate = () => { + setIsSubmitted(true); + }; + + const resetForm = () => { + setIsSubmitted(false); + setRequiredValue(''); + setMinLengthValue(''); + }; + + return ( +
+ + + + + + Basic example with required and minimum-length validation. + + + + + + + + + Simple required + + + Checked when you click Validate + + + + setRequiredValue(event.target.value)} + error={requiredError} + helperText={requiredError ? 'This field is required' : ' '} + /> + + + + + + + + + + + Min-length on change + + + At least {MIN_LENGTH} characters + + + + setMinLengthValue(event.target.value)} + error={minLengthError} + helperText={ + minLengthError + ? `At least ${MIN_LENGTH} characters (${minLengthValue.length}/${MIN_LENGTH})` + : ' ' + } + /> + + + + + + + + + + + + + + + + +
+ ); +}; + +export default Validation; diff --git a/src/pages/gallery/Gallery.js b/src/pages/gallery/Gallery.js new file mode 100644 index 0000000..ecf6e16 --- /dev/null +++ b/src/pages/gallery/Gallery.js @@ -0,0 +1,107 @@ +import { + Grid, + Card, + CardActionArea, + CardActions, + CardMedia, + IconButton } from +"@mui/material"; +import { Favorite as LikeIcon, Chat as CommentsIcon } from "@mui/icons-material"; + +//images +import img1 from "../../images/gallery/gallery1.jpg"; +import img2 from "../../images/gallery/gallery2.jpg"; +import img3 from "../../images/gallery/gallery3.jpg"; +import img4 from "../../images/gallery/gallery4.jpg"; +import img5 from "../../images/gallery/gallery5.jpg"; +import img6 from "../../images/gallery/gallery6.jpg"; +import img7 from "../../images/gallery/gallery7.jpg"; +import img8 from "../../images/gallery/gallery8.jpg"; +import img9 from "../../images/gallery/gallery9.jpg"; +import img10 from "../../images/gallery/gallery10.jpg"; +import img11 from "../../images/gallery/gallery11.jpg"; +import img12 from "../../images/gallery/gallery12.jpg"; + + +const gallery = [ +{ + img: img1, + id: 1 +}, +{ + img: img2, + id: 2 +}, +{ + img: img3, + id: 3 +}, +{ + img: img4, + id: 4 +}, +{ + img: img5, + id: 5 +}, +{ + img: img6, + id: 6 +}, +{ + img: img7, + id: 7 +}, +{ + img: img8, + id: 8 +}, +{ + img: img9, + id: 9 +}, +{ + img: img10, + id: 10 +}, +{ + img: img11, + id: 11 +}, +{ + img: img12, + id: 12 +}]; + + +const Gallery = () => { + return ( + <> + + {gallery.map((c) => + + + + + + + + + + + + + + + + + )} + + ); + +}; + +export default Gallery; diff --git a/src/pages/gallery/package.json b/src/pages/gallery/package.json new file mode 100644 index 0000000..c25341d --- /dev/null +++ b/src/pages/gallery/package.json @@ -0,0 +1,6 @@ +{ + "name": "gallery", + "version": "1.0.0", + "main": "Gallery.js", + "license": "MIT" +} diff --git a/src/pages/grid/Grid.js b/src/pages/grid/Grid.js new file mode 100644 index 0000000..d536bb3 --- /dev/null +++ b/src/pages/grid/Grid.js @@ -0,0 +1,364 @@ +import useStyles from "./styles"; +import { + Table, + TableRow, + TableHead, + TableBody, + TableCell, + Box, + Grid } from +"@mui/material"; +import cn from "classnames"; + +// components +import Widget from "../../components/Widget"; +import Code from "../../components/Code"; +import { Typography, Paper } from "../../components/Wrappers"; + +export default function GridComp() { + const classes = useStyles(); + + return ( +
+ + + + + Material UI’s grid system uses a series of containers, rows, and + columns to layout and align content. It’s built with flexbox and + is fully responsive. Below is an example and an in-depth look at + how the grid comes together. + + + + + One of three + + + + + One of three + + + + + One of three + + + + {` + + One of three + One of three + One of three + + `} + + + + + + + + For example, here are two grid layouts that apply to every device + and viewport, from xs to xl. Add any number of unit-less classes + for each breakpoint you need and every column will be the same + width. + + + + + 1 of 2 + + + + + 2 of 2 + + + + + {` + + 1 of 2 + 2 of 2 + + `} + + + + + + + + + While Material UI grid uses ems or rems for defining most sizes, + pxs are used for grid breakpoints and container widths. This is + because the viewport width is in pixels and does not change with + the font size. See how aspects of the Material UI grid system work + across multiple devices with a handy table. + + + + + + + Extra small +
+ 0px +
+ + Small +
+ ≥600px +
+ + Medium +
+ ≥900px +
+ + Large +
+ ≥1200px +
+ + Extra large +
+ ≥1536px +
+
+
+ + + + Max container width + + auto + 600px + 900px + 1200px + 1536px + + + + Component property + + + {``} + + + {``} + + + {``} + + + {``} + + + {``} + + + + + # of columns + + 12 + + + + Spacing{" "} + + + {``} + + + + + + Nestable + + Yes + + + + Column ordering + + Yes + + +
+
+
+ + + + Use flexbox alignment utilities to vertically and horizontally + align columns. + + + + + + + + Start + + + + + + + + Center + + + + + + + + End + + + + + + {` + + + + One of three + + + One of three + + + One of three + + + + `} + + + + + + + + Use flexbox alignment utilities to vertically and horizontally + align columns. + + + + + + + + + 1 + + + + + + 2 + + + + + + + + + 1 + + + + + + 2 + + + + + + + + + 1 + + + + + + 2 + + + + + + 3 + + + + + + {` + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + 3 + + + `} + + + + +
+
); + +} diff --git a/src/pages/grid/package.json b/src/pages/grid/package.json new file mode 100644 index 0000000..e407d15 --- /dev/null +++ b/src/pages/grid/package.json @@ -0,0 +1,6 @@ +{ + "name": "Grid", + "version": "1.0.0", + "main": "Grid.js", + "license": "MIT" +} diff --git a/src/pages/grid/styles.js b/src/pages/grid/styles.js new file mode 100644 index 0000000..e6f94f7 --- /dev/null +++ b/src/pages/grid/styles.js @@ -0,0 +1,29 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + paperItem: { + textAlign: "center", + padding: theme.spacing(2), + color: "#f3f3f3" + }, + headBold: { + fontWeight: 700 + }, + wrapFix: { + whiteSpace: "pre" + }, + paperMargin: { + margin: 12 + }, + fullHeightBody: { + display: "flex", + flexGrow: 1, + flexDirection: "column", + justifyContent: "space-between" + }, + card: { + minHeight: "100%", + display: "flex", + flexDirection: "column" + } +})); diff --git a/src/pages/icons/Icons.js b/src/pages/icons/Icons.js new file mode 100644 index 0000000..4a8f7bb --- /dev/null +++ b/src/pages/icons/Icons.js @@ -0,0 +1,156 @@ +import { useState } from 'react'; +import { Typography, Grid, Tabs, Tab, Paper } from '@mui/material'; +import AccessAlarmIcon from '@mui/icons-material/AccessAlarm'; +import AccountCircleIcon from '@mui/icons-material/AccountCircle'; +import AddShoppingCartIcon from '@mui/icons-material/AddShoppingCart'; +import AnalyticsIcon from '@mui/icons-material/Analytics'; +import ArticleIcon from '@mui/icons-material/Article'; +import AttachMoneyIcon from '@mui/icons-material/AttachMoney'; +import AutoGraphIcon from '@mui/icons-material/AutoGraph'; +import CalendarMonthIcon from '@mui/icons-material/CalendarMonth'; +import ChatIcon from '@mui/icons-material/Chat'; +import CheckCircleIcon from '@mui/icons-material/CheckCircle'; +import CloudDoneIcon from '@mui/icons-material/CloudDone'; +import DashboardIcon from '@mui/icons-material/Dashboard'; +import DeleteIcon from '@mui/icons-material/Delete'; +import EditIcon from '@mui/icons-material/Edit'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import FilterListIcon from '@mui/icons-material/FilterList'; +import FolderOpenIcon from '@mui/icons-material/FolderOpen'; +import HomeIcon from '@mui/icons-material/Home'; +import InsightsIcon from '@mui/icons-material/Insights'; +import Inventory2Icon from '@mui/icons-material/Inventory2'; +import LightModeIcon from '@mui/icons-material/LightMode'; +import LockIcon from '@mui/icons-material/Lock'; +import MailIcon from '@mui/icons-material/Mail'; +import MapIcon from '@mui/icons-material/Map'; +import NotificationsIcon from '@mui/icons-material/Notifications'; +import PersonIcon from '@mui/icons-material/Person'; +import SettingsIcon from '@mui/icons-material/Settings'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import TimelineIcon from '@mui/icons-material/Timeline'; +import TrendingUpIcon from '@mui/icons-material/TrendingUp'; +import VisibilityIcon from '@mui/icons-material/Visibility'; +import WorkIcon from '@mui/icons-material/Work'; +import FacebookIcon from '@mui/icons-material/Facebook'; +import InstagramIcon from '@mui/icons-material/Instagram'; +import TwitterIcon from '@mui/icons-material/Twitter'; +import LinkedInIcon from '@mui/icons-material/LinkedIn'; +import GitHubIcon from '@mui/icons-material/GitHub'; +import YouTubeIcon from '@mui/icons-material/YouTube'; +import RedditIcon from '@mui/icons-material/Reddit'; +import TelegramIcon from '@mui/icons-material/Telegram'; +import WhatsAppIcon from '@mui/icons-material/WhatsApp'; +import AppleIcon from '@mui/icons-material/Apple'; +import AndroidIcon from '@mui/icons-material/Android'; +import PublicIcon from '@mui/icons-material/Public'; +import LanguageIcon from '@mui/icons-material/Language'; +import TravelExploreIcon from '@mui/icons-material/TravelExplore'; +import RocketLaunchIcon from '@mui/icons-material/RocketLaunch'; +import SupportAgentIcon from '@mui/icons-material/SupportAgent'; +import WorkspacePremiumIcon from '@mui/icons-material/WorkspacePremium'; +import StorefrontIcon from '@mui/icons-material/Storefront'; +import SecurityIcon from '@mui/icons-material/Security'; +import EmailIcon from '@mui/icons-material/Email'; +import Widget from '../../components/Widget'; +import useStyles from './styles'; + +const MATERIAL_ICONS = [ + { name: 'AccessAlarm', Component: AccessAlarmIcon }, + { name: 'AccountCircle', Component: AccountCircleIcon }, + { name: 'AddShoppingCart', Component: AddShoppingCartIcon }, + { name: 'Analytics', Component: AnalyticsIcon }, + { name: 'Article', Component: ArticleIcon }, + { name: 'AttachMoney', Component: AttachMoneyIcon }, + { name: 'AutoGraph', Component: AutoGraphIcon }, + { name: 'CalendarMonth', Component: CalendarMonthIcon }, + { name: 'Chat', Component: ChatIcon }, + { name: 'CheckCircle', Component: CheckCircleIcon }, + { name: 'CloudDone', Component: CloudDoneIcon }, + { name: 'Dashboard', Component: DashboardIcon }, + { name: 'Delete', Component: DeleteIcon }, + { name: 'Edit', Component: EditIcon }, + { name: 'Favorite', Component: FavoriteIcon }, + { name: 'FilterList', Component: FilterListIcon }, + { name: 'FolderOpen', Component: FolderOpenIcon }, + { name: 'Home', Component: HomeIcon }, + { name: 'Insights', Component: InsightsIcon }, + { name: 'Inventory2', Component: Inventory2Icon }, + { name: 'LightMode', Component: LightModeIcon }, + { name: 'Lock', Component: LockIcon }, + { name: 'Mail', Component: MailIcon }, + { name: 'Map', Component: MapIcon }, + { name: 'Notifications', Component: NotificationsIcon }, + { name: 'Person', Component: PersonIcon }, + { name: 'Settings', Component: SettingsIcon }, + { name: 'ShoppingCart', Component: ShoppingCartIcon }, + { name: 'Timeline', Component: TimelineIcon }, + { name: 'TrendingUp', Component: TrendingUpIcon }, + { name: 'Visibility', Component: VisibilityIcon }, + { name: 'Work', Component: WorkIcon }, +]; + +const BRAND_ICONS = [ + { name: 'Facebook', Component: FacebookIcon }, + { name: 'Instagram', Component: InstagramIcon }, + { name: 'Twitter', Component: TwitterIcon }, + { name: 'LinkedIn', Component: LinkedInIcon }, + { name: 'GitHub', Component: GitHubIcon }, + { name: 'YouTube', Component: YouTubeIcon }, + { name: 'Reddit', Component: RedditIcon }, + { name: 'Telegram', Component: TelegramIcon }, + { name: 'WhatsApp', Component: WhatsAppIcon }, + { name: 'Apple', Component: AppleIcon }, + { name: 'Android', Component: AndroidIcon }, + { name: 'Public', Component: PublicIcon }, + { name: 'Language', Component: LanguageIcon }, + { name: 'TravelExplore', Component: TravelExploreIcon }, + { name: 'RocketLaunch', Component: RocketLaunchIcon }, + { name: 'SupportAgent', Component: SupportAgentIcon }, + { name: 'WorkspacePremium', Component: WorkspacePremiumIcon }, + { name: 'Storefront', Component: StorefrontIcon }, + { name: 'Security', Component: SecurityIcon }, + { name: 'Email', Component: EmailIcon }, +]; + +function IconGrid({ classes, icons }) { + return ( + + + {icons.map(({ name, Component }) => ( + + + {name} + + ))} + + + ); +} + +export default function IconsPage() { + const classes = useStyles(); + const [activeTabId, setActiveTabId] = useState(0); + + return ( + + setActiveTabId(id)} + className={classes.iconsBar} + > + + + + + {activeTabId === 0 && } + {activeTabId === 1 && } + + ); +} diff --git a/src/pages/icons/package.json b/src/pages/icons/package.json new file mode 100644 index 0000000..0c7600f --- /dev/null +++ b/src/pages/icons/package.json @@ -0,0 +1,6 @@ +{ + "name": "Icons", + "version": "0.0.0", + "main": "Icons.js", + "private": true +} diff --git a/src/pages/icons/styles.js b/src/pages/icons/styles.js new file mode 100644 index 0000000..9e3829a --- /dev/null +++ b/src/pages/icons/styles.js @@ -0,0 +1,34 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + titleBold: { + fontWeight: 600 + }, + iconsBar: { + borderBottom: "1px solid", + borderBottomColor: theme.palette.text.hint + "80" + }, + iconList: { + paddingTop: theme.spacing(2), + }, + tab: { + color: theme.palette.primary.light + "CC" + }, + materailIcon: { + display: "flex", + paddingLeft: `${theme.spacing(4)}px !important`, + paddingRight: `${theme.spacing(4)}px !important`, + color: theme.palette.text.secondary, + fontSize: 24, + overflowX: "hidden" + }, + materialIconText: { + marginLeft: theme.spacing(2), + fontSize: 14 + }, + iconsContainer: { + boxShadow: theme.customShadows.widget, + overflow: "hidden", + paddingBottom: theme.spacing(2) + } +})); diff --git a/src/pages/invoice/Invoice.js b/src/pages/invoice/Invoice.js new file mode 100644 index 0000000..7952682 --- /dev/null +++ b/src/pages/invoice/Invoice.js @@ -0,0 +1,238 @@ +import { + Grid, + Box, + Table, + TableBody, + TableCell, + TableHead, + TableRow } from +"@mui/material"; +import { + Print as PrintIcon, + ArrowForward as RightArrowIcon } from +"@mui/icons-material"; +import useStyles from "./styles"; + +//images +import logo from "../../images/invoice/flatlogic.jpeg"; + +//components +import { Typography, Link, Button } from "../../components/Wrappers"; +import Widget from "../../components/Widget"; + +const rows = [ +{ + id: 1, + item: "Brand-new 27 monitor", + desc: "2,560x1,440-pixel (WQHD) resolution supported!", + quantity: 2, + price: 700, + total: 1400.0 +}, +{ + id: 2, + item: "Domain: okendoken.com", + desc: "6-month registration", + quantity: 1, + price: 10.99, + total: 21.88 +}, +{ + id: 3, + item: "Atlas Shrugged", + desc: "Novel by Ayn Rand, first published in 1957 in the United States", + quantity: 5, + price: 35, + total: 175.0 +}, +{ + id: 4, + item: "New Song by Dr. Pre", + desc: "Lyrics: praesent blandit augue non sapien ornare imperdiet", + quantity: 1, + price: 2, + total: 2.0 +}]; + + +const windowPrint = () => { + window.print(); +}; + +const Invoice = () => { + const classes = useStyles(); + return ( + <> + + + + + Flatlogic + + + + #9.45613 / + {" "} + 17 May 2014 + + Some Invoice number description or whatever + + + + + + + Company Information + + Flatlogic LLC + 2 Infinite Loop + Minsk, Belarus 220004 + 088.253.5345 + + e-mail: + email@example.com + + + phone: (012) 345-678-901 + + + fax: (012) 678-132-901 + + + + + + Client Information + + Veronica Niasvizhskaja + + Consultant + + {" "} + at Allspana + + + + e-mail:{" "} + maryna@allspana.by + + + phone: (012) 345-678-901 + + + fax: (012) 678-132-901 + + Note: + + Some nights I stay up cashing in my bad luck. Some nights I + call it a draw + + +
+ + + + # + ITEM + DESCRIPTION + QUANTITY + PRICE PER UNIT + TOTAL + + + + {rows.map((c) => + + {c.id} + {c.item} + {c.desc} + {c.quantity} + {c.price} + {c.total} + + )} + +
+
+ + + + + Note: + + Thank you for your business. Keep in mind, sometimes bad + things happen. But it's just sometimes. + + + + + Subtotal + + 1,598.88 + + + + Tax(10%) + + 159.89 + + + + + Total + + 1,758.77 + + + + +
+ + + + Marketing Consultant + Bob Smith{" "} + + + + + + +
+
+
+ ); + +}; + +export default Invoice; \ No newline at end of file diff --git a/src/pages/invoice/package.json b/src/pages/invoice/package.json new file mode 100644 index 0000000..4f179be --- /dev/null +++ b/src/pages/invoice/package.json @@ -0,0 +1,6 @@ +{ + "name": "Invoice", + "version": "1.0.0", + "main": "Invoice.js", + "license": "MIT" +} diff --git a/src/pages/invoice/styles.js b/src/pages/invoice/styles.js new file mode 100644 index 0000000..a613a59 --- /dev/null +++ b/src/pages/invoice/styles.js @@ -0,0 +1,20 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + table: { + "& .MuiTableRow-root:nth-child(odd)": { + backgroundColor: theme.palette.mode === "dark" ? "none" : "#f3f3f3" + } + }, + tableFooter: { + backgroundColor: theme.palette.mode === "dark" ? "none" : "#fff !important" + }, + tableWrapper: { + marginTop: theme.spacing(3), + overflowX: "auto", + width: "100%" + }, + iconButton: { + marginRight: theme.spacing(1) + } +})); diff --git a/src/pages/login/Login.js b/src/pages/login/Login.js new file mode 100644 index 0000000..a021141 --- /dev/null +++ b/src/pages/login/Login.js @@ -0,0 +1,433 @@ +import React, { useState, useEffect } from 'react'; +import { + Grid, + CircularProgress, + Tabs, + Tab, + Grow, + TextField as Input, + Typography, +} from '@mui/material'; +import classnames from 'classnames'; +import { useLocation, useNavigate } from 'react-router-dom'; + +// styles +import useStyles from './styles'; + +// logo +import logo from './logo.svg'; +import google from '../../images/google.svg'; + +// context +import { + useUserDispatch, + loginUser, + registerUser, + sendPasswordResetEmail, +} from '../../context/UserContext'; +import { receiveToken, doInit } from '../../context/UserContext'; + +//components +import { Button } from '../../components/Wrappers'; +import Widget from '../../components/Widget'; +import config from '../../config'; + +const getGreeting = () => { + const d = new Date(); + if (d.getHours() >= 4 && d.getHours() <= 12) { + return 'Good Morning'; + } else if (d.getHours() >= 13 && d.getHours() <= 16) { + return 'Good Day'; + } else if (d.getHours() >= 17 && d.getHours() <= 23) { + return 'Good Evening'; + } else { + return 'Good Night'; + } +}; + +function Login() { + let classes = useStyles(); + const location = useLocation(); + const navigate = useNavigate(); + const tab = new URLSearchParams(location.search).get('tab'); + + // global + let userDispatch = useUserDispatch(); + + useEffect(() => { + const params = new URLSearchParams(location.search); + const token = params.get('token'); + if (token) { + receiveToken(token, userDispatch); + doInit()(userDispatch); + } + }, []); + + // local + let [isLoading, setIsLoading] = useState(false); + let [error, setError] = useState(null); + const parsedTab = Number(tab); + let [activeTabId, setActiveTabId] = useState(Number.isFinite(parsedTab) ? parsedTab : 0); + let [nameValue, setNameValue] = useState(''); + let [loginValue, setLoginValue] = useState('admin@flatlogic.com'); + let [passwordValue, setPasswordValue] = useState('password'); + let [forgotEmail, setForgotEmail] = useState(''); + let [isForgot, setIsForgot] = useState(false); + + let isLoginFormValid = () => { + return loginValue.length !== 0 && passwordValue.length !== 0; + }; + + let loginOnEnterKey = (event) => { + if (event.key === 'Enter' && isLoginFormValid()) { + loginUser( + userDispatch, + loginValue, + passwordValue, + setIsLoading, + setError, + ); + } + }; + + return ( + +
+ logo + + React Material Admin Full + +
+
+
+ {isForgot ? ( +
+ setForgotEmail(e.target.value)} + margin='normal' + placeholder='Email' + type='Email' + fullWidth + /> +
+ {isLoading ? ( + + ) : ( + + )} + +
+
+ ) : ( + <> + setActiveTabId(id)} + indicatorColor='primary' + textColor='primary' + centered + > + + + + {activeTabId === 0 && ( + + {config.isBackend ? ( + + + This is a real app with Node.js backend - use + + "admin@flatlogic.com / password" + {' '} + to login! + + + ) : null} + + {getGreeting()}, User + + +
+
+ + or + +
+
+ + + Something is wrong with your login or password :( + + + setLoginValue(e.target.value)} + margin='normal' + placeholder='Email Adress' + type='email' + fullWidth + onKeyDown={(e) => loginOnEnterKey(e)} + /> + setPasswordValue(e.target.value)} + margin='normal' + placeholder='Password' + type='password' + fullWidth + onKeyDown={(e) => loginOnEnterKey(e)} + /> +
+ {isLoading ? ( + + ) : ( + + )} + +
+ + )} + {activeTabId === 1 && ( + + + Welcome! + + + Create your account + + + + Something is wrong with your login or password :( + + + setNameValue(e.target.value)} + margin='normal' + placeholder='Full Name' + type='email' + fullWidth + /> + setLoginValue(e.target.value)} + margin='normal' + placeholder='Email Adress' + type='email' + fullWidth + /> + setPasswordValue(e.target.value)} + margin='normal' + placeholder='Password' + type='password' + fullWidth + /> +
+ {isLoading ? ( + + ) : ( + + )} +
+
+
+ + or + +
+
+ + + )} + + )} +
+ + 2014-{new Date().getFullYear()}{' '} + + Flatlogic + + , LLC. All rights reserved. + +
+ + ); +} + +export default Login; diff --git a/src/pages/login/logo.svg b/src/pages/login/logo.svg new file mode 100644 index 0000000..60006a3 --- /dev/null +++ b/src/pages/login/logo.svg @@ -0,0 +1,13 @@ + + + + logo_white + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/pages/login/package.json b/src/pages/login/package.json new file mode 100644 index 0000000..2cfd7cc --- /dev/null +++ b/src/pages/login/package.json @@ -0,0 +1,6 @@ +{ + "name": "Login", + "version": "0.0.0", + "main": "Login.js", + "private": true +} diff --git a/src/pages/login/styles.js b/src/pages/login/styles.js new file mode 100644 index 0000000..f212864 --- /dev/null +++ b/src/pages/login/styles.js @@ -0,0 +1,164 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + container: { + height: '100vh', + width: '100%', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + position: 'absolute', + top: 0, + left: 0, + }, + logotypeContainer: { + backgroundColor: theme.palette.primary.main, + width: '60%', + height: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + padding: '1rem', + [theme.breakpoints.down('md')]: { + width: '50%', + }, + [theme.breakpoints.down('md')]: { + display: 'none', + }, + }, + logotypeImage: { + width: 165, + marginBottom: theme.spacing(4), + }, + logotypeText: { + color: 'white', + fontWeight: 500, + fontSize: 84, + textAlign: 'center', + [theme.breakpoints.down('md')]: { + fontSize: 48, + }, + }, + customFormContainer: { + width: '40%', + height: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + overflow: 'auto', + alignItems: 'center', + [theme.breakpoints.down('md')]: { + width: '50%', + overflow: 'visible', + }, + }, + formContainer: { + width: '40%', + height: '100%', + display: 'flex', + flexDirection: 'column', + overflow: 'auto', + alignItems: 'center', + [theme.breakpoints.down('md')]: { + width: '50%', + overflow: 'visible', + }, + }, + form: { + width: 320, + }, + tab: { + fontWeight: 400, + fontSize: 18, + }, + greeting: { + fontWeight: 500, + textAlign: 'center', + marginTop: theme.spacing(4), + }, + subGreeting: { + fontWeight: 500, + textAlign: 'center', + marginTop: theme.spacing(2), + }, + googleButton: { + marginTop: theme.spacing(6), + boxShadow: theme.customShadows.widget, + backgroundColor: 'white', + width: '100%', + textTransform: 'none', + }, + googleButtonCreating: { + marginTop: 0, + }, + googleIcon: { + width: 30, + marginRight: theme.spacing(2), + }, + creatingButtonContainer: { + marginTop: theme.spacing(2.5), + height: 46, + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }, + createAccountButton: { + height: 46, + textTransform: 'none', + }, + formDividerContainer: { + marginTop: theme.spacing(4), + marginBottom: theme.spacing(4), + display: 'flex', + alignItems: 'center', + }, + formDividerWord: { + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(2), + }, + formDivider: { + flexGrow: 1, + height: 1, + backgroundColor: theme.palette.text.hint + '40', + }, + errorMessage: { + textAlign: 'center', + color: '#ff0000ba', + }, + textFieldUnderline: { + '&:before': { + borderBottomColor: theme.palette.primary.light, + }, + '&:after': { + borderBottomColor: theme.palette.primary.main, + }, + '&:hover:before': { + borderBottomColor: `${theme.palette.primary.light} !important`, + }, + }, + textField: { + borderBottomColor: theme.palette.background.light, + }, + formButtons: { + width: '100%', + marginTop: theme.spacing(4), + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + forgetButton: { + textTransform: 'none', + fontWeight: 400, + }, + loginLoader: { + marginLeft: theme.spacing(4), + }, + copyright: { + marginTop: theme.spacing(4), + whiteSpace: 'nowrap', + [theme.breakpoints.up('md')]: { + bottom: theme.spacing(2), + }, + }, +})); diff --git a/src/pages/maps/Maps.js b/src/pages/maps/Maps.js new file mode 100644 index 0000000..90a4627 --- /dev/null +++ b/src/pages/maps/Maps.js @@ -0,0 +1,33 @@ +import { MapContainer, TileLayer, CircleMarker, Popup } from "react-leaflet"; + +// styles +import useStyles from "./styles"; + +export default function Maps() { + const classes = useStyles(); + + return ( +
+ + + + New York + + + Los Angeles + + + Chicago + + +
+ ); +} diff --git a/src/pages/maps/VectorMap.js b/src/pages/maps/VectorMap.js new file mode 100644 index 0000000..0845d7e --- /dev/null +++ b/src/pages/maps/VectorMap.js @@ -0,0 +1,58 @@ +import React from "react"; +import { MapContainer, TileLayer, GeoJSON } from "react-leaflet"; +import { useTheme } from "@mui/material/styles"; +import { feature } from "topojson-client"; +import useStyles from "./styles"; +import worldMap from "./map.json"; + +function VectorMap() { + const theme = useTheme(); + const classes = useStyles(); + const worldGeoJson = React.useMemo(() => { + if (!worldMap?.objects?.world) { + return null; + } + + return feature(worldMap, worldMap.objects.world); + }, []); + + const countryStyle = React.useCallback( + () => ({ + fillColor: theme.palette.mode === "dark" ? "#2D3B58" : "#C5D3F6", + weight: 1, + opacity: 1, + color: theme.palette.mode === "dark" ? "#4C5D82" : "#8EA4D2", + fillOpacity: 0.75, + }), + [theme.palette.mode], + ); + + const onEachCountry = React.useCallback((countryFeature, layer) => { + const countryName = countryFeature?.properties?.name; + if (countryName) { + layer.bindTooltip(countryName, { sticky: true }); + } + }, []); + + return ( +
+ + + {worldGeoJson && ( + + )} + +
+ ); +} + +export default VectorMap; diff --git a/src/pages/maps/map.json b/src/pages/maps/map.json new file mode 100644 index 0000000..ca92d9d --- /dev/null +++ b/src/pages/maps/map.json @@ -0,0 +1 @@ +{"arcs":[[[7080,7327],[-5,4],[-10,-10],[5,-6]],[[7070,7315],[-16,-12],[-9,5],[-28,-4],[-12,-6],[-1,-5],[-17,-18],[-11,-16],[6,-10],[6,-18],[-2,-15],[3,-8],[-18,-35],[4,-12],[-2,-18],[-7,-5],[-13,0],[-13,4],[3,-16],[6,-6],[-1,-9],[4,-9],[-12,-14],[-8,0],[-6,-18],[2,-7],[-6,-11],[2,-30],[-8,-17],[-6,-1],[-2,8],[-15,4],[-3,-8],[-14,-12],[6,-9],[-11,-7],[-13,6],[-7,-15],[-8,-7],[-3,-19],[2,-9],[-4,-35],[-32,-17],[-16,2],[-11,-11],[-14,6],[-30,-5],[-46,26]],[[6689,6902],[27,56],[1,10],[-4,21],[-24,7],[-1,9],[1,35],[-7,43],[0,9],[7,14],[1,9],[-10,5],[0,31],[11,8],[-5,13],[7,6],[5,26],[-1,11],[4,19]],[[6701,7234],[8,-10],[13,-1],[6,-7],[1,-9],[5,8],[5,-4],[13,13],[0,24],[9,0],[4,6],[20,11],[9,15],[0,16],[5,14],[-1,9],[9,8],[12,0],[4,16],[4,3],[15,-14],[5,2]],[[6847,7334],[14,2],[7,-12],[6,6],[8,-6]],[[6882,7324],[7,-15],[7,10],[15,9],[2,5],[10,-14],[5,7],[-2,13],[4,8],[21,2],[-3,18],[5,4],[12,26],[9,-2],[7,-9],[-1,-21],[6,3],[2,-8],[-3,-14],[-1,-35],[3,-12],[7,-4],[15,19],[9,1],[3,11],[14,14],[13,-2],[-1,-12],[14,8],[12,2],[7,-9]],[[5665,4557],[3,-32],[-3,-9],[0,-36],[2,-12],[-5,-22],[4,-12],[-56,0],[0,-182],[3,-21],[6,-7],[15,-33],[6,-7],[3,-10],[6,-7]],[[5649,4167],[-53,-21],[-11,4],[-8,-4],[-13,9],[-8,-3],[-17,2],[-5,4],[-10,0],[-7,9],[-5,14],[-52,0],[-66,0],[-7,-1],[-12,17],[-4,9],[-6,1],[-18,-16],[-15,4],[-6,-6]],[[5326,4189],[0,28],[2,-1],[-2,58],[7,9],[1,23],[6,24],[2,20],[0,23],[5,12],[0,26],[4,4],[8,20],[0,10],[6,12],[5,0],[8,20],[5,28],[-1,20],[2,29],[-2,15],[-7,15],[-8,46],[-7,29],[6,16],[6,7],[-1,21],[-3,9],[-10,48],[-2,4],[0,21],[-8,16],[-8,30],[16,4],[10,11]],[[5366,4846],[4,-2],[18,2],[12,-3],[21,2],[32,1],[7,-4],[4,-15],[0,-22],[3,-16],[3,-3],[0,-19],[10,-23],[0,-8],[9,-20],[7,4],[6,-4],[2,6],[33,0],[1,20],[4,12],[-2,8],[2,18],[21,0],[9,5],[-3,-22],[36,0],[1,-22],[-2,-20],[5,-23],[-4,-53],[1,-14],[6,-17],[3,-2],[4,-23],[0,-22],[-4,-9],[3,-18],[6,7],[13,-4],[14,9],[12,-3],[2,8]],[[5363,4916],[-7,-5],[-8,-18],[-1,-40],[-8,-2]],[[5339,4851],[-2,5],[2,14],[-6,24]],[[5333,4894],[10,23],[7,3],[4,10],[9,-14]],[[5582,7537],[-1,0]],[[5581,7537],[1,0]],[[5537,7617],[1,0]],[[5538,7617],[-1,0]],[[5557,7633],[4,-13],[7,-4],[3,-22]],[[5571,7594],[-4,-21],[6,-24]],[[5573,7549],[2,-10]],[[5575,7539],[6,-2]],[[5581,7537],[1,-1]],[[5582,7536],[0,0]],[[5582,7536],[0,-5]],[[5582,7531],[1,-5]],[[5583,7526],[0,0]],[[5583,7526],[-2,-13],[-5,-2],[-2,-17],[-11,-8],[3,-12],[-6,-8],[-5,3]],[[5555,7469],[-3,19],[-11,9],[-1,22],[-4,4],[4,16],[-1,29],[5,23],[-7,2]],[[5537,7593],[1,14]],[[5538,7607],[0,13]],[[5538,7620],[9,19],[3,-11],[7,5]],[[5553,8659],[10,-5],[-7,-11],[-10,6],[7,10]],[[5047,7630],[-7,-5],[-1,11]],[[5039,7636],[8,1],[0,-7]],[[6563,6637],[0,0]],[[6563,6659],[2,-2],[1,-36]],[[6566,6621],[-8,-14],[-3,13],[-6,-4],[-1,-38],[7,-9],[-11,-3],[-4,-6],[2,-9],[-10,-44],[0,-17]],[[6532,6490],[-2,-5],[-70,18],[-3,5],[-25,63],[0,9]],[[6432,6580],[6,-1],[0,-13],[12,-3],[10,11],[24,-2],[11,-4],[15,12],[6,14],[1,15],[11,12],[13,31],[11,13],[5,19]],[[6557,6684],[3,-2],[-1,-22],[4,-1]],[[6562,6642],[0,0]],[[3093,2021],[0,6]],[[3093,2027],[0,-6]],[[3093,2028],[0,123]],[[3093,2151],[10,-17],[-8,-15],[11,-6],[5,-17],[12,-13],[7,-13],[17,-13],[11,-14],[12,-7],[20,0],[-5,-16],[-18,1],[-11,-8],[-12,6],[-51,9]],[[3259,3902],[11,-14],[7,-29],[9,-17],[15,-17],[3,-11],[17,-13],[11,-1],[15,-18],[4,-9],[15,-17],[9,-5],[5,-8],[13,-5],[8,-20],[-6,-14],[-3,-19],[-8,-10],[-1,-25],[-3,-14],[-5,-4],[-5,-15],[4,-5],[13,1],[19,-8],[5,-5],[7,4],[5,-5],[6,3],[4,-8],[3,12],[5,5],[10,-9],[5,8],[-1,8],[6,12],[6,0],[11,18],[5,40],[0,22]],[[3483,3710],[5,-4],[6,7],[9,-9],[1,-17],[5,-14],[-2,-9],[0,-25],[-2,-17],[-13,-19],[-15,-5],[-6,-19],[-8,-4],[-6,-13],[-7,-5],[3,-10],[-6,-4],[-20,-39],[-2,-11],[-12,-25],[-5,-2],[-1,-10],[-8,-11]],[[3399,3445],[0,-7],[-7,-12],[2,-23],[-3,-20],[-5,-13],[3,-4],[-2,-14],[-4,-5],[3,-25],[-3,-8]],[[3383,3314],[2,-25],[-2,-12],[-6,0],[-4,-34],[5,-29],[-4,-14],[5,-12],[23,-21],[11,-25],[-7,-19],[0,-13],[7,-17],[12,-6],[1,-29],[-11,-30],[-13,-26],[-2,-16],[-27,-24],[-37,-16],[-27,-8],[-27,0],[-15,11],[3,-32],[5,-9],[-2,-21],[-4,3],[-1,-21],[-4,-5],[6,-17],[-2,-18],[-20,-16],[-21,0],[-26,20],[-8,2],[-4,-10],[5,-32],[-2,-24],[6,-16],[11,-4],[-4,-10],[13,0],[2,10],[-6,0],[14,11],[5,-13],[1,-17],[-3,-12],[-12,-5],[-3,16],[-13,5],[-9,-15],[19,-13],[-20,-17],[-8,-19],[3,-43],[-4,-11],[-9,-7],[0,-20],[-14,3],[-8,-5],[-1,-8],[-14,-5],[-9,-18],[0,-9],[-6,-9],[-2,-14],[7,-25],[7,-6],[8,-16],[6,-4],[17,0],[6,-6],[2,-20],[-5,-33],[-6,-2],[-12,-18],[-16,-14],[-3,-10],[-9,-10],[-6,-22],[2,-16],[-5,-18],[-5,-6],[-23,-14],[-5,-12],[-2,-21],[2,-24],[9,-34],[11,-24],[-3,-1]],[[3098,2168],[-15,10],[-26,10],[-55,1],[-4,12],[-11,13],[6,19],[-5,7],[5,13],[-2,14],[-13,1],[-11,-8],[-3,26],[-7,9],[2,22],[-3,11],[3,15],[9,1],[3,17],[12,10],[1,22],[7,7],[-1,15],[-5,7],[6,30],[8,13],[2,22],[8,9],[-3,32],[4,11],[-4,4],[0,15],[8,5],[5,13],[-8,17],[-14,5],[7,5],[17,3],[2,17],[-18,3],[-1,18],[5,7],[-4,14],[3,7],[-6,16],[5,9],[-11,7],[0,45],[3,8],[8,1],[-5,26],[2,43],[-3,11],[4,27],[5,21],[-2,18],[8,13],[0,25],[15,13],[-3,15],[-1,21],[-5,20],[3,35],[-2,24],[3,12],[10,4],[-1,8],[10,14],[-2,40],[-4,4],[6,6],[0,12],[9,39],[6,2],[-2,34],[3,18],[-9,9],[3,18],[-4,6],[0,16],[-5,12],[-2,14],[3,9],[-5,2],[-3,15],[1,24],[6,8],[0,13],[5,19],[7,8],[2,10],[-4,4],[2,16],[-4,31],[7,10],[1,26],[4,17],[13,33],[9,38],[6,-3],[8,7],[0,10],[-8,21],[0,10],[5,9],[-2,26],[-3,17],[2,15],[5,4],[-6,14],[2,14],[7,13],[25,20],[9,54],[-5,17]],[[3133,3869],[5,9],[0,8],[7,6],[2,12],[9,5],[4,19],[3,-2],[10,-17],[21,0],[12,-5],[6,-38],[3,20],[8,29],[32,1],[4,-14]],[[6265,7522],[0,0]],[[6249,7560],[2,-10],[15,-14],[-6,-16],[6,-11],[11,-10],[-3,-13],[-7,2],[15,-25],[9,-1],[-3,-13],[5,-7],[-5,-5],[3,-15]],[[6291,7422],[-10,-2]],[[6281,7420],[-4,23],[-7,7],[1,10],[-13,-1],[-8,14],[-7,-4]],[[6243,7469],[-8,16],[-12,1],[-11,7],[-3,20],[5,12],[-3,17],[-5,8]],[[6206,7550],[9,0],[11,7],[10,-3],[13,6]],[[6249,7546],[0,0]],[[6255,7542],[0,0]],[[488,408],[24,-7],[-48,-4],[-13,16],[37,-5]],[[542,484],[-90,7],[20,11],[65,-10],[5,-8]],[[3331,592],[8,-3],[-1,-57],[-23,-11],[-52,4],[-17,17],[-32,-10],[-67,20],[3,10],[19,-10],[115,3],[8,27],[39,10]],[[4135,588],[34,-2],[-10,-10],[-44,8],[-5,11],[25,-7]],[[3120,602],[25,-4],[35,-20],[-20,-7],[-40,31]],[[3137,618],[-11,-15],[-30,6],[41,9]],[[4054,618],[1,-6],[-76,3],[30,13],[45,-10]],[[547,618],[21,-9],[14,-23],[-47,-2],[-90,25],[-10,7],[5,17],[24,15],[25,0],[58,-30]],[[3143,666],[-58,-38],[-39,-36],[-31,3],[-10,10],[11,23],[23,11],[92,33],[12,-6]],[[9654,680],[-35,-8],[-8,14],[21,-7],[22,11],[0,-10]],[[3740,650],[1,-7],[44,2],[21,-39],[-7,-30],[-18,-1],[9,-11],[-158,-26],[-16,-9],[-121,-4],[1,17],[22,27],[26,-4],[60,37],[-13,14],[14,40],[31,33],[52,14],[37,-3],[38,-11],[19,-13],[-4,-20],[-38,-6]],[[9641,732],[63,-13],[-27,-10],[-42,-2],[-19,12],[25,13]],[[839,754],[14,-14],[-32,3],[-11,7],[29,4]],[[938,754],[-21,-7],[-2,12],[23,-5]],[[951,834],[16,-10],[-24,3],[8,7]],[[9561,885],[-8,-14],[-7,9],[15,5]],[[1342,903],[19,-12],[-6,-6],[-27,12],[14,6]],[[1458,897],[-1,-13],[-17,20],[18,-7]],[[1760,918],[-17,-8],[-3,7],[26,11],[-6,-10]],[[1680,914],[-12,3],[10,17],[17,-2],[-1,-10],[-14,-8]],[[1635,935],[17,0],[7,-14],[-23,-10],[0,-10],[-32,-4],[-22,7],[3,11],[15,12],[-27,3],[7,10],[55,-5]],[[4425,917],[9,-22],[-14,0],[-4,16],[-29,3],[20,7],[12,19],[11,1],[-5,-24]],[[9717,944],[-11,3],[8,14],[3,-17]],[[1498,961],[13,-7],[9,-16],[-11,-7],[29,6],[17,-9],[7,-11],[-6,-12],[-22,3],[-48,22],[0,8],[-19,7],[-3,16],[34,0]],[[2955,972],[-2,-10],[-13,0],[15,10]],[[2514,979],[-20,-5],[-4,5],[22,8],[2,-8]],[[2918,987],[18,-3],[-8,-40],[-36,14],[-7,10],[11,7],[18,0],[-19,10],[23,2]],[[2474,988],[-3,-19],[-14,-1],[6,17],[-10,16],[23,1],[-2,-14]],[[2365,999],[-10,3],[18,7],[-8,-10]],[[2270,1031],[14,-3],[-2,14],[10,0],[2,-17],[10,19],[19,1],[5,-10],[-23,-11],[8,-3],[27,11],[-6,-10],[13,-10],[-15,-1],[1,-9],[-72,2],[2,5],[-24,-1],[6,7],[-29,6],[-58,7],[6,10],[57,7],[8,-11],[7,7],[23,-12],[-13,13],[17,9],[15,-6],[-8,-14]],[[4919,1112],[8,-10],[14,1],[-17,-19],[-8,18],[-16,10],[19,0]],[[2947,1119],[8,-13],[-22,-10],[-48,-11],[-9,4],[2,12],[33,5],[9,12],[8,-13],[3,14],[16,0]],[[3313,1111],[-7,10],[11,1],[-4,-11]],[[4835,1126],[-5,-10],[-10,9],[15,1]],[[5082,1116],[-11,6],[19,4],[-8,-10]],[[4913,1121],[-10,0],[6,12],[12,3],[2,-14],[-10,-1]],[[7004,1113],[-10,3],[-5,16],[16,-11],[-1,-8]],[[5124,1122],[-12,11],[12,5],[0,-16]],[[5745,1129],[-22,0],[-2,11],[19,6],[5,-17]],[[5040,1146],[-7,-18],[-5,21],[12,-3]],[[2924,1165],[8,-12],[-12,-13],[-23,5],[-1,13],[8,7],[20,0]],[[5449,1148],[-17,8],[11,12],[19,-1],[-11,-8],[-2,-11]],[[3001,1170],[-23,2],[-6,7],[17,4],[12,-13]],[[3283,1179],[-6,-12],[-16,30],[11,2],[11,-20]],[[3055,1197],[19,-24],[1,-17],[16,-26],[11,-25],[3,-60],[-6,-23],[-20,-7],[-2,-10],[-40,-7],[-49,0],[-21,13],[10,8],[16,-3],[45,-2],[14,8],[-7,6],[-28,-9],[-18,10],[35,8],[1,5],[-31,0],[-14,17],[-11,-17],[-31,2],[10,-8],[-14,-9],[-38,14],[-1,15],[15,8],[16,-8],[-4,12],[9,4],[16,-13],[-4,14],[29,-2],[9,7],[-23,7],[10,6],[30,-6],[19,11],[20,0],[13,-11],[-2,16],[-35,7],[5,17],[24,8],[15,-4],[-18,14],[-20,-4],[-27,14],[7,34],[-10,5],[0,20],[45,10],[9,-7],[2,-18]],[[7385,1327],[-15,4],[8,9],[7,-13]],[[3111,1321],[9,-5],[-16,-13],[-8,-22],[-11,0],[-7,9],[22,44],[15,12],[5,-5],[-10,-11],[1,-9]],[[7686,1378],[4,-8],[-14,-2],[10,10]],[[3174,1408],[-3,-16],[-10,-2],[6,17],[7,1]],[[7805,1401],[-19,0],[-1,7],[12,10],[15,-7],[-7,-10]],[[7870,1413],[-16,19],[9,-2],[7,-17]],[[3410,1465],[-6,6],[14,7],[-8,-13]],[[3242,1481],[-2,-9],[14,-8],[-14,-12],[-26,3],[20,26],[8,0]],[[3270,1492],[2,-17],[-12,-8],[10,25]],[[3394,1508],[-2,-9],[20,-7],[-8,-17],[-7,6],[-7,-7],[-14,20],[5,8],[13,6]],[[3446,1521],[-9,7],[15,-2],[-6,-5]],[[0,324],[46,3],[68,-14],[19,8],[194,-14],[21,-11],[128,-2],[122,-11],[81,-3],[-58,13],[54,1],[-124,12],[-104,7],[24,11],[-55,17],[37,2],[-52,17],[-71,-3],[-37,23],[-127,27],[73,-2],[18,-14],[73,-4],[20,4],[70,-3],[6,-14],[50,10],[19,-11],[127,8],[18,9],[-44,5],[81,5],[16,14],[70,14],[-10,10],[-54,26],[31,11],[-19,10],[-74,13],[17,11],[109,6],[135,7],[0,5],[-77,24],[-11,11],[13,10],[43,-4],[46,10],[-17,11],[-75,12],[-55,17],[-3,5],[-68,8],[-43,21],[14,11],[48,6],[-2,14],[-71,-7],[-47,23],[14,18],[-3,26],[9,1],[24,-17],[21,17],[21,-5],[18,4],[38,-10],[-9,-10],[36,-3],[2,10],[72,-30],[30,16],[30,6],[-36,7],[7,14],[32,-17],[21,7],[13,-13],[27,0],[-16,13],[21,1],[-31,15],[29,-5],[-22,20],[-27,16],[-38,-3],[-33,3],[2,9],[28,4],[9,7],[69,-21],[6,8],[-27,13],[9,11],[56,6],[1,10],[41,4],[2,6],[19,-3],[9,-14],[18,0],[-10,14],[29,6],[16,14],[61,4],[30,-4],[-16,9],[4,14],[30,0],[11,11],[22,-4],[18,-16],[30,9],[58,-4],[20,-5],[64,13],[93,0],[8,-7],[45,3],[41,0],[59,10],[-3,10],[24,6],[6,-12],[33,-3],[51,6],[-7,21],[11,10],[21,0],[-9,-7],[19,2],[-8,-12],[4,-14],[15,3],[-18,-16],[-6,-21],[9,6],[46,8],[15,0],[-10,11],[0,20],[15,6],[35,-17],[-5,-19],[-34,-18],[4,-7],[45,4],[84,-10],[53,13],[28,-3],[14,4],[49,-4],[-3,-8],[20,-8],[70,13],[-27,6],[2,10],[-34,3],[17,7],[3,14],[-46,3],[5,11],[-7,15],[-33,5],[-4,20],[42,-4],[3,-6],[47,2],[-5,21],[-41,3],[-46,0],[-11,7],[-4,20],[11,7],[26,-4],[-17,-12],[21,-4],[33,4],[84,-1],[9,-7],[44,-11],[17,7],[24,-7],[21,8],[46,0],[33,-7],[16,10],[25,1],[6,10],[-10,17],[33,-4],[1,-10],[-15,-14],[9,-9],[30,6],[8,-11],[38,11],[5,-13],[28,-10],[20,2],[43,-19],[29,9],[-2,28],[24,-11],[-8,25],[28,-2],[24,-17],[-2,-16],[55,8],[5,-7],[-15,-14],[48,6],[7,5],[34,-5],[26,15],[57,12],[21,-2],[42,10],[35,16],[22,43],[-1,7],[-20,21],[-4,13],[6,23],[-15,38],[-15,16],[4,21],[-13,16],[15,0],[-1,7],[25,-14],[5,14],[11,6],[0,11],[-18,7],[14,5],[-5,17],[6,14],[-9,16],[12,3],[6,21],[-10,5],[-19,-1],[15,30],[6,0],[-2,-17],[15,-6],[1,26],[-4,14],[8,4],[14,-7],[5,34],[14,-2],[-5,11],[19,-4],[3,23],[16,1],[-5,27],[11,6],[16,-7],[-4,11],[20,14],[11,-3],[9,12],[10,1],[-1,10],[14,4],[-1,13],[30,14],[13,-2],[3,10],[12,2],[1,8],[21,4],[7,8],[13,6],[11,-3],[7,-20],[-10,-3],[-2,12],[-15,-12],[-10,0],[-15,-17],[-9,-22],[-9,-6],[-7,7],[-6,-6],[-19,-5],[-17,-29],[-20,3],[6,-10],[-18,-10],[9,-14],[-14,-14],[13,-19],[16,3],[0,10],[21,-2],[-16,-14],[-16,0],[-2,-16],[-5,16],[-19,-3],[1,-28],[-16,27],[-15,3],[-10,-29],[11,-10],[-9,-4],[-14,11],[-12,-15],[6,-16],[-15,-6],[-8,5],[-3,-33],[10,-6],[-12,-11],[21,6],[6,-6],[-20,-7],[14,-6],[-10,-7],[36,-17],[-2,17],[23,7],[-14,-17],[15,-6],[-5,-8],[14,-25],[14,-7],[-2,-21],[15,-13],[-1,-11],[-10,4],[5,-18],[22,1],[-16,-24],[20,4],[9,-21],[-5,-12],[-12,-1],[-14,-13],[14,-1],[11,10],[9,-8],[-7,-12],[-38,-3],[36,-14],[13,10],[0,-26],[-19,-2],[6,-18],[17,8],[-7,-24],[25,4],[-11,-19],[-9,8],[-3,-13],[-15,12],[-21,5],[13,-17],[21,-10],[-7,-23],[-21,5],[21,-13],[-23,-13],[31,7],[-9,-17],[-36,6],[17,-17],[-10,-13],[-13,-3],[-2,17],[-17,2],[6,-15],[-14,3],[-10,-10],[18,2],[7,-9],[-35,-4],[-2,-7],[33,-3],[-85,-34],[-52,-9],[4,-3],[-60,-13],[4,-11],[-17,-7],[-31,-1],[-20,4],[-46,0],[-31,8],[-64,0],[34,-42],[23,-15],[10,6],[66,-8],[-25,-26],[-38,-9],[-61,13],[-95,13],[-30,-6],[118,-34],[-9,-17],[-71,-7],[-61,21],[-37,30],[12,-23],[-13,-4],[17,-20],[42,-17],[17,-23],[18,-7],[2,20],[108,-4],[17,-13],[-20,-24],[-22,-3],[-62,0],[55,-10],[39,6],[24,-26],[-8,-7],[24,-16],[19,7],[38,-10],[7,13],[39,9],[21,-6],[9,-14],[46,-9],[89,-24],[77,-3],[-92,-8],[62,-5],[-2,-4],[-62,-1],[-6,-25],[26,-5],[52,8],[75,3],[-64,-17],[33,-33],[-6,-17],[66,-4],[49,30],[72,31],[52,14],[16,-1],[53,11],[65,5],[59,-2],[6,-17],[-17,-11],[31,-7],[67,24],[-2,10],[36,18],[9,16],[79,27],[42,-13],[34,10],[18,17],[53,0],[40,12],[42,-3],[-21,10],[37,0],[5,7],[153,6],[48,10],[-61,7],[-165,11],[31,17],[-27,0],[9,15],[-73,-12],[-96,23],[-5,14],[12,23],[11,3],[8,18],[24,0],[-7,12],[28,18],[34,10],[17,0],[5,10],[28,7],[15,13],[36,16],[52,10],[29,14],[48,10],[53,7],[31,-4],[22,14],[17,-6],[43,6],[-18,11],[29,26],[-3,10],[14,17],[24,3],[23,-7],[39,33],[-10,4],[-27,-10],[-22,3],[17,4],[-20,7],[1,13],[28,23],[18,3],[12,-9],[16,11],[-15,16],[29,-7],[14,11],[42,13],[3,19],[10,20],[-18,0],[-18,7],[-1,18],[16,2],[1,-9],[21,-10],[7,17],[16,9],[-12,10],[13,4],[3,-10],[22,-7],[10,-28],[15,7],[15,-5],[-4,9],[6,23],[-11,13],[13,5],[25,-7],[16,14],[13,-8],[-20,-29],[71,-3],[7,-9],[4,12],[18,3],[5,-6],[28,-5],[7,11],[12,-7],[-4,-14],[12,-9],[21,25],[13,8],[41,14],[105,20],[19,0],[28,7],[-5,17],[12,2],[-1,-17],[11,-3],[25,9],[-8,8],[9,9],[22,-23],[31,-14],[21,-5],[14,25],[18,7],[-16,10],[16,1],[8,-13],[22,-4],[22,3],[27,-4],[3,9],[17,3],[-3,-18],[45,-4],[11,1],[-6,11],[17,9],[11,-10],[-10,-23],[10,-10],[23,-1],[26,4],[3,13],[16,24],[24,-18],[-21,-6],[14,-7],[26,-5],[13,26],[15,-4],[0,-15],[27,-15],[31,-3],[35,17],[23,3],[38,21],[40,5],[38,11],[7,7],[2,33],[-12,13],[-1,13],[20,12],[28,0],[4,-8],[-21,-13],[24,-1],[20,-13],[-2,-23],[45,4],[8,-15],[7,9],[26,-1],[-5,-7],[19,-19],[2,12],[13,7],[-1,10],[15,4],[-2,32],[4,14],[26,6],[21,15],[28,4],[8,17],[32,8],[24,0],[-6,5],[34,13],[14,-6],[-2,23],[18,5],[14,-8],[-13,-7],[10,-3],[6,-12],[9,8],[16,-6],[-5,-17],[13,20],[-3,14],[16,5],[2,11],[-19,-3],[-6,13],[27,6],[-2,-9],[15,2],[0,-13],[11,8],[11,-7],[10,7],[-14,3],[10,16],[-16,1],[-1,12],[9,14],[23,4],[11,12],[30,4],[25,7],[40,-6],[19,-10],[15,-20],[11,3],[13,-8],[1,-9],[-36,3],[15,-8],[-11,-23],[1,-12],[7,13],[33,10],[23,-11],[12,1],[5,-20],[12,-4],[4,11],[24,0],[18,-7],[45,-7],[24,9],[30,-9],[45,-7],[48,-4],[9,-3],[35,8],[-1,-15],[14,-30],[-13,-3],[-7,-17],[13,0],[-16,-9],[12,-8],[0,-9],[-27,-3],[17,-14],[-13,-6],[9,-5],[-17,-12],[-13,18],[-18,-29],[13,-14],[34,8],[1,-21],[-15,-30],[-17,-8],[-5,-19],[-10,-7],[-6,-33],[-12,-36],[-15,-8],[25,-10],[22,10],[-3,26],[14,11],[34,3],[8,20],[20,6],[-6,7],[17,12],[14,3],[-11,7],[16,40],[17,7],[14,12],[-6,15],[22,23],[15,5],[8,-12],[28,6],[5,-7],[13,8],[-3,16],[35,18],[22,5],[7,21],[16,4],[-7,13],[9,12],[19,10],[73,24],[30,4],[13,-3],[-6,13],[29,18],[36,-4],[9,7],[18,0],[34,17],[8,-5],[14,4],[23,-4],[23,1],[19,14],[25,5],[12,-6],[34,1],[4,-10],[31,17],[11,-4],[8,-10],[13,6],[16,0],[16,6],[13,-10],[14,13],[9,0],[8,-26],[8,11],[13,3],[9,9],[27,7],[14,17],[0,7],[27,0],[8,6],[27,-9],[24,-3],[65,-22],[29,-6],[-3,-17],[12,13],[16,-19],[18,0],[29,17],[7,0],[-5,20],[13,14],[62,17],[35,-27],[-3,-15],[21,2],[16,-8],[3,-10],[-17,-16],[-31,-8],[-11,-15],[25,3],[22,10],[32,6],[13,10],[-3,-10],[19,3],[5,-6],[32,-1],[41,14],[0,-3],[-45,-17],[5,-7],[73,19],[18,14],[58,14],[13,-9],[11,6],[8,14],[14,6],[12,-14],[14,6],[-8,-12],[3,-11],[11,0],[0,-16],[28,6],[11,-7],[10,7],[6,-10],[11,13],[2,21],[16,19],[18,8],[28,-7],[30,4],[8,6],[19,-2],[13,-11],[-5,-11],[19,10],[11,0],[9,12],[4,-14],[13,7],[8,-8],[30,1],[20,-11],[35,-3],[12,-6],[28,-3],[10,-5],[20,3],[14,-13],[27,10],[12,-6],[-4,-11],[21,8],[5,-6],[-22,-38],[0,-10],[11,0],[26,23],[9,-10],[14,7],[14,-31],[13,5],[-8,-14],[8,-7],[23,3],[4,-6],[39,4],[35,-1],[10,4],[-1,-21],[16,-13],[0,14],[24,0],[17,-11],[23,7],[-5,24],[5,3],[24,-14],[2,-10],[16,-13],[14,-3],[17,-14],[19,3],[6,-10],[6,8],[17,-1],[45,-17],[14,-20],[-16,0],[28,-13],[19,-34],[-3,-13],[18,0],[2,34],[16,3],[22,-23],[21,2],[-3,7],[38,-3],[13,-6],[12,5],[13,-6],[-9,-6],[27,2],[18,-20],[10,-3],[48,-30],[2,21],[19,-31],[-5,-6],[-13,7],[-13,-34],[12,6],[-5,-17],[-39,15],[-11,-1],[16,-13],[29,-8],[-8,-19],[-20,-10],[-14,16],[-2,-13],[-32,1],[-12,5],[1,-16],[9,6],[23,-6],[-20,-4],[-5,-9],[-34,0],[9,-14],[-26,-1],[1,15],[-11,9],[-4,-20],[17,-14],[-15,0],[13,-30],[-24,1],[-20,-6],[-3,16],[-30,-30],[9,-7],[-5,-13],[-22,2],[-34,-12],[45,-1],[-4,-7],[21,-16],[-2,-16],[-18,-5],[18,-3],[4,-13],[-13,-11],[14,-5],[-14,-17],[18,0],[20,-30],[-7,-11],[27,-7],[-11,-20],[14,-7],[20,8],[12,-14],[36,-4],[-15,-13],[-12,9],[-47,-2],[-37,-7],[-14,-13],[-34,22],[20,-29],[-38,2],[-9,-8],[9,-14],[-23,-14],[27,3],[-37,-16],[52,-4],[-72,-17],[-6,-13],[61,6],[7,-8],[-35,-4],[40,-4],[-17,-13],[9,-23],[-22,5],[25,-20],[40,-9],[38,-31],[-89,-12],[59,-2],[53,8],[73,-27],[12,-14],[24,3],[-3,-20],[86,-9],[66,-23],[124,-12],[-9955,-15]],[[3456,1546],[12,-3],[-1,-9],[-17,4],[-19,-9],[3,13],[22,4]],[[3431,1556],[12,-2],[-6,-9],[-6,11]],[[3331,1581],[7,-5],[-12,-7],[-4,7],[-20,-3],[-1,6],[30,2]],[[3392,1616],[7,-6],[-33,-7],[10,13],[16,0]],[[3470,1665],[-6,-10],[-5,8],[11,2]],[[6916,2373],[5,-3],[-5,-12],[16,-14],[19,13],[7,-1],[-1,-15],[-9,1],[-11,-5],[2,-7],[13,1],[-1,-9],[-22,3],[-7,8],[-5,-13],[-8,4],[5,20],[-5,14],[1,12],[6,3]],[[9093,2685],[-7,-6],[5,12],[2,-6]],[[9020,2837],[14,-3],[13,-8],[2,-6],[17,-8],[24,13],[5,-4],[5,11],[5,-4],[4,9],[10,-13],[-1,-28],[1,-39],[-7,1],[-1,-22],[-4,-21],[3,-1],[0,-21],[-10,9],[6,10],[-14,1],[-4,-23],[-2,6],[-8,-26],[-9,6],[-14,-1],[-3,20],[-2,-6],[-4,15],[-7,9],[-6,24],[0,13],[9,-9],[-13,31],[-11,37],[-2,13],[4,15]],[[9121,2859],[-9,-6],[0,6],[9,0]],[[9109,2896],[9,-16],[1,-14],[-5,-2],[-11,22],[6,10]],[[9001,2876],[-5,-4],[-1,25],[7,3],[-1,-24]],[[8822,3134],[-1,-10],[12,1],[0,-11],[-11,1],[-5,-10],[-20,1],[-4,17],[21,11],[8,0]],[[9263,3604],[-1,-18],[-2,14],[3,4]],[[9261,3608],[-2,17],[3,2],[-1,-19]],[[8136,3714],[7,-36],[-7,19],[0,17]],[[9257,3758],[2,-20],[-10,-37],[1,32],[5,7],[-2,14],[4,4]],[[9195,3832],[5,-3],[0,-17],[-7,17],[2,3]],[[9061,4133],[3,-7],[-3,-7],[-4,13],[4,1]],[[8880,4236],[-7,-7],[0,-6],[-8,0],[1,8],[10,8],[4,-3]],[[8805,4285],[2,-15],[-4,8],[2,7]],[[8797,4395],[0,-9],[6,2],[-5,-8],[-1,-14],[6,-6],[-8,0],[-6,5],[-1,14],[9,16]],[[8621,4522],[5,-21],[-7,4],[-8,-2],[5,9],[-2,9],[6,10],[1,-9]],[[8624,4533],[6,-6],[14,10],[6,-2],[1,-21],[-14,-18],[-13,16],[-3,29],[3,-8]],[[8682,4547],[1,-13],[-4,6],[3,7]],[[8959,4566],[-1,-8],[6,-7],[3,-19],[0,-30],[10,-9],[-4,-20],[6,-4],[4,-11],[-2,-17],[5,2],[-1,-13],[3,-19],[-2,-19],[5,-20],[3,-22],[5,-2],[15,18],[4,-22],[18,-23],[-3,-12],[2,-6],[2,-37],[3,-8],[-2,-16],[6,-22],[9,-9],[-1,-11],[5,-19],[1,-16],[-3,-34],[9,-15],[-2,-17],[5,-14],[13,-15],[4,7],[2,-12],[8,0],[4,-6],[1,-14],[19,-12],[1,-10],[7,5],[3,-13],[4,1],[1,-10],[-4,-1],[-1,-10],[15,-24],[-1,-8],[8,-30],[0,-14],[3,-20],[8,-7],[5,-13],[-3,22],[4,5],[3,-9],[10,-13],[2,13],[6,-21],[-2,-15],[3,-36],[4,0],[4,-13],[5,-4],[6,-13],[6,3],[4,-6],[6,-27],[8,-7],[4,-25],[10,-6],[0,-27],[6,-16],[-2,-19],[4,-40],[-4,-3],[10,-41],[1,-17],[3,-4],[1,-40],[-7,-21],[-2,-39],[-7,-32],[0,-30],[-3,-28],[-5,-21],[-6,-11],[0,-23],[-13,-15],[-11,-20],[-6,-26],[-5,-3],[0,-26],[-9,-18],[-3,-27],[-4,-14],[2,-9],[-8,-7],[-9,-34],[0,-24],[-7,-34],[4,-21],[-2,-14],[-13,-16],[-33,-2],[-16,-10],[-10,-13],[-13,-24],[-19,-4],[3,-12],[4,7],[-2,-20],[-6,16],[-8,-3],[-4,16],[-3,-3],[-8,9],[5,8],[-2,9],[-6,0],[-1,-10],[-8,-5],[-6,8],[8,1],[3,17],[-6,10],[-15,-14],[10,-2],[-2,-8],[-6,0],[-10,-11],[-14,-22],[-32,28],[-5,-2],[-8,7],[-9,-1],[1,-6],[-8,1],[-4,13],[-14,5],[-10,11],[-3,13],[-13,23],[-3,18],[5,6],[0,13],[-9,34],[-14,26],[6,2],[3,10],[-4,3],[-21,-20],[-8,0],[-1,7],[9,12],[3,33],[-8,16],[-3,16],[-7,-13],[-1,-20],[-5,-23],[-7,4],[-15,-11],[3,23],[11,-3],[3,21],[-1,25],[4,17],[9,19],[-3,19],[6,4],[-8,34],[0,-26],[-3,2],[-6,-11],[-5,-27],[-25,-26],[-8,-24],[-4,-3],[-4,-16],[6,2],[0,-12],[-5,7],[-6,-5],[-6,18],[-1,21],[-3,17],[-11,20],[-4,27],[-12,0],[-2,13],[-4,1],[7,15],[-5,12],[-8,-5],[3,9],[-8,16],[-14,-5],[-10,14],[-7,1],[-9,-6],[-12,18],[-18,14],[-9,-7],[-18,2],[-33,-7],[-27,-23],[-20,-11],[-17,-2],[-14,5],[-18,-19],[-15,-10],[-2,-6],[-17,-8],[-4,-5],[-5,-28],[-7,-16],[-6,-7],[-4,3],[-6,-7],[-3,9],[-19,-3],[-8,-6],[0,8],[-14,3],[-20,-2],[-13,-6],[-16,-1],[-9,-16],[-2,-12],[-16,1],[-3,-11],[-7,-4],[-2,-11],[-20,-8],[-2,-5],[-12,7],[-18,-1],[-15,14],[-10,19],[-10,9],[-4,-3],[-4,15],[0,32],[6,-7],[7,3],[6,18],[-1,36],[3,8],[0,43],[-18,66],[-4,34],[1,32],[-5,22],[-7,17],[0,16],[-11,24],[-2,38],[-5,16],[-11,32],[-7,13],[5,14],[6,-26],[7,6],[0,9],[-9,14],[-4,27],[2,4],[7,-20],[-1,-17],[5,14],[2,-22],[7,-2],[0,30],[-5,13],[-6,26],[-4,4],[-3,21],[-5,16],[1,26],[4,22],[5,6],[0,24],[2,10],[-5,22],[3,7],[7,33],[4,4],[-2,-20],[1,-21],[7,4],[8,34],[23,20],[13,26],[21,22],[5,-3],[8,6],[7,-7],[12,7],[8,14],[17,3],[10,20],[12,-6],[7,6],[12,3],[16,11],[11,13],[9,25],[3,19],[4,4],[16,39],[-4,1],[-2,36],[3,14],[8,17],[6,3],[0,10],[7,12],[-1,-15],[5,-3],[0,-14],[12,-37],[-1,10],[3,13],[-2,11],[7,-10],[-3,24],[-6,5],[6,13],[-5,8],[5,2],[7,-7],[-1,9],[7,-9],[16,-1],[-10,3],[-1,9],[6,4],[1,18],[-4,-11],[-3,18],[1,9],[6,1],[3,9],[5,0],[4,-9],[1,10],[-6,3],[4,17],[11,-10],[0,9],[-8,16],[10,14],[3,-4],[7,6],[1,-11],[3,5],[4,26],[-5,5],[4,7],[3,-19],[9,16],[1,-16],[4,14],[4,0],[-3,11],[6,4],[4,-14],[9,1],[11,-28],[10,-16],[-3,-17],[0,-13],[4,-1],[-1,11],[5,14],[4,3],[12,-5],[9,-11],[-1,11],[7,-5],[3,-14],[4,1],[-3,18],[5,-1],[-6,15],[-7,11],[4,20],[7,4],[1,18],[4,9],[11,12],[-5,9],[0,14],[6,2],[0,12],[6,6],[2,11],[7,-14],[0,17],[4,-2],[-1,12],[9,5],[3,-13],[13,4],[4,-5],[9,5],[7,9],[2,24],[-7,12],[-9,-5],[-5,12],[-5,0],[7,11],[10,-1],[9,-21],[6,10],[7,-21],[14,-7],[4,6],[4,-11],[3,4],[4,-12],[6,-1],[8,7],[11,-18],[13,11],[6,2],[-4,-8],[2,-6],[5,7],[5,-5],[-2,-11],[7,-1],[3,14],[-5,3],[10,9],[4,-17],[3,7],[4,-11],[-12,-28],[4,-6],[-9,-21],[0,9],[-5,-6],[0,8],[-7,-9],[0,-26],[4,3],[-4,-29],[-3,-3],[-7,-24],[-4,-4],[2,-13],[22,-27],[0,-8],[10,-11],[4,-9],[7,1],[10,-14],[10,-7],[9,-21],[7,-8],[20,-9],[4,-7],[1,-15],[22,-24],[14,4],[10,13],[3,24],[7,18],[3,26],[3,9],[-2,9],[3,25],[5,20],[-4,40],[3,16],[-4,13],[1,21],[5,21],[-2,18],[6,14],[-2,11],[-5,-4],[6,28],[6,1],[-2,8],[6,41],[0,14],[5,2],[6,11]],[[5470,7982],[-2,-9],[5,-23],[3,-3]],[[5476,7947],[-3,-17],[-12,3],[-6,-6],[7,-3],[-5,-12],[-1,-22],[-9,-9]],[[5447,7881],[-19,-12],[-16,-2],[-9,-14],[-23,9]],[[5380,7862],[-32,7],[-12,17],[2,7],[-12,-5],[-17,-1],[-4,-11],[-15,6]],[[5290,7882],[-2,7],[-6,-8],[-16,12]],[[5266,7893],[-2,12]],[[5264,7905],[1,14]],[[5265,7919],[4,2]],[[5269,7921],[7,0],[8,-16],[6,15],[12,-1],[2,-7],[9,1],[9,10],[32,4],[6,-11],[3,9],[-5,5],[1,13],[-6,9],[4,7],[12,5],[4,16],[7,-3],[3,13]],[[5383,7990],[7,-9],[18,0],[7,11],[0,12],[11,-1],[20,-13],[10,3],[13,-6],[1,-5]],[[6281,7420],[-19,8],[-9,14],[-9,24]],[[6244,7466],[-1,3]],[[6289,7594],[9,-6],[11,-12],[5,-17],[16,-3],[5,15],[9,6],[5,16]],[[6349,7593],[15,-31],[1,-11],[10,-28],[15,-3],[8,-10],[-11,-3],[-13,-11],[0,-11],[-6,-28],[4,-11],[-5,0],[-1,-17],[-7,10],[-2,-43]],[[6357,7396],[-7,-2],[-6,12],[-11,12],[1,8],[7,2],[-5,18],[6,7],[-10,16],[-4,-1],[-26,-29],[-11,-17]],[[6249,7560],[8,10],[13,-8],[8,-9],[6,1],[6,-8],[4,3],[1,15],[-10,9],[-3,13],[7,8]],[[5848,5045],[-4,-15],[2,-14],[9,-5],[0,-17],[-9,-13],[-9,-34],[-11,-21],[-3,1]],[[5823,4927],[-9,39],[1,21],[-4,4]],[[5811,4991],[0,18],[-4,5],[-2,12]],[[5805,5026],[4,7],[5,-4],[0,-9],[11,1],[5,7],[1,21],[6,-6],[7,7],[4,-5]],[[5166,8104],[10,-14],[1,-10],[-8,-11]],[[5169,8069],[-7,-3],[-4,-16],[2,-14]],[[5160,8036],[-9,-3],[-4,10],[-13,7],[-1,21],[-9,-13],[-10,3],[2,15],[-5,5],[-10,0],[0,6],[-11,5],[-4,15],[-7,-6],[-7,8],[-2,15]],[[5070,8124],[16,14],[7,3]],[[5093,8141],[0,-6],[16,-3],[8,9]],[[5117,8141],[1,0]],[[5118,8141],[3,3],[16,-1],[7,-8],[9,0],[9,-11],[-6,-13],[10,-7]],[[5099,5856],[-3,-17],[7,-16],[0,-19],[3,-5],[-1,-16],[-5,0],[1,-14],[-3,-18],[-6,-3],[0,-9],[-5,-12],[-2,-20],[-8,-4],[-2,-15],[0,-41],[-1,-12],[2,-25],[1,-42],[-2,-18]],[[5075,5550],[-31,-9]],[[5044,5541],[5,3],[-5,18],[1,24],[0,73],[-1,5],[0,43],[-6,13],[-1,37],[-16,23],[0,19],[4,17]],[[5025,5816],[5,3],[1,13],[4,-1],[3,11],[6,-3],[11,2],[8,13],[3,14]],[[5066,5868],[-1,19],[14,10],[10,-21],[2,-8],[6,-4],[2,-8]],[[5006,6041],[-2,-21],[6,-16],[-1,-9],[7,-24],[5,0],[7,-13],[7,-7],[-9,-1],[0,-15],[6,-6],[11,-19],[8,-1],[3,7],[5,-3],[3,-15],[-6,-4],[10,-26]],[[5025,5816],[-12,0],[-18,8]],[[4995,5824],[-8,-3],[-5,-10],[-2,5],[-59,0],[-3,-22],[3,-11],[2,-25],[0,-24],[2,-5]],[[4925,5729],[-4,-4],[-10,24],[-6,5],[-10,1],[-11,-7],[-4,-11],[-11,3],[-4,12],[-3,-1],[-4,24],[-9,1],[-3,7]],[[4846,5783],[3,24],[-2,14],[6,9],[1,19],[-4,14],[8,10],[9,1],[10,18],[-1,24],[6,0],[0,14],[-3,11],[10,13],[15,-13],[5,7],[0,25],[6,-5],[5,21],[11,16],[12,-6],[1,16],[8,3],[11,13],[8,5],[8,15],[8,-4],[8,2],[11,-8]],[[7529,6456],[0,16],[3,-11],[-3,-5]],[[7521,6458],[-5,-7],[2,29],[-4,4],[3,11],[6,-20],[-2,-17]],[[7571,6448],[0,-29],[2,-10],[-12,7],[1,-20]],[[7562,6396],[1,-15],[-7,20],[-1,27],[-3,9],[-2,29],[-11,31],[-5,-14],[-9,0],[-8,26],[1,14],[-4,6],[-9,4],[11,-11],[-4,-10],[2,-12],[-3,-8],[5,-13],[-2,-18],[-6,-9],[-1,-11],[-7,1],[1,7],[-5,6],[-2,-15],[-12,-7],[0,14],[-4,-18],[-4,10],[-1,18]],[[7473,6457],[-6,48],[2,14],[-7,2],[3,13],[-6,8],[0,11],[5,8],[0,22],[-7,0],[-11,12],[-2,7],[4,12],[5,1],[3,18],[13,-1],[-3,18],[-8,1],[-3,11],[-9,14],[2,12],[5,4],[4,14],[5,-9],[11,-3],[7,-14],[7,-2],[2,15],[6,-18],[-2,-4],[1,-32],[15,-8],[23,2],[7,-3],[18,3],[11,-14],[-6,-2],[-5,-31],[-5,-2],[0,-9],[-8,2],[0,-6],[-7,0],[-7,-21],[2,-14],[9,-30],[7,5],[0,15],[5,8],[-1,11],[5,4],[8,-22],[0,-25],[3,-12],[3,-42]],[[5793,7702],[0,-17],[-11,-3],[-6,-14],[-2,-26],[-4,1],[-8,-16],[5,1],[11,-28]],[[5778,7600],[-13,-4],[-6,9],[-21,-5],[-7,-15]],[[5731,7585],[-8,0],[2,-21],[-25,-7],[-9,10],[-8,1],[-2,6],[-14,0],[-8,-7],[-13,0],[-10,-4]],[[5636,7563],[3,22],[-5,18],[-9,5],[-5,11]],[[5620,7619],[5,6],[-3,23],[9,5],[7,17],[-13,15],[-4,15],[1,17],[8,13]],[[5630,7730],[9,-8],[-4,-15],[17,3],[18,-8],[10,3],[21,-5],[4,-4],[11,5],[9,16],[25,10],[10,-10],[15,-2],[8,-13],[10,0]],[[6402,6694],[3,0],[0,-24],[-4,8],[1,16]],[[2971,6401],[-3,-10],[-15,-3],[-1,6],[9,10],[4,-4],[6,12],[0,-11]],[[2969,6475],[8,-3],[-7,-3],[-1,6]],[[2948,6491],[0,-14],[-5,9],[5,5]],[[2889,6546],[9,-13],[-10,9],[1,4]],[[2908,6546],[6,-21],[0,-8],[7,-10],[0,-8],[-7,15],[-1,14],[-5,18]],[[2840,6572],[6,0],[0,-20],[-8,5],[-3,13],[5,2]],[[2908,6577],[-3,0],[-4,16],[7,-16]],[[2830,6632],[3,0],[8,-40],[-8,-11],[-10,14],[7,37]],[[2869,6655],[0,-4],[16,-20],[-1,-29],[-2,7],[3,17],[-6,14],[-11,8],[1,7]],[[2819,6722],[15,-4],[-21,-5],[6,9]],[[2839,6733],[5,0],[16,-25],[0,-11],[-4,-3],[0,-19],[-6,5],[4,8],[0,18],[-8,23],[-7,4]],[[5528,7765],[9,0],[-7,-29],[14,-17],[-10,-5],[7,-13],[-1,-8],[-7,-3]],[[5533,7690],[-8,-3],[0,-8],[-7,-6],[-1,-13],[-4,0],[-1,-26]],[[5512,7634],[-22,19]],[[5490,7653],[-2,3]],[[5488,7656],[0,8],[-35,57],[-8,32],[-7,3],[0,29],[6,2],[10,-12],[3,10],[9,-1],[4,7],[4,-7],[22,-6],[4,4],[19,-3],[2,-11],[7,-3]],[[5781,8416],[4,-6],[9,3],[3,-8],[9,4],[11,-6],[1,-13],[12,9],[16,-3],[11,-11],[-2,-19],[6,-15],[-7,-13],[11,-10],[-3,-7],[7,-14],[15,-15],[-3,-11],[10,1],[11,-9],[6,-11],[-15,-22],[-22,5],[-4,-9],[8,-10],[2,-30],[5,-13]],[[5882,8183],[-23,-2],[-12,-29],[3,-14],[-7,-1],[-6,11],[-15,-1],[-9,-6],[-5,14],[-13,-11],[-11,13],[-16,-10],[1,7],[-13,0],[-1,7],[-21,5],[-10,6],[-28,2],[-19,-4],[-11,-18],[-11,3],[0,-5]],[[5655,8150],[0,34],[-12,10],[6,13],[15,11],[0,18],[-7,25],[-5,28]],[[5652,8289],[20,1],[5,-4],[12,5],[-1,7],[19,11],[1,-8],[8,6],[-7,3],[9,37],[8,1],[3,10],[9,-1],[6,10],[-8,1],[2,20]],[[5738,8388],[11,10],[17,-2],[8,17],[7,3]],[[2547,6247],[-3,-6],[9,0],[-1,-18],[-5,-28],[4,-4],[-4,-10],[2,-16],[-2,-24],[-7,-21],[-5,-2],[-5,-20]],[[2530,6098],[-9,0],[2,51],[0,60]],[[2523,6209],[4,10],[4,-6],[9,26],[0,6],[7,2]],[[3084,4249],[-4,-1]],[[3080,4248],[4,1]],[[3384,4022],[-1,21],[-24,29],[-24,0],[-51,-22],[-4,-23],[-10,-28],[0,-29],[-8,-54],[-3,-14]],[[3133,3869],[-10,-5],[-9,4],[1,16],[-3,11],[0,16],[-4,7],[-3,23],[0,15],[-6,20],[-4,2],[2,18],[-6,6],[1,10],[-3,14],[6,2],[1,8],[-5,11],[7,16],[-13,23],[-3,34],[-3,18],[2,6],[-7,5],[0,8],[-5,18]],[[3069,4175],[-4,17],[7,8],[10,30]],[[3082,4230],[5,-3],[-1,11],[8,5],[0,6],[-7,0],[-1,9],[4,4],[-7,3],[0,7],[-10,17]],[[3073,4289],[6,16],[-7,15],[6,28],[5,6],[3,20],[-6,22],[4,8],[-1,36],[7,11],[2,12],[-16,55],[-9,34]],[[3067,4552],[23,-3],[-1,-8],[10,6],[9,20],[11,3],[11,19],[7,3],[11,20],[19,8],[7,1],[4,-5],[5,9],[3,-32],[-4,-13],[3,-21],[-2,-18],[2,-19],[3,-2],[1,-14],[4,-2],[1,-12],[5,-1],[4,-10],[6,-4],[1,-11],[13,-4],[4,4],[10,-7],[4,-8],[5,4],[9,-20],[4,1],[8,-10],[7,0],[0,-6],[8,-17],[22,4],[18,-27],[-2,-20],[5,-18],[1,-28],[-9,-1],[9,-20],[3,-47],[47,-4],[3,3],[0,-13],[-4,-8],[2,-34],[11,-15],[6,-1],[0,-8],[6,-27],[0,-10],[-6,-46],[-9,-38],[7,-13],[-8,-10]],[[3651,3581],[1,22],[3,0],[-4,-22]],[[3650,3661],[-4,8],[6,7],[-2,-15]],[[3919,4412],[0,-16],[-4,16],[4,0]],[[3660,5124],[-3,3],[4,9],[-1,-12]],[[3588,5149],[0,-7],[-8,-7],[1,9],[7,5]],[[3577,5151],[2,-5],[-4,-19],[-3,-11],[-15,-19],[0,13],[7,10],[0,14],[2,11],[8,8],[3,-2]],[[3573,5156],[5,19],[0,-10],[-5,-9]],[[3608,5175],[11,-6],[9,5],[27,-7],[-2,-14],[-1,-20],[-4,-14],[-5,-5],[0,-14],[-7,-5],[-3,7],[0,-11],[-9,1],[-6,-12],[-14,3],[-4,-6],[-5,2],[-7,28],[1,13],[6,-5],[1,8],[-7,-1],[0,23],[2,17],[4,10],[5,5],[8,-2]],[[3586,5165],[-4,4],[1,13],[7,3],[2,-9],[-6,-11]],[[3625,5187],[3,-5],[-2,-7],[-11,2],[10,10]],[[3599,5183],[-5,0],[-2,9],[6,-1],[1,-8]],[[3624,5200],[-6,-5],[-3,-12],[-14,0],[-1,12],[8,1],[15,9],[1,-5]],[[3600,5213],[1,-14],[-2,-7],[0,23],[1,-2]],[[3609,5216],[-6,-13],[1,14],[5,-1]],[[3608,5236],[0,-10],[-5,0],[5,10]],[[3600,5305],[1,-11],[-5,4],[4,7]],[[3431,5295],[13,-7],[2,14],[-6,10],[5,17],[6,-8],[11,2],[0,4],[10,2],[8,-5],[3,-7]],[[3483,5317],[3,-7],[8,-3],[7,3],[6,9],[5,-7],[6,5],[9,-9],[9,11],[8,31],[1,14],[4,7],[15,44]],[[3564,5415],[5,24],[8,-16],[1,-21],[3,4],[-1,-29],[3,-31],[7,-22],[1,-18],[6,-18],[13,-4],[4,-8],[0,-19],[-7,-4],[7,-3],[-11,-17],[-5,-12],[-4,-17],[-5,-11],[-5,-1],[-9,-17],[-4,-19],[-8,-19],[0,-14],[-7,-8],[-1,-13],[-6,4],[-14,-13],[13,2],[0,-10],[9,7],[7,10],[11,11],[13,17],[-5,-12],[5,-5],[0,-14],[4,-9],[0,-11],[7,-14],[4,9],[6,4],[5,-7],[12,10],[1,-7],[-5,-41],[2,-2],[8,40],[7,18],[2,-8],[8,21],[3,-12],[1,19],[4,-2],[4,16],[1,15],[5,0],[5,12],[2,-11],[4,10],[11,-7],[19,-9],[0,-10],[7,-6],[8,5],[1,-7],[10,-9],[1,-8],[6,9],[-2,-11],[1,-13],[3,11],[5,4],[10,-14],[-3,-5],[6,-1],[3,-8],[-5,-16],[5,5],[3,-14],[-4,0],[-5,-36],[2,-9],[6,14],[1,23],[8,8],[1,-9],[-7,-12],[7,-2],[2,14],[9,4],[6,-4],[-1,12],[4,0],[18,-13],[6,-11],[15,-5],[3,6],[5,-9],[29,4],[3,2],[14,-3],[25,-31],[3,-1],[8,-15],[5,-2],[11,-27],[14,-26],[9,-6],[4,-12],[6,-1],[6,-8],[16,-1],[5,3],[13,-6],[4,-13],[9,-57],[1,-24],[5,-21],[-1,-53],[-7,-40],[-7,-25],[-10,-27],[-3,5],[-2,-16],[-12,-24],[-3,-13],[-10,-10],[-5,-9],[-11,-37],[-15,-52],[-13,-34],[-5,0],[0,14],[-4,9],[-4,-16],[0,-17],[-4,-7],[0,-27],[-2,-5],[2,-28],[-3,-20],[2,-9],[0,-24],[2,-28],[2,-6],[-4,-25],[-6,-53],[1,-31],[-2,-9],[-7,-8],[-7,-30],[2,-51],[-3,-13],[-6,-6],[-9,-44],[-13,-31],[-8,-25],[4,-27],[-5,-10],[-12,-7],[-13,-20],[0,-21],[-17,1],[-11,-3],[0,18],[-7,-5],[2,-13],[-22,-7],[10,7],[-9,3],[-8,-7],[-2,7],[-9,-7],[1,-17],[-10,-3],[-2,-6],[-10,-7],[-1,-11],[-12,4],[-8,-7],[-1,-7],[-11,-6],[-11,-13],[-5,-12],[-10,-9],[-10,-15],[-1,-15],[-8,-7],[-6,4],[1,-17],[-4,-17],[-1,-19],[-5,-6],[4,-6],[-3,-16],[3,-6],[2,-32],[-2,-52],[-4,-17],[-17,-23],[-5,-12],[-14,-39],[-8,-37],[-10,-34],[-12,-25],[-22,-27],[-3,-9],[0,17],[5,-4],[11,20],[5,3],[4,11],[-1,12],[5,1],[0,10],[9,9],[-1,22],[4,-6],[1,12],[-12,-4],[-9,8],[3,-7],[-6,-21],[-1,-24],[-6,-10],[-9,-4],[-3,-21],[-4,-3],[-1,-14],[5,-10],[-5,-7],[-6,-30],[-7,-26],[-18,-28]],[[3517,3240],[-4,10]],[[3513,3250],[2,1],[1,23],[5,4],[2,13],[5,6],[5,-10],[6,18],[-4,16],[-12,-19]],[[3523,3302],[-11,11],[-5,23],[-15,14],[-9,21],[-8,3],[-4,8],[-7,3],[-2,10],[-8,11],[-6,-13],[-4,0],[0,16],[-23,40],[-7,0],[-2,-8],[-11,-2],[-2,6]],[[3483,3710],[0,8]],[[3483,3718],[5,3],[0,26],[4,16],[0,34]],[[3492,3797],[-9,15],[-10,-10],[-13,1],[-3,21],[1,11],[-4,23],[1,21],[-7,19],[-9,1],[-6,12],[-12,-10],[-31,8],[0,36],[3,16],[-9,61]],[[3067,4552],[-11,2],[-7,-8],[-12,3],[0,41],[1,29],[2,20],[-10,-14],[-2,-7],[-9,-11],[-25,0],[-3,27],[-14,7],[-11,0],[7,16],[0,8],[-6,17],[-4,2],[-1,11],[-5,6],[-2,15],[-5,9],[2,9],[-8,14],[1,11],[7,2],[-3,13],[2,13],[11,17],[5,3],[1,12],[-3,14],[8,24],[1,30],[14,14],[14,21],[17,5],[10,6],[5,11],[9,1],[3,-6],[10,-5],[0,5]],[[3056,4939],[6,58],[0,9],[5,46],[0,10],[5,54],[-4,13],[-2,24],[-13,21],[1,42],[12,4],[3,5],[10,-6],[-2,21],[-4,4],[-14,0],[0,37],[8,4],[5,-3],[34,0],[-1,16],[7,-15],[5,4],[9,19],[4,-5],[7,-29],[-1,-21],[6,2]],[[3142,5253],[11,-21],[10,-7],[10,14],[6,-1],[-1,-17],[11,17],[1,10],[11,6],[10,16],[0,-8],[9,16],[0,14],[19,16],[1,14],[-20,4],[2,15],[-6,20],[0,30],[-13,22],[-4,12],[2,5],[4,-10],[12,0],[4,-14],[10,4],[4,-5],[4,7],[4,-5],[7,-18],[7,5],[-1,20],[6,1],[4,9],[7,-6],[18,12],[0,6],[16,10],[10,22],[-2,13],[-3,1]],[[3312,5482],[11,0],[3,4],[8,-12],[-3,-33],[6,0],[5,-8],[-2,-8],[4,-14],[0,-10],[-7,-12],[1,-13],[-4,-17],[-1,-22],[2,-17],[5,-5],[0,-26],[6,-8],[8,-19],[8,-4],[4,-7],[8,5],[0,10],[5,9],[9,-5],[6,11],[7,0],[3,11],[9,7],[9,-8],[9,4]],[[3347,5935],[-4,3],[0,13],[6,-10],[-2,-6]],[[8198,5465],[5,-34],[-7,5],[-2,24]],[[8194,5460],[4,5]],[[8166,5448],[6,-1],[7,5],[7,12],[9,10],[-2,-10]],[[8193,5464],[-7,-9],[2,-17],[0,-14],[-7,-10],[-7,23],[-8,11]],[[7545,6781],[-2,-8],[5,-11],[6,3],[3,-10],[-3,-11],[3,-13],[-5,-4],[-33,-3],[-10,8],[-6,-9],[-11,-3],[-12,9],[-6,-2],[-7,7],[-3,12],[4,10]],[[7468,6756],[3,13],[13,29],[11,14],[12,3],[0,-5],[9,-1],[-4,-10],[18,-5],[5,6],[10,-8],[0,-11]],[[5701,4158],[-1,-8],[8,-27],[7,-13],[6,-21],[4,-29],[8,-13],[14,-17],[7,-3],[3,-9],[0,-15],[12,-1],[-1,-34],[6,-12],[3,-15],[18,-5],[12,-10],[1,-14],[7,-7]],[[5815,3905],[-9,-3],[-3,-13],[-8,-7],[-12,-4],[-12,-27],[-5,-6],[-2,-10],[-11,-7],[-4,-13],[-5,-31],[-8,-10],[-3,-10],[-15,-6],[0,-10],[-8,-41],[-5,-7],[-10,1],[-4,-5],[-17,5],[-10,6],[-13,20],[-7,1],[-7,-5],[-6,-23],[0,-14],[-6,-13],[-8,-7],[-6,-18],[-7,-2],[-2,-10],[-15,0],[-15,4],[0,21],[5,11],[0,19],[-4,13],[-1,14],[-10,29],[-8,10]],[[5554,3757],[0,159],[28,0],[0,212],[23,4],[21,9],[21,5],[9,-27],[15,26],[7,4],[4,-6],[7,13],[12,2]],[[5634,5812],[4,-14],[8,-14],[10,-31],[1,-16],[-1,-21],[-5,-6],[3,-9],[-2,-17],[19,-1]],[[5671,5683],[2,-7],[-4,-11],[3,-6],[16,-5],[8,-17],[5,-3],[1,-11],[-4,-4],[6,-14],[18,-19],[2,-10],[8,-10],[-2,-16],[8,-21],[6,-2],[13,-23],[-1,-15],[6,-14]],[[5762,5475],[-12,7],[-4,-8],[-10,-1],[-12,12],[-6,-3],[-11,9],[-4,-5],[0,-13],[-18,-7],[-5,11],[-6,-10],[-27,-19],[-12,12],[-9,-34],[-3,-5],[-23,9],[-2,-3],[-20,12],[-7,-2],[-6,20],[-13,14],[-3,7],[-10,1],[-17,-34],[-1,-7],[-6,-3],[2,-12],[-1,-27],[1,-13]],[[5517,5383],[-4,9],[-11,-4],[-16,7],[-8,-6],[-15,-2],[-4,-7],[-3,-27],[1,-7],[-8,-34]],[[5449,5312],[-2,8],[0,26],[-4,13],[-5,3],[-15,32],[-6,21],[4,1],[-3,14],[-10,19],[-1,31],[-4,6],[2,8],[1,27],[-7,10],[10,13],[5,24],[3,4],[6,30],[6,14]],[[5429,5616],[9,-4],[7,8],[10,5],[4,11],[2,-12],[5,-7],[23,26],[7,-2],[5,4],[15,1],[15,36],[-6,7],[0,8],[5,5],[17,0],[10,7],[9,-1],[4,12],[8,5],[5,19],[13,24],[5,4],[3,10],[-1,14],[8,5],[0,5],[14,9],[9,-3]],[[2957,7804],[-12,-5],[13,16],[-1,-11]],[[2699,7829],[2,-7],[13,9],[3,-9],[5,9],[9,-4],[2,-11],[-7,-12],[-23,15],[-15,6],[11,4]],[[2665,7849],[6,-2],[-2,-11],[-4,13]],[[3319,7889],[6,-10],[-2,-13],[-7,-22],[5,3],[-19,-34],[10,5],[9,11],[-10,0],[12,21],[4,-8],[11,0],[-7,-23],[-16,-12],[-6,3],[-13,-5],[-5,21],[1,13],[6,7],[10,30],[7,14],[4,-1]],[[3221,7879],[6,-21],[3,6],[12,-8],[33,3],[3,-3],[-17,-10],[4,-13],[-11,-3],[-2,12],[-19,2],[-4,11],[-11,0],[2,14],[-9,-1],[4,16],[7,9],[-1,-14]],[[3503,7956],[10,3],[-1,-7],[-9,4]],[[2562,7993],[-9,-6],[0,8],[9,-2]],[[2924,7774],[20,14],[8,11],[6,0],[2,17],[7,17],[14,11],[5,9],[17,17],[5,-2],[32,22],[14,22],[0,4],[14,20],[0,5],[16,23],[21,20],[44,28],[28,8],[18,-3],[10,-5],[11,-14],[1,-8],[-11,8],[11,-15],[-4,-13],[-11,-4],[-1,-6],[-18,-13],[-16,11],[-3,-5],[-11,0],[18,-11],[9,-15],[8,9],[12,0],[3,-6],[-7,-14],[-1,-10],[-11,-13],[16,0],[-3,-15],[11,-32],[20,-8],[-8,-6],[7,-7],[10,0],[4,-9],[5,5],[24,-6],[10,10],[5,-15],[7,3],[7,-12],[-7,-5],[14,-3],[-1,-4],[-18,-7],[0,-3],[-32,-21],[-9,4],[-4,-9],[-8,1],[1,-9],[-11,0],[1,10],[-9,-5],[-4,-8],[2,-10],[-6,-5],[-8,-19],[-9,-10],[-6,1],[-9,-11],[-5,14],[-9,5],[-1,14],[7,29],[21,24],[22,18],[1,-13],[7,8],[20,9],[-34,2],[-5,-6],[-4,6],[13,15],[-3,9],[-5,-12],[-16,-9],[-17,-16],[-4,4],[-10,-10],[-12,-1],[-8,6]],[[3134,7784],[-9,6],[1,19]],[[3126,7809],[-10,9]],[[3116,7818],[1,1],[-1,74],[-14,17],[-16,-11],[-9,17],[-19,-37],[-4,-23],[-7,-12],[1,-17],[-12,-20],[1,-11],[-18,-5],[-6,-16],[-89,-1]],[[1546,8044],[6,-11],[-14,13],[8,-2]],[[1479,8054],[4,-13],[-7,0],[-4,9],[7,4]],[[3218,8058],[33,-11],[15,-14],[11,-6],[10,-14],[-16,-6],[-24,11],[-14,9],[-2,9],[-22,16],[9,6]],[[1494,8104],[-11,-4],[6,9],[5,-5]],[[1448,8112],[20,-17],[22,-5],[26,-13],[5,-19],[9,-12],[4,-16],[22,-13],[10,-22],[8,-25],[-6,-6],[-11,3],[-22,14],[-14,12],[9,11],[-18,-4],[-9,9],[4,11],[-8,0],[-1,10],[-14,-3],[0,11],[7,3],[-8,5],[-1,10],[-15,-2],[-33,43],[-2,7],[16,8]],[[3447,8155],[6,-8],[7,7],[-5,-17],[-12,4],[2,-12],[7,-5],[-28,-60],[-3,-27],[6,13],[13,21],[12,-13],[7,0],[-17,-14],[11,-17],[15,9],[-2,-16],[12,1],[8,14],[9,-8],[5,3],[15,-10],[-4,-13],[-17,-15],[10,3],[-3,-15],[12,-7],[3,10],[4,-6],[7,9],[-5,-19],[-11,-9],[-7,0],[6,-14],[-6,-9],[8,-15],[2,13],[6,14],[12,6],[-9,-18],[-1,-22],[8,8],[3,14],[5,-19],[-5,-10],[-2,-19],[-5,-17],[-6,3],[-10,-3],[4,26],[-2,5],[-14,-23],[-4,1],[8,31],[1,14],[-5,15],[-18,-29],[-10,-9],[0,-8],[-8,-11],[-9,-1],[-9,5],[3,7],[11,3],[15,28],[-11,3],[-6,-12],[-10,12],[-28,-4],[-25,3],[-6,4],[-18,-6],[-15,-2],[-4,17],[27,37],[-9,3],[-14,-6],[8,9],[6,-3],[9,33],[10,-9],[-2,9],[8,4],[-11,4],[25,78],[8,11],[8,28],[24,18]],[[1448,8147],[-7,0],[2,14],[5,-14]],[[1445,8181],[-2,-17],[-4,14],[6,3]],[[2798,8181],[-3,-7],[-8,3],[11,4]],[[1462,8192],[-15,-17],[2,14],[17,12],[-4,-9]],[[1430,8212],[1,-9],[-8,2],[7,7]],[[2738,8248],[8,-1],[10,-15],[3,-12],[-10,1],[-29,15],[6,10],[12,2]],[[1339,8249],[4,-12],[-6,-9],[6,-21],[17,-18],[-5,-5],[-20,26],[-16,32],[20,7]],[[1427,8244],[3,-10],[-2,-21],[-14,7],[-3,12],[2,20],[14,-8]],[[1419,8255],[-7,1],[4,10],[3,-11]],[[1382,8268],[9,-8],[5,-15],[-7,0],[-15,26],[8,-3]],[[1386,8270],[-9,4],[2,6],[7,-10]],[[1395,8273],[11,-17],[-5,-9],[-21,36],[3,5],[12,-15]],[[1380,8293],[-2,-10],[-7,7],[9,3]],[[1305,8302],[20,-3],[5,-14],[-15,-10],[13,-2],[2,21],[12,6],[-8,-28],[0,-22],[-13,-7],[-9,10],[7,6],[-11,3],[-7,25],[4,15]],[[2815,8428],[-1,-10],[-7,-3],[4,17],[4,-4]],[[2787,8429],[-11,-11],[1,8],[10,3]],[[2801,8446],[-3,-6],[9,-8],[-12,-27],[-8,-3],[2,12],[-9,-16],[-3,4],[14,23],[3,-5],[3,26],[4,0]],[[3293,8462],[1,-19],[-7,7],[6,12]],[[3204,8666],[5,-10],[-11,7],[6,3]],[[3109,8672],[7,-7],[-4,-10],[-10,-6],[-3,7],[5,16],[5,0]],[[3200,8731],[-2,-16],[-16,19],[18,-3]],[[2793,8775],[5,-7],[-8,-30],[-8,-9],[-10,11],[-2,14],[12,23],[11,-2]],[[3203,8784],[8,0],[-6,-10],[-9,3],[7,7]],[[3033,8802],[15,-11],[0,-7],[-13,1],[-7,15],[5,2]],[[2719,8809],[7,-3],[-2,-12],[-27,-27],[-23,-5],[-6,18],[18,27],[8,-5],[9,6],[16,1]],[[2822,8839],[21,-4],[4,-9],[-13,-10],[-16,17],[4,6]],[[3216,8833],[-8,14],[5,2],[3,-16]],[[2857,8849],[12,-6],[0,-11],[-20,14],[8,3]],[[3204,8862],[4,-12],[-12,8],[8,4]],[[3186,8910],[2,-6],[-13,-6],[11,12]],[[2625,8972],[12,-9],[-7,-5],[11,-20],[9,16],[14,-17],[20,-4],[4,-10],[19,-12],[5,2],[16,-14],[5,-23],[19,-8],[-1,8],[22,-21],[-8,-2],[-19,-16],[-26,14],[-12,-1],[-1,17],[-15,-1],[2,13],[-19,-10],[2,-14],[-19,-8],[-9,-19],[-25,-10],[-5,33],[-27,-2],[-14,-5],[8,20],[20,13],[-6,24],[6,15],[0,28],[5,23],[13,12],[1,-7]],[[2638,8984],[9,-10],[0,-16],[-12,13],[3,13]],[[2657,8990],[18,-11],[-3,-6],[15,-10],[-15,2],[-15,25]],[[2936,9103],[24,-5],[1,-12],[-28,0],[-10,16],[13,1]],[[2601,9095],[-7,-12],[-8,5],[-3,16],[9,13],[7,-6],[2,-16]],[[2900,9117],[16,-9],[-4,-11],[3,-24],[-9,-11],[-14,-6],[-31,-1],[-7,12],[0,22],[15,25],[31,3]],[[2096,9122],[-15,8],[14,1],[1,-9]],[[2919,9131],[3,-14],[-16,10],[2,12],[11,-8]],[[2173,9144],[-3,-12],[-12,5],[15,7]],[[2218,9152],[-13,-10],[2,17],[11,-7]],[[2820,9179],[-10,-28],[-16,-3],[26,31]],[[2860,9180],[10,-6],[-13,-11],[-6,16],[9,1]],[[2315,9189],[14,0],[-4,-11],[-10,11]],[[2342,9191],[8,-12],[-14,-3],[6,15]],[[3114,9197],[-2,-10],[-10,3],[12,7]],[[2834,9196],[-16,-12],[-9,1],[20,15],[5,-4]],[[2787,9204],[9,-8],[-21,-3],[4,-8],[-24,10],[16,8],[16,1]],[[2294,9191],[5,5],[10,-12],[22,-14],[6,-20],[18,-3],[-17,-6],[-13,-15],[-33,4],[-9,7],[-25,7],[-3,8],[-11,-6],[-11,11],[33,17],[-4,16],[12,-9],[-6,16],[10,11],[18,-11],[-2,-6]],[[3004,9275],[14,-3],[-20,-12],[-5,8],[11,7]],[[2924,7774],[-11,-4],[-19,-25]],[[2894,7745],[-6,-7],[-19,-10],[-11,-18],[-17,9],[-5,-3],[-30,-8],[-17,-15],[-5,-17],[13,-6],[7,4]],[[2804,7674],[-1,-9]],[[2803,7665],[5,-11],[-36,-7],[-9,-13],[-11,6],[-12,-1],[-32,-36],[-12,-2],[-5,4],[0,12],[5,4],[13,-1],[1,10],[-6,4]],[[2704,7634],[5,9],[1,17]],[[2710,7660],[8,4],[12,20],[-1,38],[4,14],[9,16],[0,12],[-12,25],[11,0],[1,-14],[14,-17],[18,-14],[0,17],[4,6],[6,-5],[-9,17],[2,14],[-10,3],[-10,32],[-12,0],[-10,8],[-39,6],[-3,0],[-30,10]],[[2663,7852],[0,10],[-10,-4]],[[2653,7858],[-3,4],[4,24],[-8,1],[3,23],[-11,14],[5,20],[-25,0],[-8,9],[-12,39],[-22,-2],[-24,14],[-2,-22],[-7,-2],[3,15],[-6,-2],[-5,-26],[-5,-3],[3,16],[-10,-5],[-5,-22],[-7,-6]],[[2511,7947],[-9,-1],[-4,7],[-20,0],[-2,7],[-16,-11],[-8,4],[-10,14],[-8,-7],[-3,12],[-14,11],[-22,-6],[-3,7],[-17,3],[-6,5],[-4,31],[-9,3],[0,-22],[-79,0],[-80,0],[-55,0],[-79,0],[-79,0],[-49,0],[-49,0],[-80,0],[-61,0],[-74,0],[-81,0]],[[1590,8004],[-8,0]],[[1582,8004],[-1,0]],[[1581,8004],[-7,20],[2,14],[-8,-11],[-12,8],[-1,15],[-14,0],[-6,8],[3,18],[-3,5],[-9,0],[-20,12],[-13,-2],[6,17],[-14,1],[-10,6],[-4,-6],[-14,11],[-8,12],[9,23],[13,3],[-9,3],[-10,-15],[-4,12],[0,14],[19,25],[0,13],[-12,-16],[-7,-5],[-8,17],[-4,-12],[4,26],[-10,9],[-10,34],[10,-5],[-8,12],[5,21],[-17,-20],[-3,-14],[-21,32],[-4,26],[-6,-3],[1,17],[7,4],[10,33],[-5,0],[-4,28],[2,8]],[[1387,8402],[0,0]],[[1387,8402],[-1,12],[-9,1],[-9,13],[-10,3],[-14,11],[-7,0],[0,11],[-7,4],[2,10],[-29,56],[-20,40],[-12,8],[-4,12],[-21,22],[3,8],[-13,13],[-25,-11],[-2,-20],[-27,-20],[-5,17],[-43,50],[3,16],[-17,-1],[-9,-8],[-12,6],[-16,1],[0,538]],[[1083,9194],[29,-2],[23,-6],[15,-16],[50,-21],[26,2],[-3,18],[20,5],[-1,8],[29,8],[12,-5],[-9,-9],[24,4],[10,14],[16,0],[45,28],[22,-4],[5,11],[9,-11],[-45,-25],[-27,-6],[-3,-10],[-18,-6],[-4,-15],[-9,3],[-4,-11],[24,-3],[-11,15],[29,13],[15,12],[12,-9],[14,21],[35,9],[0,-10],[23,16],[-2,9],[22,7],[-13,3],[0,17],[23,-16],[14,-32],[15,-16],[20,-9],[9,4],[-8,12],[10,9],[8,18],[10,-1],[-2,-19],[12,0],[-13,-19],[24,-2],[14,8],[6,20],[36,-3],[23,-10],[23,-16],[31,-5],[23,-13],[57,-13],[-9,8],[11,4],[38,-17],[18,-18],[-3,-9],[-26,2],[-8,-18],[-9,-3],[47,-13],[40,-1],[3,4],[36,1],[22,14],[13,-16],[18,0],[7,-21],[6,15],[20,-23],[-7,-21],[25,-29],[-12,23],[1,18],[16,-14],[-4,15],[-9,8],[0,15],[-12,12],[7,19],[35,18],[21,5],[1,13],[-24,-7],[2,-8],[-22,-7],[-16,5],[7,-11],[-22,-3],[-2,12],[-10,-3],[14,20],[27,5],[31,14],[12,-3],[9,-11],[4,-20],[19,-6],[4,-12],[20,-1],[9,8],[5,-11],[27,-14],[21,-3],[23,10],[26,-1],[15,-7],[25,5],[22,-12],[12,11],[-16,12],[-10,-9],[-10,10],[3,9],[-11,11],[27,1],[-8,9],[21,-3],[5,-12],[18,3],[-11,-15],[26,12],[-16,-41],[11,-19],[10,8],[11,-20],[4,16],[-15,26],[7,19],[17,-3],[18,14],[18,33],[-10,8],[-5,-13],[-15,0],[11,34],[18,-2],[2,13],[-22,-5],[-9,14],[-7,-7],[-25,10],[-21,22],[1,14],[9,15],[-12,9],[5,30],[14,6],[8,-7],[5,12],[-13,4],[18,9],[2,13],[18,3],[4,-19],[7,7],[32,-24],[4,-30],[37,-41],[-25,2],[-4,-6],[18,-3],[-25,-18],[20,-9],[18,7],[10,-9],[19,-1],[-23,-12],[14,-11],[6,-20],[-2,-17],[9,-12],[11,12],[4,31],[11,15],[9,1],[28,-27],[5,-32],[-16,2],[1,-19],[8,-19],[17,-15],[-1,-14],[15,7],[-3,7],[14,-1],[1,20],[17,23],[7,37],[25,0],[-10,13],[11,7],[-20,11],[-2,10],[6,23],[7,-4],[20,5],[16,-9],[30,-1],[15,-23],[22,-5],[-6,-12],[-12,-5],[20,-5],[1,-10],[-20,-13],[-17,6],[-2,-7],[18,-11],[-5,-13],[26,-30],[-7,-27],[-13,-1],[-17,-24],[-12,-1],[-10,-11],[-25,21],[16,-30],[-4,-2],[-19,14],[4,-14],[-25,7],[-5,17],[-19,-5],[-18,2],[7,-12],[19,-9],[-16,-15],[-3,-13],[-23,-20],[-16,0],[-17,15],[-31,20],[-10,-3],[-30,2],[32,-7],[14,-11],[11,-16],[56,-5],[2,-11],[-16,-20],[-14,-27],[-18,-15],[-24,1],[-12,10],[4,-14],[-10,-17],[-21,-3],[-19,10],[-14,0],[-37,16],[-8,-2],[11,-10],[4,5],[31,-11],[-10,-11],[18,11],[6,-8],[25,-12],[2,-18],[-22,-16],[-19,5],[-10,-3],[15,-16],[-19,5],[-2,-20],[-8,-12],[-18,-12],[11,-4],[-17,-12],[-19,-60],[-8,-31],[3,-40],[-3,-17],[13,-17],[3,4],[29,-1],[2,-15],[10,-37],[9,-24],[-3,-25],[12,2],[30,12],[15,-3],[15,-12],[30,-8],[12,-15],[13,-10],[7,-15],[10,-12],[11,-1],[32,-17],[21,-20],[12,-3],[19,5],[15,-6],[12,1],[18,-9],[3,-14],[-6,-25],[0,-12],[8,-17],[-2,-23],[3,-13],[-5,-19],[20,-28],[6,-21],[10,-5],[15,-30],[1,-10],[19,-11],[1,16],[10,15],[11,-20],[6,11],[-9,15],[13,19],[2,22],[-6,4],[1,19],[-5,0],[-5,42],[-2,32],[-7,2],[-6,25],[-5,1],[39,22],[16,14],[19,23],[12,21],[4,16],[0,44],[-8,34],[-9,20],[-24,23],[-13,16],[-2,16],[22,21],[-1,20],[14,6],[-1,13],[-7,2],[-7,35],[6,6],[-16,2],[10,15],[2,20],[6,5],[-13,13],[-4,34],[18,16],[21,-4],[32,-14],[34,-1],[14,12],[18,-9],[17,-14],[-1,-8],[30,-19],[-9,-10],[14,-16],[23,-5],[11,2],[2,-11],[12,-1],[2,12],[5,-18],[-12,-15],[6,-26],[2,-26],[-6,-6],[3,-9],[11,-2],[-8,-8],[2,-18],[-19,-7],[10,-3],[15,12],[13,1],[11,-6],[5,-24],[7,10],[9,-20],[28,15],[6,21],[10,-9],[5,18],[7,3],[-2,12],[8,8],[-3,22],[8,2],[7,25],[14,2],[0,-12],[9,-6],[-1,-17],[6,0],[5,-15],[12,-13],[-11,-9],[13,3],[1,-13],[7,1],[4,-11],[-9,-11],[16,0],[-2,-19],[15,-12],[7,-20],[-14,-11],[10,2],[6,-6],[-6,-7],[18,-7],[-8,-18],[-7,0],[5,-13],[-9,-4],[11,-10],[-12,-2],[5,-5],[14,1],[-3,-13],[10,-2],[1,-7],[22,-5],[-4,-5],[3,-16],[-4,-16],[20,12],[-2,-10],[10,-5],[10,9],[6,-22],[30,-6],[14,-10],[-9,-11],[-15,-1],[-1,-6],[-33,-12],[21,5],[3,-3],[-30,-15],[-13,-3],[2,-15],[-11,-14],[38,24],[6,15],[19,9],[-5,7],[24,-1],[11,-22],[-12,-11],[6,-9],[9,15],[30,-19],[4,-15],[-6,-7],[5,-9],[-7,-12],[8,-9],[4,-17],[-8,-15],[-20,-17],[-10,-13],[-8,5],[-25,-14],[-8,3],[-7,-12],[-8,-5],[1,-12],[-13,-8],[0,-8],[-11,-6],[-3,-10],[-38,-3],[-10,-5],[-6,7],[-51,4],[-26,-2],[-37,0],[-5,-5],[-8,5],[-19,-25],[-3,-23],[-4,-6],[-19,-3],[-4,-11],[-24,-18],[-10,-28],[-7,-9],[-19,14],[-5,-2],[22,-14],[-5,-20],[-10,-17],[-6,-3],[-6,-17],[-17,-23],[-15,-1],[-21,-24],[-10,-4],[-7,-18],[-12,-11],[-7,-11],[-6,-2],[5,-8],[-15,-12],[-6,-8]],[[1827,9404],[6,-29],[-17,-11],[32,3],[-4,6],[17,15],[49,-17],[-3,-15],[17,6],[18,-8],[8,4],[-26,29],[23,-2],[24,-23],[11,-1],[-1,-11],[13,-38],[6,-4],[21,15],[-15,14],[-9,45],[0,25],[29,-10],[8,7],[26,-17],[18,-30],[4,-24],[19,-29],[-7,-28],[16,-17],[25,-16],[8,1],[35,-23],[16,4],[4,-24],[-13,-6],[-4,13],[-5,-14],[-19,11],[-14,-26],[22,5],[-2,-17],[9,-10],[-19,-8],[-24,-5],[-49,6],[4,12],[-40,5],[-4,18],[-10,-16],[-17,-13],[-28,-6],[-12,-9],[-56,-11],[-59,-3],[-16,19],[2,22],[-18,5],[-26,-3],[-22,4],[-18,9],[0,6],[-18,12],[-4,14],[39,12],[41,5],[53,-7],[9,7],[22,-3],[-18,14],[-19,2],[-18,8],[-58,-6],[-19,4],[-40,-1],[-19,23],[17,8],[41,11],[13,11],[-48,-10],[-21,6],[13,5],[-36,7],[0,11],[16,17],[13,3],[-13,15],[34,25],[50,16],[27,11],[10,-5]],[[2094,9405],[-16,-22],[-8,1],[-18,19],[-26,12],[13,13],[42,1],[16,-10],[-3,-14]],[[2768,9430],[25,-7],[37,2],[19,-6],[32,-26],[-1,-17],[-52,5],[-28,-9],[-22,6],[-4,22],[-21,5],[1,25],[14,0]],[[2595,9436],[41,-3],[4,-8],[-30,-21],[-18,-26],[10,-20],[-3,-28],[9,-14],[19,-16],[14,-5],[-16,-13],[-13,0],[-8,-10],[21,10],[18,-2],[8,17],[-4,14],[-16,-1],[-8,13],[2,21],[16,1],[-18,12],[-3,25],[14,2],[-6,11],[26,-5],[-19,15],[63,24],[37,-1],[11,-27],[14,-5],[0,-14],[10,-10],[-26,-24],[18,11],[-11,-18],[5,-13],[12,5],[16,25],[23,-13],[11,14],[26,14],[67,-15],[7,-14],[-14,-14],[33,4],[0,-15],[-32,-17],[31,12],[19,-1],[-10,-9],[-4,-17],[12,19],[3,-12],[15,-7],[13,23],[32,-12],[8,-11],[-10,-12],[-11,3],[-13,-14],[4,-6],[25,7],[4,9],[15,2],[3,-9],[-13,-17],[30,15],[-3,-16],[15,10],[31,-11],[-10,-16],[-31,-9],[32,3],[-1,-16],[12,9],[6,14],[24,-23],[2,-12],[-26,3],[-15,-11],[19,-8],[19,1],[16,-11],[-2,-8],[-26,2],[-15,8],[-22,3],[22,-8],[13,-10],[-8,-4],[5,-11],[-43,2],[33,-6],[-9,-8],[29,-2],[23,-6],[-10,-6],[8,-11],[37,-12],[12,7],[-2,-12],[18,-4],[13,-28],[-21,-10],[47,10],[-7,-18],[22,-5],[5,9],[18,-10],[10,-16],[-20,-10],[14,-3],[-30,-8],[14,-7],[-7,-17],[-15,-3],[7,-7],[-17,-1],[-7,16],[3,-21],[-9,-4],[9,-9],[-5,-24],[-17,9],[-9,14],[-1,-9],[-18,16],[-1,14],[-9,5],[19,17],[-31,-5],[-2,9],[-22,20],[2,8],[-13,-6],[-6,-11],[-16,12],[7,-15],[16,-12],[-1,-7],[-20,-1],[-9,18],[-2,-18],[12,-16],[14,3],[-2,-10],[10,-2],[10,-39],[1,14],[31,-16],[-3,-16],[17,0],[-10,-10],[11,-14],[11,-5],[-9,-11],[12,-6],[0,-25],[-7,5],[-4,18],[-2,-14],[10,-29],[-17,5],[8,-19],[-7,-5],[-1,13],[-12,11],[-12,-3],[-13,13],[-5,-5],[-20,21],[-6,12],[-1,-16],[-27,24],[-8,-3],[23,-33],[17,-6],[17,-21],[5,0],[16,-26],[7,-2],[-9,-20],[-30,16],[-35,7],[-12,7],[-25,24],[-9,-2],[-38,22],[-5,14],[15,10],[-16,12],[-2,-7],[-15,9],[-13,14],[-15,33],[-20,-9],[4,15],[-14,-6],[-5,-14],[-30,14],[-5,-12],[-24,-12],[-14,2],[-18,11],[-4,27],[5,9],[18,8],[-3,15],[21,-2],[25,-11],[9,-9],[-6,-7],[10,-12],[-2,16],[-16,17],[23,-3],[1,7],[15,-3],[11,12],[19,-5],[-7,19],[-8,4],[-13,18],[41,32],[5,19],[15,6],[-4,22],[-12,18],[-4,23],[-23,5],[3,18],[-19,-6],[-13,16],[2,15],[-9,-11],[-10,2],[-32,-14],[0,20],[28,3],[1,9],[-30,19],[-15,5],[10,9],[-23,0],[0,21],[-20,2],[-10,12],[-21,2],[21,-15],[3,-13],[-29,-7],[-6,8],[-39,3],[15,-14],[-9,-2],[-14,13],[-15,-11],[-25,12],[-15,-3],[-31,3],[-5,4],[-39,2],[-21,21],[1,-11],[-47,11],[-21,25],[9,7],[22,-4],[27,0],[-15,18],[-6,-3],[-47,6],[-5,7],[5,17],[-9,11],[5,24],[25,52],[36,27],[33,8]],[[2227,9438],[17,-9],[57,6],[4,-12],[-12,-6],[8,-7],[-19,-7],[-19,-16],[35,-3],[9,-16],[12,3],[5,-18],[-9,-6],[3,-27],[-25,-13],[-26,2],[9,-8],[-13,-13],[-19,3],[-13,25],[-27,24],[-21,3],[-34,24],[-4,9],[14,16],[11,-4],[16,-18],[24,2],[10,8],[-4,14],[-11,1],[-28,20],[11,7],[16,-9],[3,8],[-13,12],[33,5]],[[2287,9448],[-13,-11],[-23,-4],[-12,7],[34,10],[14,-2]],[[2423,9449],[18,-8],[8,5],[45,-7],[-28,-33],[-12,-21],[-14,-14],[-33,4],[-13,-4],[10,-16],[-18,-22],[-29,-6],[-2,33],[-11,9],[-2,60],[11,2],[1,14],[44,9],[25,-5]],[[1623,9476],[28,-12],[41,-10],[46,4],[58,-41],[-3,-6],[-28,-9],[-76,-37],[-3,-15],[-14,-8],[-13,1],[-3,-32],[-7,-11],[-22,-7],[-9,5],[-11,-12],[-27,-10],[-26,36],[-34,14],[-14,0],[0,10],[14,22],[9,4],[-4,18],[17,2],[-12,9],[14,21],[16,15],[-10,9],[-14,28],[87,12]],[[2118,9518],[-3,-12],[-30,4],[15,17],[18,-9]],[[2378,9537],[25,-20],[2,-24],[-5,-11],[-41,1],[-43,18],[23,30],[25,8],[14,-2]],[[2325,9539],[-16,-17],[-5,9],[21,8]],[[2164,9558],[-14,-12],[-20,-1],[7,9],[27,4]],[[2380,9546],[-17,10],[11,3],[6,-13]],[[2157,9563],[-38,-10],[11,8],[27,2]],[[1732,9567],[5,-3],[-22,-28],[-10,-5],[-22,5],[20,18],[29,13]],[[2805,9567],[0,-15],[-16,-3],[16,18]],[[2149,9575],[-6,-11],[-43,0],[2,8],[47,3]],[[2113,9595],[25,-12],[-38,-5],[-7,16],[20,1]],[[2266,9598],[21,-11],[7,-58],[-18,1],[14,-20],[-11,-7],[-47,-3],[-20,3],[-11,19],[33,20],[-52,-5],[-33,-7],[2,14],[20,10],[-6,28],[18,3],[35,-31],[7,21],[-30,12],[15,9],[23,0],[13,-10],[20,12]],[[2213,9601],[-38,-8],[20,9],[18,-1]],[[2508,9589],[-10,-2],[-15,15],[17,6],[8,-19]],[[1981,9607],[-3,-11],[20,-20],[-11,-11],[22,-7],[-10,-10],[27,5],[12,10],[31,-10],[1,-18],[-15,-30],[-28,-8],[-21,7],[-19,-7],[-5,8],[-25,-11],[-22,-4],[-24,-12],[-34,-10],[-29,0],[-27,17],[52,17],[27,0],[19,13],[-36,-6],[-3,5],[-44,-9],[-5,24],[-10,-23],[-35,-6],[-55,16],[12,13],[30,0],[31,14],[-30,-8],[-32,0],[10,12],[57,5],[-39,0],[-12,12],[23,10],[10,12],[36,1],[7,-17],[28,5],[33,-21],[14,-22],[62,-1],[6,7],[-32,17],[18,11],[-30,11],[18,11],[15,19],[15,0]],[[1840,9610],[3,-10],[-34,3],[31,7]],[[2354,9618],[44,-6],[16,-16],[46,3],[26,-13],[-26,0],[59,-9],[-2,-7],[-52,-1],[30,-6],[28,-18],[2,-16],[14,11],[11,-8],[26,6],[13,-9],[59,10],[21,10],[23,-5],[16,6],[39,-3],[40,-18],[6,-11],[-25,-15],[16,1],[10,-9],[-23,-7],[-1,-11],[-29,0],[-12,-6],[-33,5],[-7,16],[-11,-16],[-84,-5],[-53,2],[2,20],[-21,-15],[-21,-3],[-30,10],[-10,-4],[-19,9],[1,10],[-13,14],[11,38],[-14,8],[-14,21],[-17,-6],[-37,-3],[6,7],[-27,3],[-11,14],[-18,4],[15,6],[-15,7],[13,6],[32,-1]],[[1774,9644],[20,-9],[-25,-7],[-2,-15],[13,-14],[-30,-8],[-9,-17],[-20,9],[5,24],[-19,-6],[-1,-22],[-34,-26],[-19,-3],[-7,19],[-15,-12],[-46,8],[9,15],[31,5],[9,14],[22,7],[15,17],[27,15],[26,1],[18,-6],[32,11]],[[2491,9653],[17,-10],[-11,-14],[-30,11],[0,13],[24,0]],[[2083,9641],[18,-11],[-11,-7],[-23,12],[-14,25],[13,0],[17,-19]],[[2350,9662],[51,0],[13,-7],[-11,-10],[-70,0],[-6,13],[23,4]],[[2196,9660],[-42,-1],[0,9],[21,1],[21,-9]],[[1824,9675],[20,-11],[-15,-6],[-27,14],[22,3]],[[1955,9679],[-35,-12],[21,-5],[-3,-16],[-52,-10],[-31,11],[3,23],[51,10],[46,-1]],[[1933,9718],[31,-15],[-4,-11],[-50,5],[-52,-7],[-5,8],[40,8],[40,12]],[[2308,9715],[18,-10],[40,-9],[-15,-7],[9,-16],[-51,-11],[-22,18],[22,2],[-33,10],[-10,12],[7,18],[35,-7]],[[2120,9752],[22,-6],[10,-21],[25,12],[58,-29],[-8,-16],[22,-13],[0,-11],[-25,-6],[-19,5],[-12,19],[-45,10],[-50,-6],[-10,18],[38,-3],[1,15],[-18,11],[-27,-9],[10,11],[-26,2],[4,16],[50,1]],[[2237,9796],[21,-8],[-5,-17],[-36,22],[20,3]],[[2423,9866],[56,-44],[40,-1],[1,-15],[22,9],[22,-2],[19,-26],[-9,-26],[20,9],[23,-2],[24,-19],[-46,-14],[-69,-50],[-26,25],[15,-26],[-24,10],[0,-11],[-49,4],[-22,17],[34,3],[-45,2],[-28,21],[25,12],[79,3],[-58,1],[0,12],[-36,-11],[-3,7],[-33,-6],[-14,15],[27,4],[-31,3],[-21,14],[-4,14],[53,-6],[21,9],[-36,-4],[-32,9],[14,17],[41,2],[7,8],[-33,3],[17,15],[39,0],[7,9],[-28,8],[41,-2]],[[3064,9969],[92,-13],[-63,-13],[33,0],[64,14],[63,-22],[36,-2],[8,-17],[-85,-27],[-75,-6],[11,-7],[-78,-18],[137,21],[-4,-9],[-119,-45],[-9,-11],[-28,-4],[-23,-32],[-31,-8],[-32,7],[7,-13],[-52,-10],[-85,-2],[20,-4],[80,-3],[-1,-11],[-35,3],[-9,7],[-57,-2],[56,-5],[-45,-3],[55,-3],[-14,-6],[38,-1],[8,-15],[-22,-5],[-30,2],[38,-10],[-14,-14],[-35,-13],[-43,0],[19,-17],[-14,-13],[-47,-6],[-38,9],[-17,14],[5,-14],[18,-8],[57,-7],[-10,-14],[19,-6],[18,11],[7,-22],[-21,-10],[-5,7],[-22,-15],[-42,-11],[8,17],[-36,5],[-6,-7],[-40,2],[-13,10],[-6,-17],[-23,-1],[-61,10],[-4,-7],[-37,4],[-15,10],[-1,17],[33,15],[23,-1],[15,8],[-21,5],[-15,25],[29,7],[27,-6],[22,-23],[54,-3],[27,35],[-39,-27],[-38,10],[15,39],[-21,-13],[-21,5],[-35,-4],[1,19],[24,20],[44,7],[35,-5],[56,1],[-53,4],[-30,6],[11,9],[-23,27],[-37,6],[0,32],[75,-4],[67,-35],[-7,16],[-44,23],[80,9],[54,8],[-44,0],[94,17],[-62,-3],[-2,9],[57,26],[-37,-9],[-40,-28],[-44,-11],[-53,-5],[27,11],[-48,2],[1,-13],[-55,-1],[-26,5],[26,19],[85,11],[-93,-8],[-33,-21],[-58,14],[99,12],[30,12],[-43,-8],[-98,-8],[-15,8],[12,11],[45,14],[-57,-12],[12,13],[-22,4],[-21,-8],[-14,7],[27,11],[83,15],[87,-6],[-56,12],[43,5],[-12,10],[30,1],[59,-23],[-11,12],[82,-19],[-75,24],[18,17],[41,-8],[-28,15],[47,-2],[16,12],[41,-3],[44,-11],[-31,15],[35,4],[54,-3],[10,-8],[24,12],[91,2]],[[5255,7927],[0,0]],[[5255,7927],[0,0]],[[5255,7927],[10,-8]],[[5264,7905],[2,-12]],[[5290,7882],[-2,-13],[-10,-7],[4,-15],[-6,6],[-12,-4],[-2,10],[-5,0],[-1,-14],[-5,-6],[-1,-18],[-7,10],[2,5],[-11,9],[0,13],[-10,-11],[1,-8],[-9,-12],[-8,4],[-13,-4]],[[5195,7827],[-7,15],[0,14]],[[5188,7856],[-5,6],[-8,-4],[-3,-9]],[[5172,7849],[-4,7],[2,10],[8,9],[0,11],[7,4],[12,28],[8,-5],[5,10]],[[5210,7923],[14,-1],[9,5],[4,9],[9,-9],[9,0]],[[3101,2016],[-9,-10],[13,-7],[6,-18],[-2,-7],[-8,14],[-15,-2],[2,19],[-18,-5],[-1,-4],[-14,10],[3,5],[39,9],[4,-4]],[[3116,2021],[14,-1],[7,-9],[-5,-12],[-7,7],[-9,-6],[-8,1],[-2,15],[10,5]],[[3041,2018],[7,-9],[-19,2],[-1,8],[13,-1]],[[3069,2021],[8,-5],[-19,-3],[-1,8],[12,0]],[[3013,2074],[7,-1],[8,-15],[-5,-7],[-8,10],[-4,-3],[-2,16],[4,0]],[[3003,2080],[6,-2],[-5,-24],[-11,16],[0,7],[10,3]],[[3044,2081],[2,-8],[-9,4],[3,-17],[-9,10],[-1,10],[8,1],[-2,10],[6,7],[2,-17]],[[2972,2103],[2,3],[22,-21],[-6,-2],[-14,-18],[4,15],[-9,1],[-7,-7],[1,12],[-8,1],[3,17],[12,-1]],[[2925,2147],[15,-16],[8,0],[21,-22],[-10,3],[-11,14],[-13,-1],[-10,22]],[[3093,2028],[0,-1]],[[3093,2021],[-12,-3],[-17,9],[-13,-4],[-23,10],[-10,10],[-17,-8],[-1,12],[8,-7],[10,12],[7,-9],[6,12],[-2,12],[20,-15],[7,5],[13,-4],[10,-11],[3,8],[-28,18],[-4,19],[24,15],[-1,8],[-25,-6],[-6,8],[1,17],[9,1],[0,8],[12,7],[2,13],[6,4],[5,-11],[16,0]],[[2952,2165],[-2,-17],[-9,0],[-2,7],[13,10]],[[2921,2176],[8,-2],[-6,-7],[-2,9]],[[2938,2182],[8,-11],[-5,-6],[-3,17]],[[2920,2209],[3,-4],[-3,-19],[-5,7],[5,16]],[[2943,2211],[3,-10],[-9,5],[6,5]],[[2925,2234],[1,-8],[-9,1],[8,7]],[[2931,2257],[2,-13],[-14,-1],[-1,9],[9,-2],[4,7]],[[2924,2263],[1,-11],[-8,7],[7,4]],[[2906,2275],[8,0],[-10,-15],[2,15]],[[2931,2276],[3,1],[5,-22],[-5,0],[-6,13],[3,8]],[[2908,2302],[14,-5],[0,-6],[-18,-9],[1,12],[7,-5],[-4,13]],[[2903,2329],[8,-14],[-12,3],[4,11]],[[2914,2359],[5,-2],[0,-12],[-9,10],[4,4]],[[2906,2359],[2,-6],[-9,-5],[7,11]],[[2925,2377],[5,0],[2,-27],[-3,-27],[3,-13],[-9,-10],[-4,6],[1,25],[-4,-21],[-7,11],[-2,25],[13,-3],[2,12],[-7,18],[10,4]],[[2906,2392],[1,-9],[-7,-5],[-2,13],[8,1]],[[2924,2406],[4,-8],[2,-18],[-14,4],[-1,6],[9,16]],[[2913,2413],[9,-4],[-1,-11],[-7,-2],[-5,19],[4,-2]],[[2907,2415],[7,-32],[-6,0],[0,16],[-5,-5],[-3,20],[7,1]],[[2921,2430],[3,-17],[-11,6],[-1,6],[9,5]],[[2945,2427],[4,-6],[-19,2],[7,7],[8,-3]],[[2914,2436],[-3,-8],[-5,6],[8,2]],[[2924,2545],[-1,-11],[-10,7],[11,4]],[[2936,2556],[-5,-9],[0,15],[5,-6]],[[2955,2556],[-6,-2],[3,11],[3,-9]],[[2948,2591],[3,-16],[-7,2],[-6,12],[10,2]],[[2946,2594],[-9,-4],[3,9],[6,-5]],[[2946,2613],[2,-4],[-11,-6],[-4,10],[13,0]],[[2974,2623],[6,-4],[-12,-23],[-4,-1],[-5,16],[7,2],[-1,11],[9,-1]],[[2948,2662],[3,-7],[-11,0],[8,7]],[[2945,2775],[11,1],[5,-30],[-8,-2],[-4,-15],[9,-10],[-6,-5],[6,-13],[-7,-2],[2,-14],[-17,3],[-3,4],[7,21],[-1,36],[4,8],[2,18]],[[3098,2168],[-21,9],[-7,-4],[-3,-12],[-8,-1],[-27,-20],[-3,-19],[-1,-36],[-7,-5],[-24,11],[-10,15],[5,11],[15,1],[10,5],[6,18],[-5,1],[-22,-19],[-5,6],[-7,-20],[1,-10],[-20,22],[9,0],[-1,20],[14,1],[13,9],[14,0],[-2,5],[-21,3],[-19,-19],[1,-11],[-6,-4],[-8,6],[6,5],[-9,6],[9,1],[2,11],[-11,-5],[0,29],[6,-2],[15,16],[9,-1],[0,13],[-7,-6],[-15,13],[10,-15],[-6,-4],[-4,-13],[-8,7],[0,17],[-9,7],[-1,13],[6,2],[1,13],[-6,-6],[-7,4],[-1,17],[11,-2],[-1,9],[-6,-4],[-5,21],[-13,14],[9,8],[1,26],[3,6],[-5,9],[0,44],[10,11],[-11,13],[-3,13],[21,-4],[6,-13],[5,5],[-10,27],[-1,-6],[-21,1],[-2,12],[9,-2],[-7,11],[6,12],[5,0],[6,11],[-6,2],[-3,12],[-11,0],[-1,-5],[-11,14],[4,11],[-13,-16],[2,-11],[-6,-3],[-4,19],[13,13],[3,10],[12,11],[0,11],[14,3],[6,-14],[-1,-8],[7,-4],[-7,-18],[4,-3],[5,16],[4,49],[8,10],[-3,20],[4,-1],[14,13],[1,15],[-14,13],[4,39],[-1,17],[9,12],[-3,14],[0,18],[5,2],[-3,15],[5,3],[4,-15],[0,27],[-8,-3],[-4,6],[8,12],[-10,13],[-3,-13],[-12,-6],[-7,4],[2,7],[-5,11],[-2,27],[5,20],[1,37],[9,7],[4,19],[1,19],[-9,38],[2,30],[-6,26],[1,22],[9,-3],[5,16],[0,18],[4,-4],[5,42],[6,9],[-1,15],[6,18],[5,6],[1,15],[4,12],[1,31],[6,21],[4,4],[1,12],[-4,23],[6,5],[4,37],[-4,9],[1,25],[-5,52],[0,24],[2,12],[7,5],[2,44],[-5,10],[-1,19],[6,11],[4,20],[0,18],[3,22],[4,2],[-1,30],[4,5],[2,15],[2,41],[-2,11],[2,19],[6,8],[-1,24],[-2,5],[1,62],[3,17],[-6,0],[1,25],[6,1],[4,33],[0,23],[2,25],[2,3],[0,24],[-3,10],[0,37],[2,6],[-1,31],[-5,51],[0,21],[-2,8]],[[3044,4127],[12,4],[4,9],[0,26],[9,9]],[[8073,6343],[8,-9],[1,-20],[-9,-13],[-7,-43],[-4,0],[-5,-15],[-9,-1],[-2,-11],[-14,6],[-14,12],[-1,42],[10,19],[8,9],[-1,10],[7,-3],[5,9],[8,-6],[10,10],[8,-9],[1,13]],[[8066,6398],[4,-5],[-8,-2],[4,7]],[[8393,6916],[2,-7],[-8,4],[6,3]],[[8386,6994],[-10,4],[-11,15],[6,2],[9,-11],[8,-5],[-2,-5]],[[8689,7778],[-2,10],[-10,6],[-11,-7]],[[8666,7787],[-4,7],[-12,-22],[-11,-4],[0,-9],[6,-40],[-2,-28],[3,-6],[-5,-31],[-19,-10],[3,-13]],[[8625,7631],[-8,13],[0,9],[-9,7],[-4,-13],[-1,-19],[-14,-5],[-1,-10],[-7,-10],[-26,-3],[8,-20],[-3,-13],[-30,7],[-2,12],[-9,1],[-12,-34],[-9,-16],[-6,0],[-8,-10],[-16,-14],[-14,-21]],[[8454,7492],[-5,-13],[-6,-5],[-9,3],[-11,-3],[-28,-28],[-3,-9],[-8,-11],[-3,5],[-7,-13],[-10,-4],[0,12],[15,8],[-10,29],[6,0],[-2,11],[12,12],[11,27],[-3,13],[-22,14],[-12,-7],[0,-7],[-10,-13],[-4,-16],[-14,-7],[-17,-19],[-1,-19],[-10,-15],[-10,0],[-7,-8],[-11,11],[-6,-6],[-5,-28],[5,-14],[10,-13],[14,-4],[7,5],[12,-25],[-7,-1],[-2,-21],[10,-12],[13,1],[2,11],[10,10],[3,9],[12,10],[11,-8],[0,-6],[9,-7],[34,-4],[-7,-15],[3,-13],[-9,-5],[-5,9],[-28,-23],[-6,3],[4,-11],[-7,-1],[0,-17],[-11,-5],[2,8],[-8,2],[2,-13],[-7,-22],[-8,-4],[-7,-26],[-5,-3],[1,-16],[12,-14],[17,-12],[6,-38],[11,-36],[-1,-21],[15,-16],[0,-13],[11,-10],[4,-16],[-8,1],[-9,9],[-10,-3],[-4,11],[-11,2],[-5,-7],[-7,4],[-3,16],[-6,2],[3,-11],[11,-13],[16,4],[2,-9],[7,-5],[8,-15],[9,-9],[6,-12],[2,-13],[-9,-2],[-12,-10],[-8,-11],[-5,-15],[6,-2],[6,9],[6,-1],[8,-19],[13,-6],[-13,-19],[7,5],[0,-22],[-4,-6],[-5,3],[1,-27],[-5,-3],[5,-23],[-5,2],[-4,-10],[-3,12],[-9,-28],[-8,-17],[-3,-23],[-6,-4],[-1,-11],[-9,-7],[-1,-8],[-5,9],[-4,-6],[5,-6],[2,-11],[-5,4],[2,-10],[-5,-15],[5,-3],[-3,-18],[-4,0],[6,-17],[-11,10],[-4,-8],[5,-14],[-9,1],[-3,-9],[3,-10],[-10,0],[4,-9],[-3,-8],[-6,3],[-5,-5],[-2,8],[-5,-13],[3,-11],[-5,-4],[-1,-10],[-6,-1],[-7,-13],[-4,1],[-5,-14],[-6,5],[0,-9],[-10,-21],[-1,-10],[-6,1],[-13,-12],[-7,6],[0,-11],[-14,8],[-5,-13],[-6,11],[-5,-7],[4,-8],[-4,-3],[-2,9],[-5,-3]],[[8172,6482],[-4,-2]],[[8168,6480],[-7,-3],[-2,17],[-3,-1],[-2,15],[-6,-8],[6,-17],[0,-15],[-2,-9],[-10,20],[7,-19],[-10,-14],[-5,1],[-13,-12],[-10,3],[-11,-15],[-25,-8],[-3,-10],[-6,-1],[-7,-13],[5,-7],[-1,-13],[7,-9],[-4,-10],[-13,-2],[-1,10],[-7,25],[3,28],[5,0],[0,8],[-8,1],[-2,14],[-1,-16],[-12,1],[0,6],[-9,2],[-9,13],[2,-16],[-6,7],[0,-8],[-9,-5]],[[7999,6420],[-7,10],[-9,-4],[-12,14],[1,6],[-10,2],[0,14],[-4,7],[0,14],[5,0],[0,16],[-14,0],[-18,12],[-7,14],[-14,-13],[1,-9],[-14,-14],[-3,8],[-6,-8],[0,-9],[-11,16],[-4,-12],[-5,11],[-7,-21],[-5,10],[-13,9],[-4,-20],[-3,0]],[[7836,6473],[-13,3],[-4,-12],[1,-10],[5,-15],[0,-39],[-5,6],[-9,-2],[-2,20]],[[7809,6424],[-2,12],[-7,-6],[-3,-8],[-8,-4],[-2,5],[-5,-6],[-2,13],[-4,3],[-1,19],[-14,5],[-6,-1],[0,16],[4,5],[-1,14],[6,11],[-5,13],[-8,-2],[-7,5],[2,6],[-6,40],[6,9],[-9,-3],[-13,1],[-14,-14],[-2,5],[5,10],[-1,18],[-4,0],[0,17],[7,8],[-2,12],[4,11],[2,-3],[6,10],[0,13],[6,-3],[3,13],[7,6],[-4,6],[5,33],[0,29],[-2,31],[-7,4],[-1,-9],[-7,20],[0,16],[-8,13],[-9,9],[-5,-18]],[[7703,6808],[-7,9],[-4,-3],[-7,15],[-7,1],[5,6],[-4,17],[-9,21],[-12,-9],[-6,0],[-6,-9],[-9,4],[-9,11],[-8,-6],[-3,-16],[-9,-6],[-6,-8],[-7,-1],[-9,-16],[-12,-14],[0,-11],[-9,-9],[-12,-5],[-8,2]],[[7468,6756],[-4,12],[3,18],[-1,10],[-6,5],[-13,-14]],[[7447,6787],[-8,2],[-4,-5],[-15,1],[-3,7],[-14,9],[-4,-11],[-9,10],[-3,-11],[-2,13],[-6,7],[-16,3],[2,17],[-4,3],[-7,-6],[-9,11],[-7,12],[-2,16],[-5,5],[-13,-7],[-9,26],[-9,2],[-9,15],[-10,8],[-1,15],[-14,5],[-11,-23],[-7,11]],[[7248,6922],[-11,15],[-10,6],[1,9],[-14,15],[-4,-3],[-9,13],[-5,16],[-9,-8],[-2,12],[4,5],[-4,7],[2,15],[-9,14],[-2,20],[9,4],[6,-16],[10,8],[7,13],[-5,14],[0,12],[-7,3],[-8,16],[-3,33],[8,8],[0,7],[-10,12],[-9,5],[-8,41],[1,9],[-7,0]],[[7160,7227],[-18,1],[-11,8]],[[7131,7236],[-5,6],[0,8],[-13,-4],[-4,10],[1,27],[-7,15],[-9,1],[0,7],[-8,7],[-7,-2],[-9,4]],[[7080,7327],[7,10],[-8,13],[3,7],[-5,17],[-1,26],[-12,9],[-6,0],[-2,-9],[-6,3],[-4,16],[4,9],[-6,12],[1,14]],[[7045,7454],[8,8],[-3,9],[4,18],[11,3],[10,14],[3,10],[11,-4],[8,11],[4,-20],[18,4],[9,13],[0,10],[5,15],[18,-2],[11,5],[5,-2],[8,19],[26,23],[27,15],[-1,8]],[[7227,7611],[1,3],[-3,23],[3,11],[9,6],[-7,5],[13,6],[-4,13],[2,7],[-11,37],[0,32],[5,5],[-18,8],[7,9],[21,5],[23,13],[3,-9],[13,3],[7,-7],[4,17],[-11,7],[7,21],[9,47],[5,14],[0,14],[24,-13],[21,1],[4,-10],[13,13],[7,0],[5,9],[-4,41],[4,25],[25,10],[4,10],[0,17],[4,6],[12,-1]],[[7424,8009],[15,5]],[[7439,8014],[-4,-17],[9,-8],[-2,-9],[16,-10],[2,-12],[14,-12],[11,1],[7,-11],[9,3],[11,-21],[0,-11],[15,-34],[1,-11],[-5,-14],[3,-17],[-7,-13],[-2,-16],[6,-17],[6,2],[16,-9],[23,-4],[11,2],[23,-8],[6,-13],[7,0],[14,-19],[9,-5],[11,2],[-2,-16],[6,-3],[9,-41],[12,-19],[2,-11],[23,4],[63,-13],[14,6],[49,-12],[7,-15],[29,-11],[18,-15],[23,7],[0,-12],[13,-5],[6,10],[44,30],[36,10],[20,-3],[20,4],[25,19],[15,29],[18,12],[10,13],[-9,18],[-7,23],[11,33],[5,4],[13,-1],[5,-10],[14,-6],[13,-3],[16,16],[14,24],[6,-3],[23,5],[15,18],[-1,7],[11,24],[6,3],[15,-1],[1,13],[9,-4],[16,12],[12,-3],[3,5],[14,-8],[11,-1],[5,6],[-4,23],[-18,25],[0,6],[-10,7],[-6,11],[-10,5],[-12,-3]],[[8270,7946],[-7,-13]],[[8263,7933],[-5,-6],[-13,13],[-17,-1],[-11,-9],[-7,10],[-2,13],[8,8],[-1,12],[25,79]],[[8240,8052],[16,-12],[14,-6],[12,9],[13,17],[12,1],[7,6],[1,14],[-4,6],[8,27],[7,10],[1,11],[8,23],[16,14],[3,17],[-4,7],[3,13],[-8,5],[-12,-1],[22,37],[12,1],[26,11],[19,0],[11,6],[28,-11],[4,-9],[20,-1],[17,-13],[23,-49],[-3,-10],[6,-23],[6,-9],[1,-20],[10,-19],[1,-23],[7,-6],[-2,-23],[5,-9],[11,-7],[20,2],[7,-14],[13,-3],[9,-7],[11,-17],[12,0],[-4,-13],[6,-8],[2,-13],[-4,-13],[7,-20],[15,2],[13,-5],[17,3],[3,9],[12,14],[12,-1],[6,9],[18,8],[9,-7],[-4,-13],[6,-17],[-8,-19],[-9,-6],[-4,-38],[-5,-13],[2,-9],[-11,-22],[-1,-15],[-8,-8],[-2,-21],[-8,-3]],[[4913,5477],[0,-1]],[[4913,5476],[0,1]],[[4925,5729],[-2,-26],[3,-1],[4,-47],[-8,-15],[-6,-39],[-7,-28],[2,-31],[2,-4],[4,-31],[5,-1],[2,-13],[-3,-14]],[[4921,5479],[-10,3],[-3,-4],[-15,4],[-5,4],[-18,3],[-3,-9],[16,7],[6,-3],[-22,-5],[-22,-3],[-38,-25],[-5,-8],[-12,-10]],[[4790,5433],[-1,2],[0,41],[5,10],[-1,33],[-10,7],[-1,13],[-6,7],[-10,3],[-6,8],[8,15],[1,23],[-5,23]],[[4764,5618],[7,-1],[3,10],[3,27],[-7,4],[2,14],[7,0],[5,-7],[2,15],[-8,9],[1,12],[5,5],[-5,6],[2,13],[-5,-2],[-3,7],[1,32],[4,6]],[[4778,5768],[4,2],[5,14],[5,1],[3,-12],[9,-6],[2,12],[7,-1],[1,18],[8,-5],[-1,8],[5,2],[2,-15],[-2,-13],[6,-3],[3,9],[11,4]],[[5402,5930],[2,-13],[7,-8],[3,-17],[-1,-10],[5,-3],[2,-34],[-2,-3],[-1,-26],[3,-28],[9,-22],[6,-8],[-7,-3],[-9,3],[-10,-4],[-15,3],[-7,-19],[11,-27],[17,-29],[3,-1],[8,-30],[2,-17],[4,-2],[-3,-16]],[[5449,5312],[-3,-5],[2,-25],[-18,15],[-7,3],[-10,-2],[-8,12],[-9,-3],[-27,0]],[[5369,5307],[-6,5],[-48,3],[-1,-7]],[[5314,5308],[-38,0],[-4,10]],[[5272,5318],[0,12],[4,27],[-1,12],[-8,18],[-2,13],[6,11],[-2,8],[-10,-11],[-10,10],[-2,29],[-11,-4],[2,17]],[[5238,5460],[6,19],[1,41],[4,2],[10,24],[10,13],[2,14],[10,13],[3,-8],[7,1],[1,9],[8,-5],[7,-14],[1,-16],[7,1],[6,15],[-1,8],[10,15],[-2,17],[5,9],[0,9],[5,14],[1,25],[16,23],[2,34],[9,9],[2,17],[-1,14],[6,5],[3,30],[12,34],[6,-1],[11,14],[1,37],[-3,10],[-10,4],[-3,40]],[[5390,5936],[7,0]],[[5397,5936],[-1,-11],[6,5]],[[5398,5936],[1,0]],[[5399,5936],[-1,0]],[[5944,7202],[0,0]],[[5944,7202],[-3,0]],[[5941,7202],[0,0]],[[5941,7202],[3,0]],[[5905,7208],[0,1]],[[5905,7209],[1,0]],[[5906,7209],[1,0]],[[5907,7209],[-2,-1]],[[5935,7200],[1,-2]],[[5936,7198],[-7,-1],[-1,11],[-17,-6],[-3,7]],[[5908,7209],[0,0]],[[5908,7209],[3,-5],[17,6],[1,-10],[6,0]],[[5807,5072],[0,-19],[-2,6],[2,13]],[[5762,5475],[2,-10],[7,-8],[0,-10],[16,-18],[12,12],[6,1],[5,-9],[7,12],[0,6],[10,-5],[0,-12],[4,-3],[7,-21],[10,-6],[0,-14],[6,4],[2,-10]],[[5856,5384],[2,-7],[-5,-19],[3,-15],[-4,-19],[8,-3],[8,-13]],[[5868,5308],[-10,-15],[-12,-24],[0,-15]],[[5846,5254],[-7,-6],[-2,-13],[-6,-5],[0,-21],[-3,-7],[-4,-25]],[[5824,5177],[-7,-9],[-3,-12],[1,-13],[8,12]],[[5823,5155],[-1,-6],[-1,-46]],[[5821,5103],[-7,-8],[-3,-9]],[[5811,5086],[-3,1],[-7,-28],[3,-9],[-3,-10]],[[5801,5040],[4,-14]],[[5811,4991],[-2,-3],[-1,-49],[4,11],[-1,-27],[-3,-5],[0,-30],[7,-28],[-1,-13],[-4,-5],[10,-49],[6,-14],[6,-6],[6,-13],[2,-29],[7,-10],[2,-12]],[[5849,4709],[-28,-8],[-19,-7]],[[5802,4694],[-16,-35],[0,-23],[4,-2],[2,9]],[[5792,4643],[4,-21],[-1,-21],[1,-34],[-5,-16],[0,-10],[-4,-17],[4,-25],[9,-11],[6,-17],[14,-4],[-2,11],[9,5],[0,-75],[-5,1],[-1,12],[-10,-10],[-7,1],[-2,14],[-6,17],[-4,-2],[-1,13],[-5,13],[-16,7],[-6,6],[-3,16],[-5,7],[-1,12],[-5,0],[-1,-16],[-7,-8],[-10,6],[-11,0],[-4,7],[-14,8],[0,26],[-17,-7],[-8,-8],[-4,5],[3,14],[-8,6],[-4,9]],[[5366,4846],[-9,2],[-4,-10],[-7,-3],[-7,16]],[[5363,4916],[8,-9],[0,-6],[8,11],[1,14],[7,-2],[12,12],[2,-8],[-3,-7],[1,-20],[9,0],[4,6],[10,27],[8,8],[1,8],[9,4],[10,35],[-1,29],[1,13],[-1,26],[12,25],[0,7],[11,30],[8,5],[12,27],[0,21],[3,25],[3,7],[-2,14],[1,28],[5,27],[-1,34],[16,57],[0,19]],[[5333,4894],[-5,13],[0,10],[-15,33],[-5,6]],[[5308,4956],[2,12],[8,13],[5,-10],[5,-2],[4,22],[-8,9],[3,10],[-7,12],[2,7],[-1,20],[4,-5],[6,5],[4,-5],[11,5],[-1,24],[5,5],[5,-5],[5,-26],[11,-4],[9,13],[1,6],[9,-22],[5,9],[0,20],[5,5],[1,41],[-2,10],[3,23],[-9,9],[-3,11],[-5,0],[0,27],[5,19],[5,0],[6,16],[-5,18],[0,11],[-14,6],[-7,-9],[-7,-3],[-4,22],[2,23],[3,9]],[[3018,5865],[-19,-13],[-7,-27],[-6,-1],[-7,-26],[-5,-13],[-2,-37],[-11,-37],[11,7],[1,-11],[4,2],[4,-28],[8,-16],[1,-19],[-4,-7],[1,-28],[7,-3],[3,-18],[7,-5],[5,4],[18,-4],[9,7],[10,-10],[7,-1],[18,-46],[5,-2],[7,8],[11,-5],[29,8],[4,-18],[-6,-10],[0,-17],[-5,-6],[0,-66],[5,-28],[4,-2],[5,-17],[-15,-35],[7,-6],[11,-18],[0,-12],[4,-17],[5,-39]],[[3056,4939],[-8,22],[-6,-2],[-7,6],[18,59],[0,7],[-26,25],[-10,-10],[-2,7],[-8,7],[-6,-11],[-10,-7],[-8,6],[-9,-5],[-7,8],[2,12],[-2,17],[-10,6],[1,12],[-4,13],[-7,3],[-5,10],[-5,2],[-4,26],[-6,11],[-5,2],[-8,14],[-5,-2]],[[2909,5177],[-11,11],[-3,-1],[-7,15],[-8,7],[-3,-12],[-9,-1],[-19,10],[-1,14],[-7,11],[-11,5],[-13,16],[-7,13]],[[2810,5265],[-5,10],[5,13],[7,-2],[-3,14],[0,13],[7,19],[10,-5],[0,9],[9,-4],[1,22],[12,29],[0,6],[7,20],[-6,-5],[-4,5],[-1,15],[3,16],[-2,57],[-5,2],[9,12],[0,7],[-7,20],[3,5],[1,19],[-5,6],[-3,17],[-7,14]],[[2836,5599],[2,14],[13,12],[1,13],[4,2],[-6,28],[-3,3],[3,11]],[[2850,5682],[12,-31],[1,-12],[5,0],[-1,29],[-4,10],[7,5],[10,15],[6,23],[12,4],[2,15],[-3,1],[3,13],[-1,20],[3,2],[0,16],[8,14],[11,14],[9,-5],[-3,-8],[7,-4],[4,18],[1,14],[10,-3],[15,1],[6,12],[10,13],[13,10],[3,11],[-1,9],[6,1],[12,10],[8,-6],[3,-18],[-6,-10]],[[6235,4487],[1,-17],[-4,8],[3,9]],[[6207,4496],[-7,9],[1,21],[4,1],[-1,-12],[3,-19]],[[4324,6037],[-5,9],[5,2],[0,-11]],[[4340,6065],[8,-16],[-5,-7],[-4,7],[1,16]],[[4365,6116],[5,-8],[-8,-3],[3,11]],[[4303,6173],[3,-6],[-7,-10],[-3,11],[7,5]],[[2676,5812],[7,-32],[16,-36],[7,-10]],[[2706,5734],[-3,-5],[-5,7],[-2,-8],[0,-23],[6,-10],[-5,-4],[2,-19],[-6,-11],[4,-16]],[[2697,5645],[-2,11],[-5,9],[0,15],[-9,5],[5,-10],[0,-10],[-12,12],[3,27],[-8,14],[-10,11],[-11,8],[1,10],[-12,21],[-4,-7],[9,-12],[-6,-16],[-6,15],[-10,5],[-5,19],[1,16],[3,2],[1,15],[-8,5],[7,2],[0,9]],[[2619,5821],[2,7],[21,-15],[5,7],[13,-10],[0,-5],[8,-5],[8,5],[0,7]],[[2698,6446],[5,-3],[4,-17],[-10,-9],[-8,8],[7,1],[-4,15],[6,5]],[[2836,6454],[6,-1],[-1,-7],[-5,8]],[[2823,6481],[-2,-7],[-7,5],[9,2]],[[2914,6329],[-1,4]],[[2913,6333],[-1,0]],[[2912,6333],[-2,-4]],[[2910,6329],[-10,-1],[-15,6],[-21,-3],[-2,-3],[-21,-3],[6,17],[9,10],[3,9],[-8,15],[-19,-1],[-13,20],[-1,18],[-6,16],[-14,-5],[-10,8],[-8,0],[-10,11],[-5,10],[-13,-1],[-13,8],[-13,4],[-7,11],[12,1],[1,7],[-7,6],[-25,1],[-10,-21],[-7,-9],[-15,0],[-2,-15],[-3,2],[-11,-11],[1,10],[-11,-3],[10,9],[5,0],[-2,15],[3,11],[12,15],[14,8],[3,6],[19,3],[9,8],[27,-2],[3,-6],[15,2],[6,-8],[10,1],[11,-12],[9,-20],[15,-1],[13,-13],[5,-1],[7,-16],[12,-5],[-3,9],[12,-16],[5,-11],[23,-17],[0,-5],[12,2],[3,-6],[-5,-10],[2,-9],[20,1],[7,-5],[9,-19],[5,2],[2,-9],[-3,-6],[-13,0],[-10,-9]],[[3089,5876],[-11,16],[3,2],[8,-18]],[[5905,7209],[1,0]],[[5941,7202],[-6,-2]],[[5908,7209],[6,1],[0,11],[14,-4],[17,8],[15,13],[0,-3],[-19,-22],[3,-11]],[[5938,7197],[0,0]],[[5938,7197],[0,0]],[[5937,7198],[0,0]],[[5944,7202],[-3,-6]],[[5941,7196],[0,6]],[[5936,7198],[0,-1]],[[5936,7197],[-3,-9],[-16,-11]],[[5917,7177],[-8,1]],[[5909,7178],[-7,3],[-5,11],[1,9],[7,7]],[[5907,7209],[1,0]],[[5411,8112],[4,8],[9,-9],[14,-7],[6,-6],[12,-3],[-7,-8],[13,-20],[10,7],[-4,12],[9,-2],[19,-24],[4,4],[7,-7],[8,0],[8,-23]],[[5523,8034],[-8,-1],[-12,-15],[-1,-11],[-15,-14],[-9,4],[-8,-15]],[[5383,7990],[-10,11],[-13,20],[-10,9],[-7,17],[3,13],[-5,11],[6,13],[26,11],[3,8],[9,1],[13,9],[-2,8],[15,-9]],[[5255,7927],[0,0]],[[5394,8289],[0,-4]],[[5394,8285],[0,4]],[[5371,8330],[6,-3],[4,-14],[-11,-5],[-6,4],[1,12],[6,6]],[[5262,8339],[4,3],[12,-11],[5,-15],[13,-5],[11,2],[1,-9],[-10,-8],[12,-2],[8,-7],[5,14],[11,2],[14,11],[13,4],[3,-10],[10,-8],[6,2],[3,-17],[13,-10]],[[5396,8275],[3,-23],[-5,-27],[12,-14],[-3,-9],[7,-21],[-4,-20],[2,-11],[7,-4],[2,-14],[-6,-20]],[[5269,7921],[-15,12],[1,-6]],[[5210,7923],[-2,4],[8,55],[9,11],[2,10],[-16,4],[-4,7],[-18,-1],[-13,17]],[[5176,8030],[4,20],[-6,3],[-5,16]],[[5166,8104],[-3,14],[9,22],[0,9],[-8,12],[5,10],[8,-4],[10,5],[8,28],[-10,5],[2,9],[8,1],[4,18],[0,16]],[[5199,8249],[-3,19],[6,6],[21,2],[6,-18],[0,12],[8,-4],[2,20],[9,1],[-8,29],[10,6],[-9,13],[-1,9]],[[5240,8344],[22,-5]],[[6201,5844],[-9,-28]],[[6192,5816],[-6,4],[-22,-7],[-4,8]],[[6160,5821],[0,12]],[[6160,5833],[0,24],[10,22],[7,22]],[[6177,5901],[8,-6],[3,9],[9,11]],[[6197,5915],[6,-14],[2,-25],[-10,-14],[-7,-3],[-3,-11],[13,3],[3,-7]],[[3294,6081],[4,-5],[0,-15],[-3,-3],[-3,16],[2,7]],[[5312,8347],[17,-10],[-1,-7],[-10,-1],[-8,6],[2,12]],[[5348,8350],[-12,-5],[4,7],[8,-2]],[[5272,8355],[7,-12],[-8,2],[1,10]],[[5413,8363],[6,-13],[-9,3],[3,10]],[[5287,8385],[7,0],[6,-15],[-2,-16],[-19,1],[-11,24],[19,6]],[[5342,8415],[7,-3],[0,-22],[-11,-12],[8,-11],[-13,-8],[5,-3],[-8,-10],[8,-5],[-9,-11],[-4,32],[-13,0],[-2,28],[13,12],[5,-13],[14,26]],[[5247,8463],[-2,-13],[-9,0],[11,13]],[[5240,8344],[-2,32],[-14,7],[3,14],[6,5],[-4,11],[-4,-6],[0,34],[16,1],[7,12],[9,-10],[-3,15],[18,12],[-32,-9],[-5,-13],[-7,3],[11,20],[17,1],[9,6],[10,19],[20,10],[-6,-10],[3,-20],[-7,-15],[2,-23],[12,-1],[5,-6],[-6,-16],[-11,2],[-4,-20],[-20,-21],[6,-16],[-7,-5],[8,-8],[-8,-10]],[[3006,6222],[2,16],[-6,10]],[[3002,6248],[0,0]],[[3002,6248],[-1,2]],[[3001,6250],[-1,4]],[[3000,6254],[8,11],[-2,9],[4,12],[-4,32]],[[3006,6318],[3,11],[14,-4],[4,6],[11,-10],[5,1],[4,-8],[11,0],[4,-20],[6,2],[11,-3],[-2,-5],[-11,2],[0,-8],[24,-7],[12,-20],[-9,-23],[-8,11],[-17,0],[-9,4],[-8,-14],[-9,-2],[-3,12],[-9,-8],[-5,2],[1,-9],[-10,-31],[-6,8],[-4,17]],[[5238,7310],[2,-6],[-7,-4],[1,-6],[-8,-8],[6,-5],[-4,-35],[3,-10],[-1,-19],[4,-5],[-4,-8],[-3,-30],[-11,-11],[-1,-9],[-7,-8],[-1,-14],[7,-25],[0,-11],[10,-7],[6,-15],[2,-20],[19,-24],[7,-62],[6,-44]],[[5264,6924],[-7,-7],[11,-29],[5,-37],[-2,-44],[4,-19],[-5,-34],[2,-21],[3,-4],[-2,-20],[-10,-9],[-3,-10],[18,-52],[0,-25],[5,-5],[1,-10],[6,-6],[7,5],[21,-13],[3,-4],[11,-43]],[[5332,6537],[-28,-35],[-99,-122],[-24,-40],[-17,-32],[-8,-8],[-39,-15]],[[5117,6285],[-26,-9],[-5,7],[4,15],[-2,11],[1,14],[-8,8],[-12,4],[-9,16],[-2,-4],[-9,5],[-4,14],[-14,12],[1,19],[-14,18],[-28,40],[-8,9],[-36,49],[-21,30],[-8,9],[-51,70]],[[4866,6622],[-64,78],[-16,21],[-28,33]],[[4758,6754],[0,22]],[[4758,6776],[0,59],[12,18],[18,22],[7,0],[8,8],[10,0],[27,5],[6,-5],[7,21],[11,17],[11,11],[6,11],[17,8],[3,14],[-8,21],[4,4],[1,15],[23,9],[-3,14],[12,5],[35,-3],[0,17],[6,7],[-11,14],[-4,11],[2,8],[-5,10],[2,18],[-4,8],[2,24],[-4,15],[3,6],[-4,7],[2,9],[-12,19]],[[4938,7203],[8,0],[18,16],[2,12],[11,12],[8,0],[1,7],[6,-5],[8,2],[5,15],[24,22],[25,4],[10,4],[8,-2],[11,13],[3,-4],[12,2],[9,8],[21,-1],[13,-7],[8,-8],[10,11],[14,5],[6,10],[12,-12],[8,2],[0,9],[9,-1],[7,-10],[13,4],[10,-1]],[[2774,5010],[-4,-1],[0,11],[5,9],[5,-3],[-6,-16]],[[2519,5143],[-4,-14],[-5,0],[9,14]],[[2493,5154],[0,-14],[-8,2],[1,11],[7,1]],[[2459,5168],[2,-12],[-7,2],[-1,8],[6,2]],[[2478,5174],[6,-6],[-5,-6],[-4,5],[3,7]],[[2463,5192],[4,-22],[6,-11],[-1,-9],[6,-10],[-4,-13],[-13,-3],[-3,10],[12,14],[-9,21],[-3,18],[5,5]],[[2909,5177],[-10,0],[6,-20],[4,-4],[-1,-13],[2,-13],[-5,0],[-4,-27],[-15,-40],[-16,-25],[-33,-24],[-9,-21],[1,-7],[-6,5],[-1,-22],[-8,-31],[-1,-17],[-4,-3],[-1,-12],[-4,-7],[-8,2],[-5,16],[0,9],[-8,2],[-9,11],[-8,-11],[-2,5],[4,10],[-5,9],[10,10],[-2,22],[-3,6]],[[2768,4987],[11,12],[6,40],[-3,5],[-4,-11],[-1,15],[-7,-22],[-11,18],[-7,5],[5,13],[-1,22],[-2,5],[2,15],[-4,19],[10,7],[3,21],[-1,11],[12,24],[1,31],[-2,13],[12,11],[19,9],[4,15]],[[5949,6986],[2,-6]],[[5951,6980],[17,-99]],[[5968,6881],[-4,-12],[-3,-33],[-5,-16],[0,-26],[-5,-14],[-13,15],[-6,17],[-10,16],[-1,26],[-8,12],[-5,14],[-2,23],[-4,-1],[-4,-16],[6,-10],[3,-16],[0,-14],[4,-6],[14,-42],[5,-5],[5,-36],[4,-4],[5,-25],[0,-11],[11,-43],[15,-51],[8,-35],[15,-29],[-8,3],[2,-41],[3,-16],[6,-13],[10,-6],[2,-8],[16,-29]],[[6024,6449],[-78,0],[-73,0],[0,14],[-6,-14],[-57,0],[-71,0],[-46,0]],[[5693,6449],[0,421],[-3,10],[-1,24],[-4,13],[6,20],[3,17],[-4,22],[0,14],[8,16]],[[5698,7006],[1,-7],[7,-2],[12,7],[14,-6],[27,-8],[1,-7],[8,-5],[5,4],[4,-9],[21,-6],[8,-9],[13,7],[16,22],[4,-4],[4,14],[3,-3],[11,6],[-9,-10],[9,2],[7,11],[13,-9],[8,5],[-3,-15],[7,-4],[1,-7],[6,2],[0,9],[6,-10],[7,-4],[31,7],[9,9]],[[6111,6097],[3,-11],[8,-6],[-12,2],[-2,8],[3,7]],[[6177,5901],[-6,15],[-8,12],[-5,18],[-14,19],[-7,23],[-5,10],[-10,7],[-5,9],[-9,-1],[-10,9],[-10,-6],[-5,10],[-3,-8],[-13,-5],[-6,16],[-3,-1],[-6,12],[-9,-45],[-6,19],[-5,1],[-2,-8],[-10,1],[-6,-4]],[[6014,6004],[-3,51],[6,17],[1,18],[3,5],[5,24],[-2,23],[3,6],[-1,17],[12,-2],[3,17],[21,13],[5,18],[5,9]],[[6072,6220],[9,-35],[0,-9],[6,-31],[1,-24],[3,-23],[4,-4],[0,-17],[5,-2],[2,-22],[4,-1],[-2,18],[3,4],[6,-7],[0,-17],[6,-8],[3,5],[6,-3],[3,-12],[12,-6],[12,-31],[2,-9],[9,-6],[3,-12],[3,1],[4,-13],[1,-13],[4,2],[6,-13],[0,-8],[10,-9]],[[5941,7196],[-3,1]],[[5938,7197],[-2,0]],[[4503,6784],[-3,-9],[-5,3],[8,6]],[[4571,6803],[1,-17],[-5,-6],[-6,6],[2,19],[8,-2]],[[4552,6828],[-7,-11],[-2,-14],[-7,-8],[-6,21],[12,4],[4,8],[6,0]],[[4604,6803],[7,35],[5,-4],[-4,-26],[-8,-5]],[[4503,6844],[4,-7],[-3,-16],[-4,14],[3,9]],[[4626,6861],[0,-6],[-9,-10],[-1,11],[10,5]],[[4919,7214],[-1,3]],[[4918,7217],[1,-3]],[[4851,7247],[-1,5]],[[4850,7252],[1,-5]],[[5043,7435],[2,-6],[-6,-9],[-6,2],[10,13]],[[5088,7483],[0,-11],[8,0],[-7,-23],[-4,-6],[-8,7],[-3,10],[-9,0],[9,14],[14,9]],[[5114,7490],[6,-11],[-3,-3],[-12,12],[9,2]],[[5055,7627],[0,0]],[[4950,7681],[11,-8],[1,-9],[16,-8],[6,-11],[6,3],[8,-7],[20,0],[0,9],[18,-7],[3,-7]],[[5047,7630],[8,-9],[8,4],[6,-5],[12,8],[7,-3]],[[5088,7625],[4,-5],[-6,-6],[3,-18],[-4,-6],[-23,-20],[-3,-10],[-17,-6],[-15,-8],[-8,-13],[5,-6],[-8,-7],[-7,-18],[-8,-14],[-11,-32],[3,-21],[6,-15],[7,-7],[-21,-22],[-9,-36],[4,-6],[-19,-4],[-12,-20],[-2,-15],[-7,-12],[-5,6],[-7,-1],[-3,-8],[-6,4],[-42,-1],[-7,-13],[-15,-5],[-4,-16]],[[4851,7264],[0,0]],[[4851,7264],[-6,-7],[-14,11],[-9,24],[-2,18],[-12,13],[-14,2]],[[4794,7325],[-3,18],[7,27],[6,2],[3,10],[-5,0],[-6,14],[1,17],[6,6],[3,12],[-5,3],[-5,22],[-6,12],[14,0],[4,14],[-4,17],[7,8],[-1,30],[-3,6],[8,16],[6,4],[6,14],[-10,6],[0,16],[-16,2],[-2,-7],[-11,-3],[-3,3],[-13,-3],[3,13],[-4,6],[-15,-10]],[[4756,7600],[-4,7],[8,12],[-7,6],[1,13],[-6,-4],[1,10],[-7,18],[12,17],[5,-3],[11,5],[-2,4],[13,17],[6,2],[13,-13],[36,2],[14,-2],[17,-9],[16,0],[17,6],[3,-6],[11,-2],[10,4],[16,-8],[10,5]],[[5628,8557],[8,2],[12,-10],[-17,-13],[-15,-4],[-10,7],[0,13],[22,5]],[[5631,8581],[8,-10],[-15,-8],[-3,11],[-9,4],[19,3]],[[5778,8608],[4,-7]],[[5782,8601],[-5,-1]],[[5777,8600],[3,-1]],[[5780,8599],[-7,-9]],[[5773,8590],[-4,-10]],[[5769,8580],[-12,1],[-9,-8],[13,-28],[6,-22]],[[5767,8523],[5,-8],[-7,-3],[-6,-16]],[[5759,8496],[-14,5],[-8,-6],[-15,19],[-26,13],[-21,-12]],[[5675,8515],[7,26],[-10,-3],[-13,5],[-6,13],[-3,20],[6,3],[-5,14],[18,5],[6,10],[30,1],[8,10],[35,-13],[27,-2],[3,4]],[[6160,5833],[0,-12]],[[6192,5816],[-8,-22],[5,-23],[5,-13],[6,-8],[1,-13],[4,-12],[5,-4],[12,-21],[51,-34],[31,-23],[28,0]],[[6332,5643],[-21,-43],[-31,-61],[-14,-31],[-14,-34],[-5,-9],[-27,3],[-20,-14],[-8,-12],[-1,-8],[-9,-7],[-12,-2],[-7,-13]],[[6163,5412],[-19,-3],[-3,2],[-9,19],[-26,-24],[-8,-27],[-25,12],[-15,0],[-7,11],[-28,36],[-23,1],[-3,10]],[[5997,5449],[-4,8],[0,27],[-2,9],[-11,-2],[-1,9],[-5,7],[-3,12],[0,13],[-4,11],[-3,24],[-6,5],[0,8],[-6,4],[-7,24],[-9,16],[-19,8],[-1,9],[5,9],[0,17],[12,3],[2,-5],[7,3],[5,9],[-1,50]],[[5946,5727],[4,33],[3,9],[-1,22],[7,18],[6,-7],[5,5],[0,25],[4,16],[-1,14],[6,8],[2,12],[11,31],[11,1],[0,19],[3,19],[6,24],[2,28]],[[5634,8649],[-3,-11],[-9,9],[12,2]],[[5804,9158],[-14,-7],[8,-9],[-8,-12],[7,-21],[18,-7],[18,-21],[-2,-10],[-23,-30],[-1,-9],[13,-20],[11,-25],[5,-23],[-10,-1],[2,-32],[-7,-6],[6,-11],[9,-1],[-2,-23],[14,-8],[1,-11],[-17,-18],[14,-16],[21,-15],[9,-17],[-9,-24],[-25,-28],[-15,-23],[-18,-22],[-10,-7],[-27,-31]],[[5772,8670],[-31,-8],[-19,-2],[-8,-8],[-15,0],[-6,-6],[-38,-11],[-10,-6],[-10,17],[3,10],[-12,-6],[2,10],[-10,0],[-12,14],[-5,-7],[-8,8],[-2,23],[5,3],[3,23],[-5,25],[-5,3],[3,22],[-6,2],[3,27],[13,9],[-5,12],[11,-3],[13,8],[-5,9],[17,9],[3,10],[13,6],[10,18],[17,18],[5,16],[25,8],[-4,14],[2,17],[-33,19]],[[5671,8973],[-15,37],[10,20],[-12,20],[5,16],[-7,26],[5,3],[-23,26],[-21,5],[-41,32]],[[5572,9158],[12,1],[7,14],[10,-2],[21,-31],[22,-6],[20,12],[27,-15],[7,13],[18,12],[-1,17],[6,22],[15,15],[16,-2],[22,10],[17,-16],[18,-7],[6,-12],[-14,-14],[3,-11]],[[9954,4093],[-5,-13],[-7,0],[12,13]],[[9951,4184],[0,-5],[9,-12],[2,-26],[-10,-2],[-3,-6],[-10,-2],[-15,11],[-1,12],[5,7],[-2,6],[7,12],[18,5]],[[0,4252],[9987,-23],[-2,-11],[4,2],[7,14],[0,-17],[-16,-2],[-1,7],[-11,-10],[-4,-9],[-7,15],[12,16],[13,4],[2,8],[-9984,6]],[[3351,2225],[4,-3],[-17,-28],[-11,-4],[-4,-11],[-8,-4],[-11,12],[16,3],[-4,17],[12,1],[-13,15],[11,-5],[9,6],[15,-3],[1,4]],[[3368,2227],[7,2],[4,-8],[12,3],[4,-18],[-17,-11],[-16,0],[8,-4],[-12,-6],[1,-10],[-11,5],[3,-11],[-9,12],[6,17],[13,11],[-3,14],[10,4]],[[6541,3981],[5,-2],[5,-13],[-1,-13],[-7,-1],[-6,6],[-4,14],[8,9]],[[6252,4454],[4,-5],[-1,-13],[-3,-1],[0,19]],[[3483,5317],[7,10],[4,16],[2,29],[4,19],[-10,24],[-3,26],[-1,25],[4,16],[5,9]],[[3495,5491],[3,5],[3,18],[12,-10],[11,-4],[6,-6],[10,-19],[22,-31],[3,-18],[-1,-11]],[[3306,6034],[4,-11],[-1,-7],[-9,13],[1,11],[5,-6]],[[3288,6120],[2,-14],[-4,-5],[-3,22],[5,-3]],[[3295,6124],[5,-5],[-9,-3],[1,18],[3,-10]],[[5262,7641],[2,-7],[1,-27],[-4,-7],[-2,-24],[-7,-9],[-8,9],[3,8],[-7,3],[2,19],[-5,15],[3,10],[13,13],[6,-1],[3,16],[0,-18]],[[5160,8036],[5,-6],[11,0]],[[5172,7849],[16,7]],[[5195,7827],[-7,-5],[5,-18],[5,-6],[-2,-11],[-13,-6],[3,-11],[8,-5],[1,-9],[-6,-11],[4,-14],[10,-7],[9,3],[-4,-22]],[[5208,7705],[-2,-3]],[[5206,7702],[-2,-1]],[[5204,7701],[-11,-10],[-9,-23],[-14,-6],[-22,9],[0,7],[-15,1],[-7,6],[-11,0],[-5,6],[-13,-17],[-10,-6],[-3,-9],[0,-26],[4,-8]],[[4950,7681],[9,13],[6,48],[-1,11],[4,49],[11,-11],[0,8],[-14,16],[3,6],[1,26],[-20,14],[-9,18],[4,14],[-5,12],[-8,1],[-3,15],[-6,-3],[-11,11],[-18,6],[-4,6],[-11,-5],[0,7],[-9,7],[12,5],[-14,12],[1,13],[10,6],[22,0],[2,9],[12,2],[10,-20],[12,9],[16,-4],[4,8],[-1,28],[-6,8],[0,18],[16,0],[-1,-11],[5,-6],[30,-4],[8,7],[-5,3],[2,11],[10,9],[18,7],[11,15],[0,37],[10,8],[17,4]],[[4800,8771],[13,-21],[-14,13],[1,8]],[[4808,8772],[9,-11],[-11,3],[2,8]],[[9394,5584],[3,-9],[-4,-1],[1,10]],[[5308,4956],[-3,13],[-10,15],[0,9],[-17,28],[-8,19],[7,-8],[5,3],[-8,8],[-7,1],[-2,13],[-9,21],[1,10],[8,2],[-2,7],[-4,-5],[-9,16],[-1,11],[-6,18],[5,6],[2,-7],[2,12],[6,13],[1,14],[-1,27],[2,-7],[11,-2],[-8,7],[-5,19],[9,-6],[-2,24],[3,7],[4,-4]],[[5272,5240],[6,1],[36,-1],[0,68]],[[4964,8107],[6,-6],[-7,-6],[-6,6],[7,6]],[[4883,8252],[-4,-10],[-6,16],[10,-6]],[[4825,8298],[-11,-2],[-8,20],[-10,-17],[-14,5],[-9,13],[11,10],[-5,6],[11,2],[8,19]],[[4798,8354],[20,10],[13,-2],[0,-8],[18,-35],[-7,-6],[-11,-19],[-6,4]],[[4857,8375],[-7,14],[7,-1],[0,-13]],[[4830,8398],[2,-9],[-7,-6],[-6,6],[1,10],[10,-1]],[[4839,8409],[-5,-13],[-4,6],[9,7]],[[4832,8443],[11,-10],[-2,-5],[-18,-4],[7,10],[-7,5],[9,4]],[[4795,8489],[3,-18],[-4,1],[1,17]],[[4800,8503],[1,-8],[-10,7],[9,1]],[[4824,8506],[5,-20],[14,-6],[-9,-6],[-10,1],[-13,15],[11,5],[2,11]],[[4827,8543],[-5,-20],[-16,-15],[3,11],[-7,3],[2,15],[23,15],[0,-9]],[[4907,8560],[9,0],[-6,-20],[-22,-20],[6,-7],[-8,-14],[22,8],[20,-3],[16,2],[7,-13],[-6,-9],[-6,-24],[-9,-18],[-10,-8],[8,-10],[-21,-15],[9,-4],[11,6],[13,-8],[14,-19],[4,-29],[8,-27],[19,-9],[4,-13],[8,-7],[-4,-5],[11,-24],[-7,1],[12,-23],[-7,-19],[8,-7],[5,11],[20,-2],[11,-10],[3,-16],[-5,-24],[-4,0],[-14,-26],[-11,-12],[12,-3],[13,1],[-3,-14],[-11,-13],[-5,1],[-14,-11],[-12,6],[-18,-6],[-3,7],[-18,-7],[-14,-1],[2,-8],[-27,9],[-13,-6],[-2,-17],[-8,-7],[-11,10],[-16,-3],[-12,-21],[-8,10],[19,25],[7,14],[1,12],[6,-1],[2,11],[12,3],[11,-4],[11,2],[8,20],[-23,-9],[-8,12],[-13,-3],[0,6],[-10,3],[-8,-7],[-10,18],[13,6],[20,18],[2,9],[-2,24],[-17,-4],[11,12],[5,11],[27,10],[8,19],[-4,11],[5,2],[-1,14],[-9,-6],[-11,23],[9,26],[-19,-10],[-11,5],[1,-10],[-13,10],[-5,-5],[-1,21],[11,19],[-15,29],[-8,-15],[-4,-23],[-5,-1],[3,22],[-1,18],[5,24],[8,18],[-12,-13],[-5,11],[0,17],[5,10],[-6,19],[7,25],[12,0],[-5,20],[11,21],[20,-6],[26,7]],[[4912,8589],[-2,-13],[-4,10],[6,3]],[[4964,8673],[4,-27],[-15,5],[9,7],[2,15]],[[6206,7550],[-23,27],[-5,-9],[-8,5],[-9,-5],[-8,5]],[[6153,7573],[7,17],[-8,51],[-10,6],[-3,11],[-21,13],[-8,10]],[[6110,7681],[2,9],[16,0],[27,-19],[21,2],[7,-6],[6,1],[10,-14],[17,-9],[-2,-8],[6,-4],[16,12],[7,-8],[4,8],[11,-14],[11,0],[-2,-18],[8,-10],[14,-9]],[[4995,5824],[5,-3],[-3,-26],[10,-13],[3,-27],[-4,-30],[8,0],[-2,-24],[2,-8],[-4,-8],[9,-19],[-3,-11],[0,-28],[-3,-15],[4,-3],[-1,-23],[-3,-2],[6,-28],[8,-9],[5,-13]],[[5032,5534],[-7,-19],[-15,1],[-21,-17],[-12,-16],[-6,0],[-6,-7],[-11,-5],[-10,-15],[-7,8],[-24,12]],[[4913,5477],[8,2]],[[4851,7264],[0,0]],[[4683,5897],[-3,-14],[6,-9],[6,11],[4,0],[8,-17],[4,13],[5,5],[16,-11],[2,7],[14,19],[5,-5],[2,-20],[3,-1],[-1,-21],[13,-17],[-9,-23],[5,5],[6,-3],[0,-28],[9,-12],[0,-8]],[[4764,5618],[-6,8],[-1,-12],[-11,-17],[-5,13],[-4,0],[3,19],[-5,25],[0,11],[-8,10],[-7,-7],[-6,3]],[[4714,5671],[-3,1],[-5,-11],[-3,4],[5,15],[-3,10],[0,15],[-4,1],[2,13],[-15,39],[-19,0],[-17,-7],[-5,-26],[-12,-21],[-5,-1]],[[4630,5703],[4,8],[-12,23],[0,12],[-4,-2],[-6,13],[-20,29],[4,20],[-5,-10],[-3,21],[-4,-14],[-2,11]],[[4582,5814],[8,30],[12,8],[16,4],[0,19],[-6,11],[7,3],[-1,24]],[[4618,5913],[19,-3],[-1,-8],[17,-6],[3,-5],[7,6],[20,0]],[[4534,5935],[-2,17],[4,7],[8,-14],[5,5],[-8,2],[-1,13]],[[4540,5965],[29,0],[4,12],[7,2],[8,-5],[2,-7],[6,1],[4,-10],[12,7],[3,-14],[-15,-6],[-5,7],[-11,6],[-6,7],[-1,-9],[-5,-4],[-12,-1],[0,-11],[-24,1],[-2,-6]],[[4553,5826],[1,-7],[-6,3],[5,4]],[[4582,5814],[-1,9],[-5,-7],[-7,20],[5,15],[8,-2],[-9,7],[-2,-8],[-3,8],[2,11],[8,-1],[-5,6],[-6,-7],[-11,-6],[3,14],[-7,-6],[-6,6],[1,13],[-5,-2],[-7,9]],[[4535,5893],[14,7],[15,-1],[13,14],[41,0]],[[5272,5240],[-3,6],[-10,3],[3,15],[10,28],[0,26]],[[5243,5399],[5,-8],[-8,-24],[-6,4],[0,10],[4,1],[1,11],[4,6]],[[5663,7229],[13,-11],[9,5],[22,-8],[8,3],[-1,-12],[9,6],[7,-7],[-2,-5],[-25,-2],[-16,-4],[0,9],[-10,6],[-24,5],[1,17],[4,5],[5,-7]],[[5756,7245],[-1,-17],[-3,-5],[4,22]],[[5640,7268],[-4,-2],[0,12],[4,-10]],[[5784,7281],[-5,-19],[-8,-12],[-2,13],[5,13],[10,5]],[[5710,7319],[-4,-10],[-2,10],[6,0]],[[5731,7350],[-10,-7],[2,7],[8,0]],[[5748,7357],[-5,-6],[-5,6],[10,0]],[[5576,7363],[5,-7],[-4,-5],[-5,10],[4,2]],[[5690,7366],[3,-13],[-8,16],[5,-3]],[[5571,7398],[6,-23],[-8,2],[-3,14],[5,7]],[[5723,7405],[3,-16],[-4,-9],[-5,25],[6,0]],[[5651,7423],[11,-14],[8,0],[5,-29],[7,0],[0,-10],[-7,1],[-8,23],[-11,0],[-1,9],[-12,17],[-9,-1],[13,12],[4,-8]],[[5733,7446],[6,-17],[-13,0],[4,10],[-10,-4],[-2,8],[13,8],[2,-5]],[[5553,7474],[-2,-18],[-5,18],[7,0]],[[5706,7488],[-2,-14],[-9,3],[0,9],[11,2]],[[5688,7522],[-8,1],[4,10],[4,-11]],[[5586,7536],[18,3],[4,11],[23,3],[5,10]],[[5731,7585],[7,-8],[1,-14],[-8,-6],[0,-15],[-8,-13]],[[5723,7529],[-3,5],[-11,2],[-11,8],[-12,-10],[-8,6],[-9,-12],[-11,1],[4,-19],[-4,-10],[8,-6],[-1,-11],[-9,17],[-8,0],[0,-6],[10,-14],[-9,6],[-2,14],[-12,9],[0,14],[-6,-6],[-3,-28],[8,-15],[2,-11],[5,-6],[7,-17],[-11,9],[-4,-7],[6,-16],[-9,-6],[17,-11],[0,-9],[8,-2],[13,-15],[-2,-5],[2,-25],[-3,-1],[-12,22],[-15,-11],[5,-3],[0,-11],[10,-10],[-11,-8],[-11,16],[0,-8],[7,-21],[3,-20],[0,-17],[-11,22],[-5,-6],[-4,-14],[0,13],[-6,19],[-6,-1],[0,-14],[-7,3],[-3,13],[3,14],[-3,15],[-13,17],[7,16],[7,2],[6,9],[19,-10],[10,-12],[9,10],[-5,6],[-17,14],[-1,-6],[-12,4],[-12,-7],[-4,8],[-8,-4],[-5,24],[-4,-1],[-1,16],[-13,20],[-2,14],[-5,4]],[[5583,7526],[0,0]],[[5582,7531],[4,5]],[[3288,5876],[-5,-2],[5,13],[0,-11]],[[3786,8632],[-12,-4],[4,9],[8,-5]],[[3787,8645],[3,-11],[-11,4],[-4,10],[12,-3]],[[3846,8835],[12,-11],[-9,0],[-12,15],[9,-4]],[[3579,8886],[3,14],[6,-4],[-9,-10]],[[3876,8910],[-1,-14],[-10,26],[11,-12]],[[3961,8973],[2,-9],[-18,-2],[0,10],[16,1]],[[3583,9209],[9,-5],[-9,-16],[-11,9],[11,12]],[[3535,9210],[20,-7],[5,-10],[-9,-9],[-40,-14],[-19,9],[8,9],[-21,2],[3,11],[-6,23],[14,9],[30,-7],[15,-16]],[[4292,9258],[5,-6],[-22,-8],[-56,-5],[5,12],[24,14],[11,0],[27,11],[6,-18]],[[3513,9274],[-13,6],[9,10],[4,-16]],[[3537,9281],[-14,10],[21,1],[-7,-11]],[[3472,9375],[-13,-11],[-4,9],[17,2]],[[4335,9380],[22,-3],[33,-25],[-20,4],[17,-11],[-5,-9],[-50,20],[-10,8],[0,15],[13,1]],[[4354,9391],[36,-8],[-3,-13],[-17,-1],[-14,11],[-38,1],[0,5],[36,5]],[[4333,9407],[21,-8],[-47,6],[55,-12],[-48,-4],[-29,9],[13,12],[35,-3]],[[4418,9469],[11,-1],[11,-14],[-32,-5],[-18,7],[3,8],[25,5]],[[4439,9496],[13,-2],[-12,-10],[-14,7],[13,5]],[[4505,9520],[-7,-8],[21,-2],[-15,-6],[-30,-2],[2,17],[29,1]],[[4481,9596],[3,-41],[-16,34],[13,7]],[[2994,9643],[23,-5],[-21,-3],[-2,8]],[[4445,9674],[18,-11],[-32,9],[14,2]],[[4519,9788],[-33,-16],[-26,9],[49,14],[10,-7]],[[3575,9904],[-53,7],[4,13],[49,-20]],[[3722,9942],[44,-15],[-28,-11],[-44,11],[-20,15],[48,0]],[[3880,9983],[38,-14],[-47,9],[9,5]],[[4105,9998],[43,-1],[139,-17],[-12,-6],[-116,-3],[-142,-14],[100,5],[47,8],[96,-4],[39,6],[2,-18],[34,4],[72,-17],[-31,-17],[-54,-4],[-152,-7],[-81,-17],[1,-9],[30,8],[107,13],[89,-4],[-3,-12],[-44,-9],[-2,-11],[85,20],[2,14],[51,4],[11,-19],[-7,-14],[-56,-36],[-16,-18],[53,26],[58,30],[75,-8],[37,24],[53,-1],[57,-12],[13,-8],[-64,-27],[-24,0],[7,-12],[-31,-8],[-46,1],[36,-15],[-18,-11],[-40,-3],[-44,6],[-25,-22],[11,-12],[20,3],[-9,-21],[17,-12],[-27,-8],[0,-11],[-28,-2],[-11,-42],[-18,-22],[18,0],[10,17],[51,-16],[-6,-10],[-19,10],[-22,-2],[38,-26],[10,6],[21,-5],[2,-18],[-10,-12],[-35,13],[-27,-3],[-24,-13],[-13,12],[-14,-8],[10,-12],[18,1],[0,-16],[19,4],[30,-4],[6,-11],[-15,-4],[21,-14],[3,-29],[-17,-4],[-4,9],[-16,-2],[-26,17],[8,-12],[24,-14],[-8,-27],[30,-5],[7,6],[13,-11],[-18,-15],[-16,2],[-7,11],[-36,-2],[-11,-18],[9,-27],[-2,21],[9,3],[36,-10],[-7,-26],[-28,3],[-18,-14],[-36,11],[-14,9],[-1,13],[-10,-16],[-25,-4],[-17,-16],[24,-7],[-16,-14],[22,-6],[6,-12],[-19,-7],[21,1],[23,-15],[33,-16],[-17,-14],[20,9],[14,-3],[-17,-11],[2,-17],[9,14],[10,-1],[0,-35],[8,-18],[-13,-10],[-11,3],[-7,22],[-2,-22],[-19,0],[-16,10],[-9,27],[-24,13],[-15,14],[-20,5],[-16,-3],[-26,23],[-16,-2],[31,-13],[-8,-6],[26,-8],[25,1],[11,-12],[-16,-13],[-24,-7],[-44,2],[14,-7],[-11,-17],[2,-11],[40,7],[13,-6],[-17,-3],[-27,-14],[-16,-3],[34,-3],[11,16],[15,-4],[29,13],[23,-11],[25,-7],[33,0],[0,-8],[-14,0],[-4,-12],[-19,-2],[1,-10],[-13,-8],[-17,-1],[2,-9],[-26,-21],[-31,-10],[-13,-9],[-23,1],[1,-6],[-24,-7],[-9,4],[-5,-11],[-18,10],[-1,-16],[-30,-3],[-30,17],[6,-17],[-4,-12],[-11,1],[-16,-12],[-12,-33],[-13,-5],[-1,-15],[-27,-26],[-15,-2],[-14,-18],[-13,3],[-20,-12],[-17,14],[15,16],[-12,0],[-7,-21],[-14,-1],[8,-16],[-17,1],[-7,-6],[-8,9],[-14,-12],[2,-15],[-14,-14],[-10,8],[-13,-3],[1,-12],[14,-11],[-1,-13],[-13,-9],[-12,1],[3,-8],[18,-1],[7,-27],[-13,0],[6,-7],[-18,-12],[-13,6],[12,-15],[-4,-15],[-21,-8],[-6,-11],[9,-15],[-21,9],[12,-11],[9,-1],[-8,-21],[11,5],[-6,-22],[-8,-6],[7,-7],[-17,-13],[9,-6],[-3,-17],[-20,3],[20,-7],[-12,-15],[-11,5],[14,-18],[0,-9],[-29,6],[-13,-12],[-12,10],[3,19],[-9,0],[6,10],[-15,-11],[-11,20],[6,8],[-3,10],[-10,-9],[-22,-8],[3,7],[-19,-8],[-17,0],[14,12],[-20,6],[-4,9],[7,5],[-20,5],[-1,9],[-10,13],[8,10],[-10,16],[-15,2],[-8,9],[5,28],[-12,7],[15,8],[-28,-3],[-2,19],[-11,10],[3,23],[-6,8],[14,-1],[13,13],[6,16],[9,-13],[-4,16],[-11,4],[-15,-12],[2,10],[-19,-33],[-9,0],[1,29],[22,16],[-10,2],[-8,-13],[-23,50],[-12,0],[-4,23],[19,15],[18,9],[21,21],[-21,-13],[-3,-7],[-33,-23],[-9,1],[1,22],[11,11],[16,-1],[5,10],[-34,3],[-6,14],[49,13],[17,-3],[12,6],[-28,-2],[-28,-7],[-21,-2],[2,10],[25,18],[15,2],[12,-7],[24,4],[-49,5],[-24,-17],[0,18],[22,10],[-5,12],[15,-1],[16,-8],[21,2],[-6,8],[7,12],[-13,0],[9,-8],[-31,-6],[-3,7],[-15,-1],[13,14],[18,4],[23,-2],[-5,11],[7,22],[16,-8],[0,19],[-17,-7],[10,18],[-2,11],[15,4],[-8,11],[-24,0],[-25,5],[-25,17],[-22,4],[-15,18],[11,6],[48,-8],[25,-15],[24,-6],[5,11],[-14,-6],[1,16],[-24,21],[17,-6],[-5,9],[-22,-1],[16,9],[-4,6],[-19,-12],[5,13],[24,4],[-8,4],[-21,-8],[-7,9],[25,4],[-41,6],[-4,7],[-14,-11],[0,-11],[-14,-5],[-24,1],[-17,17],[17,13],[-8,8],[19,13],[-21,11],[17,5],[10,12],[-3,15],[-18,4],[4,18],[-30,38],[7,13],[-16,5],[7,11],[-21,13],[4,8],[-31,10],[-14,17],[13,3],[-7,17],[-16,-2],[-4,10],[-26,9],[-17,-2],[-4,9],[-42,5],[-31,8],[-6,-11],[-27,5],[1,-9],[-35,-1],[7,10],[-15,1],[-6,-12],[-18,11],[-7,-6],[23,-12],[-58,9],[-30,15],[36,17],[-57,7],[-26,11],[12,12],[50,5],[21,6],[50,-3],[14,9],[-19,13],[-24,-11],[-45,-4],[-29,6],[21,8],[-33,-1],[13,9],[-30,-4],[-44,23],[8,21],[91,16],[8,10],[43,9],[42,-2],[31,23],[-5,30],[-56,2],[-12,15],[39,20],[28,7],[8,12],[46,13],[44,-9],[16,6],[6,19],[-19,15],[104,24],[90,11],[24,-14],[-6,-33],[24,17],[-1,11],[85,-18],[-31,13],[44,0],[-31,12],[-15,20],[65,-8],[77,-19],[22,-14],[25,1],[-8,28],[38,-1],[-68,26],[132,2],[-157,7],[28,14],[74,4],[6,5],[54,-17],[95,1],[-42,3],[53,5],[-49,3],[0,13],[180,11]],[[2530,6098],[8,-8],[4,5],[7,-7]],[[2549,6088],[-17,-28],[-9,-9],[-2,-15],[2,-14],[-6,-9]],[[2517,6013],[-6,-1],[2,-10],[-5,-3],[-10,-17],[-1,-9]],[[2497,5973],[-15,12],[-19,1],[-9,9],[-17,25]],[[2437,6020],[3,7],[-1,33],[1,10],[11,38],[36,0],[2,20],[-7,4],[-4,17],[-8,7],[-1,7],[-9,13],[12,0],[1,33],[50,0]],[[9022,5957],[-2,-11],[-3,10],[5,12],[4,-3],[-4,-8]],[[3409,5499],[-2,-9],[4,-10],[-2,-8],[-13,-2],[-5,-8],[2,-9],[-6,-39],[4,-7],[2,-13],[5,-8],[0,-8],[10,0],[2,-28],[6,-15],[0,-8],[9,-27],[6,-5]],[[3312,5482],[-18,43],[8,14],[-2,28],[9,7],[5,-2],[11,21],[-7,0],[-5,21],[5,19],[5,3],[15,22],[-6,18]],[[3332,5676],[4,-9],[7,-3],[15,-20],[17,-36],[1,-15],[-4,-18],[1,-10],[3,13],[4,2],[10,-8],[9,-18],[2,-9],[6,-1],[5,-11],[0,-27],[-3,-7]],[[8172,6482],[5,-7],[-5,-9],[-9,5],[5,9]],[[7037,2130],[10,-6],[-7,-4],[-3,10]],[[2691,6046],[-12,-1],[-4,-8],[-12,-4],[-8,-7],[-8,2],[-3,9],[-6,-6],[-4,-11],[0,-12],[-5,-3],[-5,-13],[-6,-5],[0,-7],[-8,9],[-8,-14],[-13,-2],[2,-26],[-6,-2],[0,-10],[-11,-5]],[[2574,5930],[-4,22],[-10,3]],[[2560,5955],[3,17],[-2,12],[-6,-1],[-3,6],[-10,-8],[0,7],[-7,3],[-8,17],[-10,5]],[[2549,6088],[8,9],[7,2],[7,-7],[2,4],[12,-6],[4,3],[12,-1],[13,11],[15,-6],[11,6],[18,-9],[13,-22],[-8,6],[10,-19],[8,0],[-7,9],[9,-6],[4,-13],[4,-3]],[[5512,7634],[1,-9]],[[5513,7625],[-8,12],[-27,21],[12,-5]],[[5466,7679],[-8,-5],[-2,8],[10,-3]],[[5412,7751],[11,-14],[-10,8],[-1,6]],[[5401,7772],[0,-20],[-5,27],[5,-7]],[[5404,7789],[3,-10],[-5,-3],[2,13]],[[5458,7861],[5,-3],[18,-29],[6,0],[9,-10],[17,0],[11,9]],[[5524,7828],[3,-33],[12,-10],[-10,-3],[-1,-17]],[[5488,7656],[-12,12],[-6,13],[-14,10],[-11,-4],[-2,10],[-14,14],[-9,17],[8,5],[-15,23],[-1,23],[-9,12],[-7,2],[-3,-20],[-8,-11],[-8,20],[0,20]],[[5377,7802],[9,-3],[13,3],[6,6],[20,-9],[-2,17],[12,6],[-2,20],[9,5],[8,12],[8,2]],[[3002,6248],[-1,2]],[[2977,6260],[-12,8],[1,7],[11,-10],[0,-5]],[[3000,6254],[2,-6]],[[3006,6222],[-8,11],[-24,-5],[-11,6],[-8,0],[-6,-5],[1,-8],[-12,16],[-7,4],[2,15],[6,2],[16,-10],[24,-4],[4,8],[7,-2],[0,7],[-13,23],[1,19],[3,2],[-9,11],[-11,1],[-2,6],[8,10],[11,2],[13,-11],[15,-2]],[[5614,7970],[21,-26]],[[5635,7944],[-8,-11],[-4,2],[-13,-17],[-4,-19],[-5,-6],[-4,-21],[-6,-5],[-1,-12],[-6,-10],[-7,2],[-5,-8],[-10,-1]],[[5562,7838],[-16,4],[-11,-11],[-11,-3]],[[5458,7861],[-7,21],[-4,-1]],[[5476,7947],[6,-1],[10,-13],[15,0],[14,3],[-1,10],[7,4],[14,3],[4,7],[8,-7],[12,11],[3,13],[9,3],[9,-5],[11,3],[5,-11],[12,3]],[[8426,4574],[2,-3],[-6,-11],[-11,-6],[0,8],[6,3],[10,17],[-1,-8]],[[8386,4582],[-1,-10],[-6,2],[7,8]],[[8333,4644],[9,-18],[4,2],[10,-24],[-10,-15],[-9,5],[-5,14],[-10,12],[-15,3],[-4,11],[10,10],[20,0]],[[8473,4637],[-2,-11],[-16,-29],[-8,0],[-2,-6],[-12,-5],[-3,9],[7,6],[-5,10],[2,16],[10,18]],[[8444,4645],[2,-5],[7,4],[3,10]],[[8456,4654],[13,13]],[[8469,4667],[7,-5],[0,-8],[-6,-2],[3,-15]],[[8318,4695],[-3,-16],[1,18],[2,-2]],[[8424,4708],[1,-8],[-8,-2],[4,11],[3,-1]],[[8242,4700],[-7,-24],[3,-4],[-11,-3],[-10,6],[6,6],[-1,15],[7,13],[8,-1],[5,-8]],[[8442,4708],[-5,-4],[-10,-16],[-5,4],[7,9],[-2,6],[12,4],[3,-3]],[[8450,4700],[-5,-10],[-4,6],[11,16],[-2,-12]],[[8858,4702],[-10,-1],[7,12],[3,-11]],[[8265,4700],[-2,12],[5,2],[-3,-14]],[[8459,4715],[2,-3],[13,1],[1,-11],[-22,-6],[3,18],[3,1]],[[8550,4716],[8,-3],[-2,-6],[-6,9]],[[8276,4716],[4,0],[5,-15],[6,7],[6,-6],[8,2],[1,-19],[-18,-12],[0,10],[-7,-11],[-12,-2],[-9,-9],[-7,-2],[-11,5],[2,11],[-1,13],[12,14],[6,-8],[4,5],[6,-18],[14,4],[-6,11],[-4,1],[-6,16],[7,3]],[[8415,4713],[2,-8],[-7,-8],[2,-8],[-13,-10],[-8,1],[-9,-9],[-11,5],[-1,-7],[-12,0],[-2,6],[-7,2],[-9,-3],[-13,4],[0,11],[13,18],[19,-4],[15,-16],[15,11],[6,-12],[6,1],[0,7],[12,12],[-4,4],[3,8],[3,-5]],[[8208,4712],[5,-15],[-14,-15],[-7,13],[-11,8],[-3,14],[12,-6],[8,8],[10,-7]],[[8604,4733],[0,-14],[-5,14],[5,0]],[[8519,4741],[-6,-15],[-15,2],[-5,-7],[5,21],[11,-2],[8,7],[2,-6]],[[8857,4720],[-12,-20],[-23,0],[5,24],[6,21],[6,8],[11,6],[5,-1],[7,-11],[-5,-27]],[[8656,4770],[0,-26],[-8,-16],[-7,-6],[3,28],[10,23],[2,-3]],[[8664,4774],[1,-9],[-7,7],[6,2]],[[8166,4787],[3,-6],[-12,-8],[-3,-6],[-12,-1],[-12,5],[4,15],[32,1]],[[8204,4789],[6,-5],[-10,-1],[4,6]],[[8738,4813],[-1,-5],[-6,7],[3,6],[4,-8]],[[8733,4812],[3,-8],[-6,-16],[-7,2],[2,30],[-1,7],[9,-15]],[[7948,4837],[3,4],[13,-9],[8,1],[0,9],[9,-3],[2,-10],[7,-5],[6,2],[5,-8],[8,5],[5,-14],[2,-16],[11,-1],[10,-5],[4,4],[11,-7],[7,4],[5,-7],[7,8],[2,19],[4,5],[7,-1],[3,-15],[12,3],[12,-14],[16,1],[0,-13],[6,-8],[-2,-17],[16,-15],[12,4],[7,6],[13,-11],[-3,-41],[7,-10],[-18,4],[-20,20],[-6,-1],[-10,-8],[-9,6],[-16,4],[-2,-6],[-9,6],[-11,0],[-13,8],[-14,14],[-18,10],[-23,1],[-2,-7],[-18,4],[-11,14],[-25,5],[-4,10],[4,15],[-7,-1],[-7,10],[-20,-2],[3,10],[2,-8],[4,17],[5,1],[1,18],[5,17],[4,-6]],[[8346,4810],[-1,39],[3,-8],[-2,-31]],[[8685,4859],[3,-16],[-4,0],[1,16]],[[8737,4870],[5,-12],[1,-27],[-5,-14],[-8,8],[-1,9],[2,19],[6,17]],[[7843,4868],[-9,8],[9,-3],[0,-5]],[[8386,4889],[2,1],[2,-20],[-3,-2],[-4,10],[3,11]],[[8410,4898],[-4,-6],[0,-18],[-10,-1],[3,23],[-2,8],[11,13],[2,-19]],[[8422,4913],[0,-9],[-5,6],[-2,-24],[7,-6],[-2,-7],[-8,-5],[0,-10],[-6,-1],[-2,9],[5,17],[3,22],[0,15],[4,10],[6,-17]],[[8418,4952],[5,-5],[-3,-8],[-5,6],[3,7]],[[8564,4977],[-2,-8],[-9,-3],[3,10],[8,1]],[[8225,4951],[-3,23],[3,18],[4,5],[1,-36],[-5,-10]],[[8523,5004],[7,-6],[-2,-7],[6,-2],[0,-14],[-15,-15],[-15,15],[-5,14],[1,12],[11,5],[12,-2]],[[8598,5023],[14,-13],[8,1],[7,-8],[1,-15],[7,-11],[-1,-17],[-24,23],[-3,8],[-9,2],[-2,-10],[-15,7],[-2,8],[-6,-10],[-7,-2],[-6,20],[-4,-17],[-6,11],[8,6],[1,12],[21,0],[5,-5],[13,10]],[[7789,5006],[0,-13],[-7,21],[0,8],[6,-7],[1,-9]],[[7994,5036],[13,-12],[-2,-21],[-6,-7],[-3,11],[-8,-10],[0,26],[2,12],[4,1]],[[7782,5024],[-5,-4],[0,20],[5,-16]],[[7769,5060],[4,-12],[-4,1],[-5,11],[5,0]],[[8501,5041],[-3,3],[-3,21],[4,3],[2,-27]],[[8483,5079],[15,1],[11,-2],[-2,-3],[-24,-4],[0,8]],[[8620,5085],[2,-15],[-6,-6],[-14,10],[10,9],[8,2]],[[8458,5089],[22,-6],[0,-9],[-8,-3],[-7,2],[-10,-6],[-1,20],[4,2]],[[8762,5091],[20,-3],[6,-5],[14,-4],[-11,-5],[-15,5],[-14,12]],[[7940,5097],[5,-5],[4,-17],[0,-18],[4,-16],[14,-6],[-5,-8],[-2,-12],[4,-10],[-22,15],[0,21],[-3,4],[-1,14],[-18,4],[0,8],[7,9],[-3,5],[9,9],[2,-13],[3,1],[-2,12],[4,3]],[[8550,5100],[9,-9],[-6,-5],[-11,-3],[-5,6],[1,9],[6,8],[6,-6]],[[8421,5116],[1,-14],[3,9],[6,-1],[0,-10],[-4,-5],[-3,6],[-1,-12],[-3,18],[-6,-15],[-4,10],[3,13],[8,1]],[[8044,5127],[4,-10],[-9,-8],[0,18],[5,0]],[[7746,5129],[7,-31],[4,-7],[-2,-11],[-9,6],[-9,29],[3,13],[6,1]],[[8636,5129],[4,-8],[-2,-16],[-7,6],[-3,15],[8,3]],[[8634,5139],[-7,-9],[-4,6],[11,3]],[[8761,5145],[12,-2],[9,-20],[6,-4],[-7,-7],[-7,2],[-4,22],[-3,-4],[-6,13]],[[8536,5138],[-5,0],[3,9],[2,-9]],[[8915,5033],[0,-218],[-3,-12],[3,-17],[0,-128]],[[8915,4658],[-10,18],[-4,12],[-15,28],[-17,-5],[-3,6],[-7,-8],[-1,19],[5,19],[-4,4],[-7,18],[13,-3],[-12,8],[-4,13],[10,2],[-8,7],[1,5],[-7,13],[-3,32],[-8,7],[0,12],[-4,8],[-15,20],[-21,12],[-18,18],[-14,4],[-7,-1],[-16,20],[1,11],[-4,-6],[-5,9],[-1,-9],[-5,7],[1,8],[-6,-4],[-4,14],[-3,-5],[0,28],[6,6],[-1,9],[-6,-11],[0,-14],[-7,-21],[1,-8],[-5,-11],[-7,-3],[-6,11],[-2,14],[6,8],[-9,15],[-3,12],[-6,8],[-6,-2],[-2,12],[5,5],[10,-2],[4,-6],[9,18],[7,5],[7,-10],[8,7],[4,12],[-1,9],[-7,-8],[-11,2],[-16,-6],[-4,7],[-6,-5],[-8,11],[-4,22],[-5,11],[-9,2],[-5,-3],[-7,4],[3,13],[5,6],[0,18],[7,5],[8,0],[10,17],[8,5],[8,-1],[12,-10],[6,-11],[17,0],[5,-8],[-4,-5],[7,-22],[-1,-12],[-4,-7],[2,-39],[5,-10],[3,-17],[1,17],[5,-3],[1,-23],[5,-17],[6,-6],[11,0],[2,7],[10,16],[1,11],[9,14],[3,18],[9,-2],[14,10],[-3,16],[19,18],[4,0],[11,-13],[9,-4],[5,-10],[7,-3],[20,-21],[10,3],[16,-10],[-2,-6],[8,0]],[[7903,5160],[0,-12],[-8,7],[6,9],[2,-4]],[[8544,5159],[1,-17],[6,0],[-1,-9],[-5,6],[-5,-3],[0,10],[-5,11],[6,9],[3,-7]],[[8533,5168],[1,-14],[-4,-1],[0,14],[3,1]],[[7735,5153],[-4,0],[3,16],[1,-16]],[[7881,5163],[-8,-1],[3,8],[5,-7]],[[8633,5183],[14,-10],[-2,-13],[-6,2],[-11,13],[8,-16],[-6,-1],[-1,8],[-9,2],[-2,9],[15,6]],[[7737,5167],[-5,8],[0,8],[5,-16]],[[7904,5183],[11,-16],[-7,4],[-8,-1],[4,13]],[[7850,5240],[4,0],[7,-11],[-14,-1],[-1,20],[4,-8]],[[7861,5243],[2,-12],[-8,11],[-5,-1],[5,9],[6,-7]],[[7892,5248],[-1,-8],[-5,3],[6,5]],[[7904,5252],[2,-10],[-2,-11],[-3,13],[-6,-3],[2,9],[7,2]],[[7845,5238],[-6,7],[-1,17],[3,2],[5,-9],[-1,-17]],[[7704,5270],[3,-2],[6,-18],[6,-7],[-2,-28],[-4,1],[-3,14],[-5,7],[-8,26],[7,7]],[[7839,5273],[7,-4],[0,-13],[-10,11],[-2,10],[5,-4]],[[8473,5279],[5,-11],[-3,-3],[-6,-26],[-5,-5],[-7,-25],[-24,-11],[-11,3],[-4,10],[-24,0],[-12,-4],[-6,6],[-13,-7],[-11,7],[-10,-4],[-7,-19],[-3,-19],[3,-26],[4,-13],[5,-1],[5,-12],[2,-17],[13,1],[2,12],[8,18],[5,-3],[13,0],[1,9],[15,-2],[7,4],[-7,4],[10,6],[9,-5],[0,-20],[-3,-4],[-4,11],[-9,-3],[-8,-23],[-9,-17],[-12,-6],[-3,-12],[-10,8],[0,-8],[8,-15],[5,-3],[11,-32],[7,-26],[-5,-8],[-1,-14],[13,-17],[-1,-9],[7,-3],[0,-15],[-4,-6],[-4,6],[-14,-7],[-2,-7],[2,-12],[-12,1],[-5,9],[1,25],[3,8],[-8,7],[-13,25],[0,9],[5,10],[1,26],[-8,8],[-17,-20],[6,-16],[0,-25],[-2,-12],[1,-36],[2,-7],[-4,-14],[-1,-14],[5,-24],[-15,-2],[-4,-8],[-11,16],[0,14],[3,7],[0,18],[4,19],[0,23],[-5,19],[2,12],[-6,3],[-10,-8],[-3,14],[2,27],[-4,0],[1,13],[3,-1],[7,11],[-1,15],[3,13],[4,2],[-2,14],[0,26],[5,11],[1,11],[7,11],[1,50],[3,16],[4,4],[-1,10],[9,8],[7,-3],[6,14],[0,15],[3,3],[10,-7],[5,3],[0,-9],[5,-4],[8,2],[8,-5],[7,1],[10,-12],[4,8],[19,-6],[8,1],[10,8],[9,23],[10,19],[2,-4]],[[7825,5301],[0,-16],[-7,-2],[-2,18],[9,0]],[[8556,5309],[-6,-20],[5,-6],[0,-25],[-11,-20],[3,-8],[6,3],[0,8],[7,8],[-3,5],[3,9],[11,11],[4,-1],[-1,-29],[-11,-9],[0,-14],[11,-6],[0,-13],[-20,8],[-3,-10],[1,-20],[5,-25],[10,-24],[-11,11],[-5,20],[-5,6],[1,34],[-4,4],[-2,38],[-3,10],[4,12],[0,12],[4,16],[10,15]],[[8571,5333],[3,-7],[-3,-21],[-8,-7],[-3,16],[5,13],[6,6]],[[7663,5350],[2,-7],[14,-20],[-5,0],[-14,13],[-4,9],[7,5]],[[8268,5370],[-4,6],[4,4],[0,-10]],[[8489,5385],[-4,-3],[0,16],[4,-13]],[[8269,5423],[5,-1]],[[8274,5422],[-2,-7],[-3,8]],[[8008,5418],[2,-16],[-2,-7],[-8,11],[-1,9],[7,11],[2,-8]],[[8265,5422],[-5,1],[11,-21],[-1,-10],[-15,-1],[7,-13],[-5,-10],[11,-13],[-4,-4],[16,-37],[-8,-15],[1,-8],[7,-13],[9,-10],[10,-16],[6,-14],[-7,-9],[-16,4],[-8,12],[4,-17],[-6,2],[-6,-18],[-4,-26],[2,-2],[-3,-17],[1,-14],[4,4],[-3,-14],[4,-4],[-9,-8],[-1,5],[-7,-22],[-14,-16],[1,-8],[-9,-10],[6,1],[-2,-24],[6,0],[-2,-19],[-4,-2],[0,-18],[-5,-7],[-6,-36],[-38,-32],[0,28],[-14,23],[-6,-9],[-9,3],[0,12],[-6,-6],[-9,20],[-3,-10],[3,-3],[-14,-16],[-9,6],[-7,-11],[-4,-1],[1,27],[-4,17],[0,-10],[-4,-4],[-7,5],[-9,-9],[-7,6],[-2,-5],[-3,12],[-7,-8],[-6,62],[-5,8],[3,3],[2,20],[-4,16],[-7,11],[-7,4],[-2,-4],[-7,21],[0,34],[5,-2],[-5,14],[-5,4],[0,20],[3,50],[7,9],[1,14],[9,9]],[[8045,5303],[-3,-16],[3,-12],[17,-35],[7,-8],[8,3],[2,6],[10,4],[7,-6],[9,2],[8,7],[2,18],[8,7],[15,0],[-2,-8],[9,-3],[11,-8],[7,12],[16,-1],[5,12],[1,13],[3,2],[-1,20],[12,14],[-4,12],[1,10],[5,10],[6,-1],[4,65],[5,11],[6,-4],[3,5],[7,-4],[10,4],[13,0],[10,-12]],[[8523,5442],[2,-13],[-3,-14],[-4,-2],[2,32],[3,-3]],[[7652,5506],[11,-6],[4,-11],[10,-6],[12,4],[10,-8],[9,6],[11,-21],[3,-16],[6,-9],[0,-16],[13,-17],[3,-9],[6,-5],[20,-26],[7,-15],[-1,-13],[3,-5],[3,6],[6,-23],[14,-21],[-2,19],[6,1],[8,-16],[1,-14],[10,-6],[12,-18],[1,-19],[7,-15],[13,-3],[5,-14],[-13,-13],[8,1],[12,15],[11,-13],[2,-18],[-7,0],[-6,-21],[7,-4],[-5,-5],[1,-12],[4,-12],[9,-1],[7,-6],[6,2],[2,-16],[1,-28],[4,-14],[7,-5],[-1,-9],[8,-5],[13,-1],[0,-13],[5,-6],[0,-10],[6,-4],[2,-14],[-6,-14],[-1,-15],[3,-5],[-4,-25],[2,-13],[0,-26],[-2,-53],[-7,2],[-7,19],[-3,-6],[0,-12],[-8,6],[-9,11],[-1,-4],[5,-19],[-4,-3],[-3,11],[-10,17],[-5,19],[-7,10],[-11,12],[-28,46],[-1,17],[-17,23],[-8,29],[-9,16],[-5,17],[2,7],[-9,34],[0,8],[-5,3],[1,11],[-9,30],[-9,14],[0,13],[-4,9],[-9,10],[-5,1],[-1,21],[-9,45],[0,20],[-3,0],[-7,14],[-5,2],[-9,14],[-7,6],[-2,27],[-5,5],[-4,14],[-3,5],[-8,23],[-11,6],[-8,21],[-6,5],[-13,28],[-5,27],[-3,6],[0,17],[8,2]],[[4872,8298],[-4,5],[8,13],[4,-7],[-8,-11]],[[7606,5598],[2,-16],[-2,-11],[-5,16],[0,9],[5,2]],[[7571,5804],[0,-12],[-5,0],[-1,12],[6,0]],[[7583,5964],[1,-29],[-3,1],[1,-36],[-3,-2],[1,-13],[-5,-6],[2,-9],[-2,-25],[-5,13],[5,34],[0,29],[2,1],[0,26],[6,16]],[[7448,6428],[-4,1],[4,13],[0,-14]],[[7248,6922],[-16,-24],[0,-12],[-5,-9],[1,-17],[-7,-14],[9,-14],[9,-1],[7,-10],[9,-6],[2,-11],[15,-17],[6,3],[11,-14],[7,2],[1,-11],[12,-4],[18,0],[8,4],[6,-8],[8,-2],[1,-18],[8,-3],[10,-14],[9,7],[7,-16],[4,5],[9,-3],[11,-11],[7,7],[9,-11],[13,6],[7,-5],[4,17],[0,13],[-6,11],[2,24],[3,21]],[[7703,6808],[0,-19],[-13,-15],[0,-11],[7,-21],[-7,6],[-4,10],[-21,-9],[-2,-10],[-14,-19],[-9,-5],[-2,-21],[4,-12],[-4,-6],[0,-10],[-10,-18],[-2,-16],[3,-3],[-2,-22],[-3,-2],[-6,-22],[-5,-27],[-11,9],[-11,-2],[4,-18],[-2,-30],[-9,-21],[2,-34],[-3,1],[-1,-12],[-8,9],[-3,-10]],[[7473,6457],[-4,-11],[5,-18],[-6,2],[-4,-6],[-2,22],[-5,-3],[-1,-16],[-7,0],[-1,26],[-8,-18],[-21,-14],[-8,-19],[6,-28],[-7,-10],[-4,-16],[-4,-3],[-6,-16],[-19,-10],[-5,9],[-5,-13],[5,1],[-15,-26],[-9,-26],[-13,-29],[-9,-8],[-6,-10],[-9,-22],[-21,-21],[-6,-16],[3,-5],[-1,-14],[-6,-9],[-11,-8],[-10,4],[-4,-3],[-1,-20],[-10,-15],[-1,10],[-6,-1],[-9,-10],[-3,-17],[-2,-18],[3,-24],[-1,-30],[3,-29],[-5,-4],[7,-9],[0,-14],[-3,-37],[-8,-24],[-4,-26],[2,-16],[0,-46],[1,-17],[-15,0],[-2,-15],[-8,-21],[-2,-13],[5,-9],[-20,-12],[-5,-12],[-2,-22],[-2,-8],[-16,-16],[-7,6],[-11,22],[-7,19],[-6,25],[-3,32],[4,-10],[0,11],[-6,7],[-2,18],[-6,30],[-1,14],[-9,36],[-9,17],[-6,25],[-6,34],[-2,33],[-8,39],[-1,14],[-7,14],[-2,12],[-4,5],[0,15],[-3,4],[-4,24],[-4,8],[-5,29],[-1,37],[-5,30],[-6,45],[1,7],[-3,22],[-1,23],[-3,24],[2,33],[4,12],[-2,36],[-3,-4],[-3,11],[2,16],[12,11],[-16,-3],[2,14],[-2,14],[9,5],[-13,4],[-2,-15],[-8,-7],[8,-18],[-6,-25],[-17,-17],[-14,-11],[-5,0],[-10,9],[-11,17],[-15,33],[-15,29],[0,10],[7,1],[0,-9],[14,12],[3,-3],[9,7],[7,23],[-10,-1],[-9,-10],[-13,5],[-11,10],[-9,15],[-4,19],[-6,14]],[[6893,6556],[5,7],[10,0],[0,19],[13,-3],[11,2],[5,-7],[6,0],[3,8],[13,7],[0,-8],[6,-3],[9,10],[-4,12],[3,3],[-5,27],[-6,14],[0,17],[-10,1],[-6,14],[2,35],[-9,2],[-10,11],[1,17],[10,20],[6,22],[7,12],[6,1],[4,-16],[4,-2],[9,7],[20,8],[0,9],[8,16],[5,21],[16,16],[9,29],[3,22],[12,8],[4,7],[-2,10],[6,11],[6,19],[10,12],[-4,2],[3,17],[-2,24],[7,10],[14,8],[1,10],[-8,8],[-11,2],[0,14],[-9,2],[0,13],[-9,10],[4,22],[-5,5],[1,10],[7,10],[-9,1],[1,16],[-5,3],[4,19],[13,6],[7,-5],[16,-2],[11,-9],[11,11],[17,3],[3,10],[5,1],[4,11]],[[7140,7205],[20,22]],[[4825,8298],[2,-37],[6,-29],[-6,-16],[-4,-28],[-10,1],[-8,-4],[-12,0],[-5,-10],[-7,0],[-4,-8],[-7,-1],[-12,-14],[-20,0],[-11,-8],[10,14],[-20,-4],[12,13],[-11,-6],[-7,10],[13,14],[-15,-2],[5,10],[13,-2],[-1,11],[8,12],[-10,-5],[12,12],[5,21],[10,8],[-16,-2],[-14,9],[-3,9],[6,13],[0,24],[-5,4],[22,4],[23,-3],[-5,4],[12,9],[3,8],[-15,-1],[-2,7],[10,6],[2,18],[15,2],[6,-6],[4,17],[13,-9],[-9,-9]],[[6560,6732],[-4,-9],[-5,0],[-16,-12],[0,7],[13,7],[13,13],[-1,-6]],[[6357,7396],[3,-38],[4,-9],[9,-7],[13,-2],[9,-5],[2,-13],[21,-24],[23,-9],[43,18],[16,-4],[-3,30]],[[6497,7333],[8,-1],[16,11],[1,13],[9,13],[9,7],[24,0],[3,10],[17,-4],[5,4],[3,-17],[23,-10],[8,-9],[10,3],[11,-10],[10,-21],[13,-7],[8,-22],[23,0],[2,-31],[-3,-8],[4,-5],[0,-15]],[[6689,6902],[14,-27],[0,-8],[6,-21],[10,-20],[14,-8],[5,-10],[5,-1],[-1,-12],[2,-18],[-1,-26],[11,2],[4,-8],[-4,-17],[0,-11],[-12,0],[-12,-7],[-2,-10],[-11,-7],[-7,-59]],[[6710,6634],[-5,-8],[-10,9],[-12,4],[-1,9],[-5,-6],[-24,3],[-2,4],[-12,-4],[-6,10],[-7,2],[-14,-2],[-4,8],[-17,5],[-4,19],[-4,42],[-6,17],[-11,3],[-8,-2],[-5,-8],[-9,-4],[-3,-11],[-6,2],[-13,-17],[-11,5],[-3,7],[-17,0],[-8,16],[-10,6],[-13,16],[-4,16],[-12,11],[-9,-1],[-8,6],[-9,35],[0,12],[-8,13],[2,10],[-6,0],[1,16],[-15,30],[0,10],[-5,6],[-11,-12],[-2,9],[-7,-1],[-9,13],[8,-1],[0,9],[-9,-8],[1,-20],[-11,-4]],[[6347,6908],[-3,15],[-11,14],[0,31],[-9,0],[0,23],[4,21],[-9,22],[-5,19],[-6,-1],[-14,21],[-16,15],[4,5],[-4,15],[-11,15],[-5,22],[3,14],[-4,8],[2,8],[6,-3],[-2,9],[7,21],[7,2],[1,7],[-6,16],[1,10],[6,2],[-4,9],[-6,-3],[-14,14],[-3,21],[-5,0],[-1,18],[-6,5],[2,12],[-3,7]],[[6243,7322],[0,10],[-6,6],[1,17],[-10,17],[6,20],[-4,0],[-3,45],[-5,13],[11,4],[4,19],[7,-7]],[[6347,6908],[-13,5],[-3,-3]],[[6331,6910],[-7,6],[-9,0],[-6,-5],[-8,-33],[-9,-20]],[[6292,6858],[-5,-2],[-46,8],[-62,91],[-11,18],[-47,49],[-34,10]],[[6087,7032],[4,8],[-7,3],[0,11],[-8,51]],[[6076,7105],[4,3],[43,44],[14,11],[7,22],[1,40],[3,8],[-2,23]],[[6146,7256],[0,0]],[[6146,7256],[0,20],[3,10],[13,5],[15,26],[-1,3]],[[6176,7320],[6,2],[6,13],[9,0],[10,-7],[12,-2],[8,4],[1,-18],[11,12],[4,-2]],[[4554,9014],[7,-14],[12,-7],[12,13],[-4,-20],[10,2],[-2,-20],[12,4],[0,-8],[21,-10],[-4,-10],[6,-8],[-13,-25],[-13,-4],[-2,-15],[-24,-8],[-39,-26],[-31,-6],[-1,-11],[-23,-7],[-27,8],[-12,0],[-28,20],[-42,-4],[4,9],[14,4],[10,10],[2,11],[-13,-6],[-9,29],[-32,1],[-11,-4],[-3,8],[23,2],[15,8],[25,-2],[-21,7],[22,16],[-39,7],[-20,-9],[-18,6],[7,8],[12,-7],[-8,15],[17,-5],[-9,12],[10,17],[20,-8],[-5,7],[9,16],[11,-11],[25,-14],[-2,-19],[9,-29],[0,13],[9,15],[9,-10],[5,13],[-5,20],[9,3],[13,-22],[6,-1],[-1,19],[22,6],[16,-26],[-6,27],[10,-1],[10,-11],[12,14],[6,-6],[13,3],[-3,19],[15,2]],[[5993,7068],[-6,-5],[0,-15]],[[5987,7048],[-10,8],[-6,-14],[0,-19],[6,-9],[-7,-11],[-2,-14],[10,1],[5,6]],[[5983,6996],[0,-9]],[[5983,6987],[0,-6]],[[5983,6981],[1,-8]],[[5984,6973],[-8,-34],[0,-21],[-6,-33]],[[5970,6885],[-2,-4]],[[5951,6980],[8,18],[-2,4]],[[5957,7002],[7,21],[6,44],[5,21]],[[5975,7088],[10,0],[1,9],[8,10]],[[5994,7107],[-1,-9],[3,-19],[-3,-11]],[[5434,7386],[-12,-29],[-3,-25],[6,-18],[-6,-11],[1,-8],[-10,1],[-8,6],[-3,10],[-7,8],[-7,-1],[-25,27],[-10,1],[-4,6],[0,19],[7,6],[6,-6],[4,10],[7,1],[10,-13],[9,4],[9,-2],[17,10],[4,-4],[12,11],[3,-3]],[[5256,7557],[8,-6],[8,-34],[-5,-14],[3,-13],[-2,-30],[-6,-24],[-10,6],[-5,-19],[-8,0],[-7,17],[5,39],[-4,1],[2,23],[-5,17],[-4,0],[2,16],[8,-2],[9,6],[11,17]],[[5380,7862],[-9,-16],[7,-7],[-4,-8],[3,-12],[8,-10],[-5,-1]],[[5380,7808],[1,7],[-18,1],[-3,-5],[-16,-12],[-4,2],[-1,-16],[9,-13],[-6,-7],[-2,-13],[2,-18],[8,-16],[9,-7],[19,-21],[12,-54],[18,-28],[12,-11],[25,0],[4,-9],[-8,-15],[19,-17],[13,-7],[14,-18],[13,-8],[0,-6],[12,-15],[2,-10],[-4,-18],[-9,6],[-5,23],[-11,0],[-14,11],[-11,-25],[-2,-21],[9,-5],[9,-11],[-1,-29],[-11,-1],[-5,-8],[1,-18],[-8,-10],[-8,-20],[-10,4],[0,15],[5,3],[3,12],[-3,8],[9,5],[2,12],[-4,8],[-2,21],[-4,6],[-2,20],[-7,11],[-5,-5],[-12,13],[2,8],[-6,18],[-8,1],[-5,8],[-7,3],[-10,22],[-10,1],[-8,-3],[-5,11],[-7,2],[-12,24],[-10,10],[-8,18],[-10,5],[-3,12],[-9,9],[1,6],[-8,2],[1,18],[-7,17],[0,14],[-5,13],[-7,1],[-16,17],[-15,5],[-14,-19],[-3,-11],[-17,-6]],[[5344,7711],[0,0]],[[5345,7596],[0,0]],[[2849,6246],[15,-3],[3,-8],[12,-7],[4,-14],[-9,-3],[-10,6],[-1,-7],[-6,3],[-1,-11],[-7,10],[-8,-1],[-7,10],[-3,10],[-8,2],[5,12],[10,5],[11,-4]],[[6087,7032],[-4,-6],[-57,-30],[15,-28],[13,-29],[-9,-10],[-4,-18],[-21,-8],[-7,-22],[-12,-17],[-31,9]],[[5970,6873],[0,12]],[[5984,6973],[-1,8]],[[5983,6987],[4,0],[0,25]],[[5987,7012],[0,36]],[[5993,7068],[7,-5],[10,-16],[12,-3],[54,61]],[[8563,6721],[-5,-10],[-7,-5],[-4,-21],[0,20],[7,8],[-3,7],[7,-1],[4,12],[1,-10]],[[8603,6820],[-13,-15],[0,9],[11,11],[2,-5]],[[8624,6937],[5,-5],[-7,-8],[2,13]],[[8639,6942],[-5,-5],[6,22],[-1,-17]],[[8616,7056],[0,-12],[-6,-7],[1,18],[5,1]],[[8578,7069],[-1,-10],[-6,2],[7,8]],[[8638,7135],[3,-16],[7,-3],[9,6],[1,-15],[-5,-9],[10,1],[0,-17],[5,-2],[-11,-22],[-6,-38],[0,-16],[-3,-14],[-7,5],[1,-11],[-12,-13],[2,20],[-5,12],[-2,-4],[0,-22],[-9,5],[4,18],[-5,12],[1,21],[2,-2],[8,19],[-2,11],[3,12],[-5,15],[-8,2],[7,-19],[-6,-11],[1,11],[-10,-10],[-6,18],[1,10],[4,-14],[5,-1],[-1,10],[-11,11],[1,10],[6,-2],[18,22],[2,9],[6,4],[7,-3]],[[8726,7162],[8,-9],[5,1],[-1,-13],[4,-10],[-10,-11],[-5,-23],[-8,15],[-5,2],[-13,-11],[0,-7],[-7,-11],[-1,-16],[-10,0],[3,9],[-6,1],[-6,31],[11,14],[2,17],[6,6],[5,-10],[10,2],[3,14],[8,9],[7,0]],[[8747,7160],[-3,-8],[-3,8],[8,15],[-2,-15]],[[8595,7181],[-2,-23],[-3,4],[1,16],[4,3]],[[8845,7375],[1,-10],[-6,-6],[-1,17],[8,13],[-2,-14]],[[8923,7564],[5,3],[-1,-34],[2,-14],[8,-11],[5,-22],[4,-26],[-5,-14],[0,-12],[-7,-6],[-5,-25],[1,-17],[-6,9],[-7,-6],[-3,-24],[3,-14],[-2,-39],[-5,-8],[-5,-19],[-1,-20],[8,-27],[-11,-7],[-2,-21],[-16,-17],[2,30],[5,11],[-8,0],[-4,-12],[1,-16],[-7,11],[-8,-5],[0,-21],[-9,-16],[-1,25],[-6,4],[-6,-11],[-4,-18],[-17,5],[-15,-6],[7,9],[-13,1],[0,16],[-5,-3],[-3,-22],[9,-9],[1,-10],[-7,3],[-10,-9],[0,-10],[-6,-8],[-3,-15],[-5,-7],[-10,5],[-1,8],[-9,11],[3,8],[-3,14],[10,17],[-2,9],[-11,-4],[-6,7],[-7,0],[-20,-18],[-10,1],[-3,-9],[-6,2],[-15,-9],[-1,9],[-8,-6],[-2,-24],[-11,13],[-16,-7],[-4,7],[-3,-8],[-1,25],[3,5],[12,-1],[3,10],[7,5],[17,28],[7,7],[-1,9],[17,8],[5,-8],[24,6],[7,7],[11,-2],[8,7],[-1,-12],[13,-4],[12,10],[-3,18],[5,16],[7,8],[10,28],[-1,26],[11,10],[6,1],[-3,-13],[-9,-5],[4,-6],[-2,-13],[10,-6],[3,10],[21,13],[10,12],[10,29],[14,15],[1,16],[9,23],[3,24],[4,10],[1,17],[-4,11],[-5,-3],[7,19],[1,11],[-5,13],[5,10],[7,3],[1,26],[9,-5],[3,-20],[3,9],[8,-6],[3,19],[-13,-5],[3,23],[10,-10]],[[8944,7799],[15,-24],[4,-13],[19,-27],[11,-7],[0,-6],[12,0],[3,-7],[13,-4],[15,25],[1,-8],[-7,-17],[-1,-9],[8,-28],[8,6],[-4,-12],[-6,0],[-8,-10],[-27,-4],[-11,-14],[-8,-20],[-3,-23],[-8,11],[-14,9],[-8,11],[-12,9],[-8,-3],[-12,-15],[-9,15],[-5,0],[-6,-18],[12,-8],[13,-20],[-13,-1],[-8,-7],[-6,-13],[-7,10],[5,14],[-3,17],[-7,6],[3,26],[12,7],[5,11],[-5,13],[6,8],[8,-9],[10,-3],[7,10],[-3,22],[9,14],[0,22],[3,6],[1,20],[-6,23],[3,12],[9,3]],[[6762,7807],[-15,8],[-3,11],[1,13],[12,14],[11,-3],[7,-11],[1,-13],[-4,-11],[-10,-8]],[[7140,7205],[-9,31]],[[6651,7782],[-20,19]],[[6631,7801],[12,18],[8,-37]],[[7227,7611],[-6,13],[-15,4],[-12,17],[-14,6],[-14,0],[-19,2],[-14,5],[-13,-5],[-16,1],[-3,-6],[-13,2],[-12,8],[-12,13],[-21,-10],[-5,-27],[3,-9],[-22,14],[-27,9],[-10,-1],[-10,-13],[-5,-15],[3,-3]],[[6970,7616],[-6,-3],[-4,-11],[-4,5],[-9,-16],[-20,-15],[0,-5],[-10,-5],[0,-10],[-13,-17],[1,-19],[-4,0],[-13,13],[4,14],[-5,7],[-33,-3],[-5,20],[-2,30],[-14,0],[2,57],[-8,-7],[-8,26],[-7,5],[-10,19],[-12,-10],[-37,4],[-32,-8],[-23,38],[-2,12],[-28,28]],[[6668,7765],[0,34],[-2,9],[-7,-1],[3,20],[17,-5],[8,16],[12,7],[2,14],[-11,2],[-3,9],[-13,3],[-8,-7],[4,-13],[17,0],[2,-11],[-4,-6],[-24,2],[-2,12],[-7,0],[7,-14],[-3,-17],[-8,-6],[-4,5],[4,13],[-15,-3],[-6,-23]],[[6627,7805],[-73,-31],[0,-212]],[[6554,7562],[-14,-3],[-15,32],[0,6],[-20,23],[-20,-3],[-14,-9],[-15,-21]],[[6456,7587],[-1,20],[6,15],[3,22],[-15,9],[-8,-3],[-6,18],[-12,0],[1,23],[-4,4],[-8,33],[-17,9],[1,17],[16,-1],[4,-6],[16,-2],[-17,20],[12,28],[9,5],[22,0],[11,-6],[10,2],[-15,10],[0,6],[9,18],[4,40],[-8,19],[-13,2],[-10,-10],[-16,14],[-9,3],[-12,-11],[-9,-2],[-18,-21],[-13,2],[-2,-14]],[[6367,7850],[-9,9],[-10,5],[0,12],[6,-6],[7,6],[-9,19],[-4,15],[-14,23],[-11,0],[-7,5],[-1,-9],[-7,7],[0,26],[-18,8],[8,30],[8,10],[-7,14],[3,28],[12,12],[-1,14],[9,9],[22,-37],[13,11],[-5,20],[0,13],[20,17],[0,15],[11,0],[15,12],[6,17],[5,6],[14,-3],[1,-11],[11,-1],[6,12],[11,6],[5,-16],[23,0],[9,-7],[1,-9],[7,-1],[6,-13],[10,-7],[-3,-16],[8,2],[1,24],[10,-13],[16,-15],[13,11],[11,20],[18,0],[5,-11],[11,1],[1,13],[22,-4],[0,-11],[10,-11],[16,-3],[1,-9],[7,4],[5,18],[9,-10],[15,-1],[17,10],[2,19],[4,6],[-7,11],[-10,1],[-3,8],[-16,3],[3,8],[-12,4],[11,15],[7,1],[10,11],[-10,23],[22,16],[17,-3],[1,7],[-13,9],[-14,3],[2,12],[-6,8],[5,11],[-6,3],[12,10],[4,-6],[43,7],[25,14],[25,5],[9,-4],[-1,10],[7,7],[15,-1],[15,6],[33,8],[13,6],[2,13],[10,0],[2,9],[8,-4],[-1,9],[8,-6],[13,0],[14,-11],[8,9],[14,-12],[1,-18],[6,-3],[-1,-23],[-6,0],[6,-13],[3,6],[11,-4],[10,5],[3,9],[9,-14],[-3,-13],[9,3],[-4,10],[11,-1],[3,-8],[11,-2],[8,7],[-3,-12],[-6,1],[-6,-17],[6,-8],[13,12],[14,-10],[1,12],[9,9],[7,-2],[12,11],[-2,4],[31,15],[12,8],[-7,-19],[-8,1],[3,-9],[34,-36],[7,-11],[42,-97],[12,-38],[15,7],[-1,14],[6,6],[15,-7],[-3,-15],[9,2],[2,-13],[11,3],[6,-4],[17,5],[18,12],[13,-7],[11,-20],[0,-15],[23,-14],[-2,-7],[9,-19],[19,-1],[6,-7],[12,20],[0,-10],[12,-22],[7,-9]],[[6163,5412],[-17,-50],[-9,-17],[0,-175],[1,-39],[15,-39],[0,-7]],[[6153,5085],[-6,-15],[-9,-4],[-4,-20],[-5,-9],[-5,0],[-9,-13],[2,-12],[-3,-18],[-6,-12],[-3,-25],[-4,-11],[-7,-30],[-6,-3]],[[6088,4913],[-21,33],[-19,27],[-5,13],[4,6],[-1,14],[-100,116]],[[5946,5122],[3,12],[-4,7],[0,10],[4,7],[9,-1],[-2,6],[11,4],[-4,11],[-10,-6],[2,-6],[-9,7],[-3,12],[1,12]],[[5944,5197],[4,21],[7,12],[2,15],[9,9],[2,18],[3,6],[0,26],[-3,18],[2,3],[-14,40],[-2,17],[2,13],[-8,5],[-3,24],[-2,2]],[[5943,5426],[11,23],[15,14],[14,9],[4,-7],[2,-16],[8,0]],[[7045,7454],[-13,-5],[-15,2],[-9,-5],[-2,-6],[-5,10],[-7,-7],[-2,12],[-8,8],[-12,-11],[-8,-1],[-4,11],[-36,-5],[-2,14],[7,20],[14,6],[18,-12],[1,7],[8,8]],[[6970,7500],[12,3],[11,-7],[9,15],[8,-3],[0,14],[7,-6],[4,9],[10,8],[-13,3],[-5,9],[-9,-1],[0,10],[-8,0],[-6,22],[-1,-10],[-6,-2],[0,-13],[-6,-1],[-12,7],[-4,14],[-4,-4],[-9,10],[8,7],[22,29],[-8,3]],[[6976,7489],[-6,4],[2,-14],[4,10]],[[6993,7480],[0,0]],[[6961,7477],[0,0]],[[7901,5783],[-6,7],[-11,2],[-7,-4],[-3,5],[5,13],[0,15],[-4,5],[-3,-16],[-9,2],[-2,38],[-3,3]],[[7858,5853],[0,7],[-6,22],[0,22],[-6,7],[0,21],[-3,7],[-2,25],[6,0],[10,26],[1,11],[9,8],[12,5],[9,-5],[5,3],[11,-2],[5,4],[6,-3],[2,-10],[4,8]],[[7921,6009],[3,-14],[13,-1],[3,-9],[6,-1],[2,7],[-6,19],[7,7],[6,-2],[3,6],[8,-14],[4,0],[8,11],[5,2],[2,10]],[[7985,6030],[0,-14],[-3,-2],[-2,-19],[3,-10],[0,-10],[5,-22],[-5,-20],[4,-24],[-2,-15],[-2,-6],[-4,5],[-8,-14],[-8,-7],[-8,-1],[0,-17],[-11,7],[-4,-13],[-1,-15],[9,-13],[1,-17],[-9,3],[-3,10],[-10,-2],[-3,-7],[-7,6],[1,-11],[-6,-13],[-9,0],[-2,-6]],[[627,5299],[5,-18],[-8,8],[3,10]],[[8522,7115],[1,-14],[-17,-6],[-2,8],[5,8],[13,4]],[[8508,7172],[1,-8],[-7,2],[6,6]],[[8575,7196],[-1,-14],[-5,11],[6,3]],[[8518,7361],[8,22],[5,6],[27,0],[7,17]],[[8565,7406],[7,-27],[14,-31],[6,-25],[4,-25],[-2,-7],[-1,-33],[4,-6],[-2,-25],[-9,-23],[-18,0],[-1,-15],[-3,6],[-17,1],[-2,-20],[-4,14],[0,-13],[-5,-9],[-3,13],[-6,-5],[-3,-11],[-4,3],[-4,-10],[-2,15],[-7,2],[0,9],[6,-7],[2,11],[-4,1],[-2,18],[2,17],[6,9],[-4,4],[8,7],[-7,10],[5,1],[-5,11],[-1,31],[-3,8],[3,12],[7,-1],[-6,42],[4,3]],[[5598,7616],[-9,-9],[-3,6],[-10,-8],[0,-11],[-5,0]],[[5557,7633],[8,15]],[[5565,7648],[9,17],[-2,6],[14,-7],[8,-19],[10,-5],[-6,-24]],[[6338,6909],[5,-15],[-4,-7],[-5,12],[4,10]],[[6345,6826],[-22,0],[-6,27],[-25,5]],[[6331,6910],[7,-26],[-6,2],[-7,-12],[10,-1],[2,-19],[8,-28]],[[7836,6473],[2,-9],[8,-12],[6,-22],[2,9],[5,-5],[0,-9],[-2,-23],[7,-19],[15,-11],[2,8],[9,10],[5,-4],[9,-13],[-1,-9],[-6,-3],[9,-6],[0,-8],[7,-2],[0,-11],[-2,-10],[-9,-12],[-8,6],[-4,-15],[-6,-7],[18,-21],[4,-8],[9,-5],[5,-6],[-2,-12],[6,-14],[5,0],[7,-30],[13,-24],[9,-17],[0,-18],[4,-11],[5,5],[4,-14],[8,-12],[4,-1],[-1,-8],[-6,-5],[2,-12],[7,-8],[5,-12],[-5,-33]],[[7921,6009],[9,11],[0,20],[1,5],[-3,11],[3,6],[2,24],[-5,5],[0,13],[-11,7],[0,8],[-8,15],[0,29],[2,20],[-3,9],[-7,7],[-6,14],[-7,24],[-18,8],[-2,-10],[-9,-15],[-9,-6],[-16,16],[-4,-9],[-19,-26],[-4,-7],[-5,6],[3,19],[4,9],[0,17],[-3,3],[5,14],[0,15],[3,7],[-3,6],[-1,19],[2,7],[-12,2],[-2,-7],[-7,0],[-3,9],[3,29],[-5,15],[-6,-5]],[[7780,6353],[0,15],[7,14],[4,-1],[0,13],[6,16],[3,0],[9,14]],[[5975,7088],[14,52],[1,19],[9,12],[0,7]],[[5999,7178],[13,-3],[4,-23],[-9,-14],[2,-8],[-6,2],[-6,-12],[3,-5],[-6,-8]],[[4790,5433],[-19,13],[-21,22],[-9,12],[-21,40],[-9,19],[-12,7],[-1,10],[-14,13],[-3,12]],[[4681,5581],[3,14],[6,12],[15,23],[0,16],[8,8],[1,17]],[[5693,6449],[0,-115],[-27,0],[0,-28]],[[5666,6306],[-66,66],[-3,4],[-45,45],[-34,36],[-45,45],[-30,31],[-27,-26]],[[5416,6507],[-22,-22],[-20,33],[-42,19]],[[5264,6924],[10,7],[11,30],[-5,31],[6,17],[5,1],[10,22],[19,18],[-2,10],[1,34]],[[5319,7094],[10,-6],[12,-14],[15,-2],[14,6],[6,-6],[17,-5],[8,-12],[20,-6],[5,-13],[0,-14],[7,-25],[4,-7],[17,-9],[10,0],[18,-8],[23,-18],[3,-7],[18,-22],[8,0],[14,14],[10,24],[1,18],[-6,24],[0,16],[3,12],[15,24],[14,13],[10,1],[5,7],[21,-3],[21,-14],[-1,-18],[6,-6],[19,-7],[2,-5],[25,-2],[5,-18]],[[3307,5973],[-4,11],[5,10],[-1,-21]],[[7235,5735],[7,-13],[17,-49],[5,-36],[5,-8],[4,-24],[0,-20],[-2,-22],[-12,-22],[-22,-17],[-9,5],[-4,7],[-7,43],[-1,50],[1,40],[2,10],[0,17],[6,17],[-2,7],[4,10],[6,1],[-14,10],[2,7],[7,-3],[7,-10]],[[5798,3530],[6,-12],[10,-10],[3,-14],[-4,-17],[-5,-7],[1,-10],[-8,-9],[-13,-4],[-5,-7],[-4,-22],[-8,2],[-16,35],[-5,22],[8,6],[12,35],[8,2],[4,10],[13,8],[3,-8]],[[5582,8366],[-1,0]],[[5581,8366],[1,0]],[[5652,8289],[0,9],[-14,16],[-6,-1]],[[5632,8313],[-3,6],[5,24],[-8,11],[-15,1],[-21,9]],[[5590,8364],[-6,32],[0,16]],[[5584,8412],[8,9],[22,11],[15,-4],[8,3],[29,-5],[4,-4],[22,8],[5,-12],[15,-2],[26,-28]],[[5759,8496],[14,-14],[-6,-26],[14,-17],[0,-23]],[[5584,8412],[-2,19],[2,24],[10,12],[0,15],[8,15],[22,11],[18,-21],[4,-17],[12,-7],[19,15],[-2,37]],[[3249,6221],[-2,2]],[[3247,6223],[2,-2]],[[4851,7247],[2,-14],[14,-21],[11,-5],[19,8],[6,-5],[15,7]],[[4919,7214],[2,-9],[17,-2]],[[4758,6776],[-3,0],[1,-30],[-18,-3],[-7,-11],[-16,-2],[-9,7],[-10,1],[-13,-7],[2,-15],[-4,-6],[-8,-25],[-8,-3],[-4,-23],[-3,-30],[-3,-13],[-6,-12],[-12,-16],[-6,-22],[-16,-16],[-4,-13],[-6,-53],[0,-16],[-12,-26],[1,-7],[-4,-14],[-11,-4],[-22,4],[-18,-1],[-12,-4]],[[4527,6416],[1,21],[4,20],[10,13],[4,26],[5,11],[-2,5],[13,42],[-4,0],[8,12],[11,26],[5,4],[5,17],[0,22],[10,45],[0,9],[9,16],[7,4],[10,14],[10,53],[7,16],[24,8],[16,14],[11,23],[15,15],[21,49],[5,19],[1,14],[-7,13],[0,26],[2,26],[3,11],[9,18],[3,24],[-1,7],[11,17],[10,23],[26,19],[21,25],[15,48],[2,15],[9,39],[14,7]],[[5206,7702],[-2,-1]],[[5783,7801],[-3,21],[1,26],[3,22],[-4,18],[-6,5],[-17,36],[-10,30],[-8,3]],[[5739,7962],[20,10],[14,-2],[6,-9],[21,-8],[10,-13],[-1,-25],[7,-10],[5,2],[0,-20],[10,-9],[-1,-16],[6,-9],[-15,0],[-3,6],[-7,-6],[-1,9],[-7,-4],[1,-26],[-13,-19],[0,-11],[-8,-1]],[[6384,4200],[0,8],[5,14],[-5,-22]],[[6370,4487],[-2,-11],[7,-4],[1,-18],[7,-8],[4,-13],[-1,-9],[5,-25],[3,-37],[0,-29],[8,-27],[-4,-34],[-3,-9],[-6,7],[-3,25],[-8,-7],[3,-23],[-2,-5],[5,-11],[-1,-25],[-5,-13],[-6,-24],[2,-29],[-4,-39],[-3,-11],[-10,-59],[-2,-19],[-7,-32],[-3,-29],[-10,-57],[-4,-16],[-2,-24],[-7,-48],[-1,-16],[-4,-13],[-8,-47],[-14,-15],[-11,-2],[-13,-11],[-6,-9],[-12,-2],[-11,17],[-10,2],[-10,15],[-2,20],[-7,14],[-1,45],[3,10],[-4,6],[-1,16],[-6,12],[-4,36],[3,27],[4,6],[0,17],[7,4],[11,46],[4,7],[6,29],[-3,4],[2,24],[-6,18],[1,16],[-6,22],[-1,35],[-3,15],[15,49],[0,30],[12,-1],[11,16],[10,-2],[0,7],[8,4],[4,-6],[1,9],[6,5],[18,25],[3,-7],[-3,-10],[7,2],[-4,18],[4,5],[2,12],[6,8],[-3,-22],[11,28],[-3,11],[3,11],[4,-2],[3,11],[-4,9],[0,19],[7,-1],[1,-10],[4,-1],[0,14],[5,1],[-1,9],[6,-4],[3,5],[1,16],[3,8],[-2,22],[3,13],[5,4],[3,18],[2,-8]],[[2590,6367],[-7,-17],[2,17],[5,0]],[[1889,6595],[7,-4],[1,-9],[-8,13]],[[1800,6801],[-5,-1],[5,12],[0,-11]],[[1880,6866],[3,-12],[-3,-16],[-7,7],[2,17],[5,4]],[[1847,6884],[4,-14],[5,-1],[2,-17],[-11,17],[-3,9],[3,6]],[[2186,6889],[0,-8],[7,-2]],[[2193,6879],[11,-20],[1,-12],[9,-31],[6,-12],[9,-27],[7,-6],[-1,-15],[2,-15]],[[2237,6741],[3,-16],[3,2],[2,-14]],[[2245,6713],[2,-9],[20,-12],[4,-8],[16,-2],[9,-10],[5,6]],[[2301,6678],[0,-14],[-8,-31],[-6,-38],[-2,-30],[-1,-43],[1,-16],[-4,-22],[3,-29],[5,-34],[15,-57],[9,-17],[9,-27],[3,-25],[5,-5],[1,-9],[7,-19],[7,-4],[11,2],[5,-9],[6,-2],[8,-21],[10,3],[16,11],[17,3],[15,13],[10,2],[6,-12],[10,-3],[6,17],[-5,8],[14,16],[5,11],[1,21],[7,14],[-1,6],[1,39],[3,15],[16,17],[19,4],[17,12],[14,2],[20,-9],[6,9],[6,-10],[2,-17],[-3,-16],[-9,-18],[-7,-19],[-1,-19],[-8,-16],[9,-8],[-6,-40],[-3,-10],[-2,-23],[-3,14],[-4,3],[2,18],[-5,-4],[-3,-15]],[[2437,6020],[-20,42],[-19,33],[-11,16],[-10,10],[-1,-6],[-8,1],[-4,13],[-5,-9],[9,-4],[-11,-1],[-8,-12],[-15,-9],[-7,-8],[-8,-2],[-15,10],[-4,6],[-17,3],[-8,13],[-13,6],[-6,14],[-5,0],[-15,8],[-5,0],[-5,9],[-31,22],[-6,11],[-13,14],[-4,13],[-7,6],[-5,-4],[-32,20],[-8,21],[-9,14],[-12,13],[-15,12],[-3,14],[-5,6],[-8,22],[0,10],[-4,8],[3,8],[10,6],[-7,15],[7,12],[1,22],[-6,8],[-7,23],[-2,32],[-9,17],[-15,34],[-12,32],[-21,28],[7,-7],[0,9],[-5,-1],[-9,13],[-6,18],[7,0],[-22,24],[0,5],[-9,-3],[6,9],[-7,-1],[-8,9],[0,14],[4,9],[0,19],[-4,9],[-10,3],[-5,23],[-9,2],[-7,13],[-2,26],[2,3],[-14,4],[-8,12],[-5,13],[-5,5],[-13,29],[-2,20],[-5,2],[1,9],[-11,23],[0,16],[-10,36],[3,20],[-16,10],[-1,10],[-7,6],[-9,-6],[-10,15],[-8,2],[0,-41],[4,-8],[3,-27],[-1,-19],[7,-21],[4,-1],[17,-27],[3,-23],[7,-3],[11,-32],[3,-25],[4,-12],[8,-6],[4,-20],[6,-7],[-1,-6],[8,-25],[-3,20],[8,-10],[0,-9],[5,-13],[1,-29],[9,-25],[10,-36],[-2,-15],[3,-15],[8,-8],[0,13],[14,-16],[4,-23],[7,-10],[0,-14],[-11,-19],[-7,0],[-6,36],[-8,9],[-12,22],[-14,16],[-5,14],[-4,-3],[-4,14],[-3,-1],[-2,25],[3,3],[0,27],[-9,30],[-3,0],[-17,21],[-1,21],[-4,-13],[-10,-1],[-5,13],[-8,9],[-10,6],[0,9],[-16,20],[-1,8],[15,-5],[7,6],[5,-13],[-1,17],[2,28],[-9,26],[-4,3],[-12,26],[-6,2],[-14,19],[-4,12],[0,19],[-5,4],[-1,26],[-7,9],[0,11],[-10,22],[1,15],[-8,14],[-6,28]],[[1746,7056],[66,10],[-1,-12],[46,-30],[58,-37],[79,0],[0,26],[46,0],[11,-20],[8,-8],[14,-26],[6,-4],[7,-12],[6,-21],[-1,-10],[5,-21],[14,-20],[25,-19],[8,14],[4,30],[8,2],[3,6],[5,-5],[20,-2],[3,-8]],[[2290,6649],[-4,-5],[0,-32],[-2,-53],[6,67],[4,13],[-4,10]],[[5582,7536],[0,0]],[[5586,7536],[-4,1]],[[5581,7537],[0,0]],[[5575,7539],[-2,10]],[[5598,7616],[20,7],[2,-4]],[[5117,6285],[0,-124],[-1,-33],[-4,-7],[-4,-29],[-11,-17],[0,-8],[-14,4],[0,-5],[-47,-3],[-9,-17],[-9,-3],[-13,3],[1,-5]],[[4683,5897],[-1,36],[-6,21],[-5,-5],[-8,23],[4,5],[-2,28],[-5,6],[1,18],[-2,5]],[[4659,6034],[5,-2],[7,8],[0,24],[3,11],[6,7],[14,-22],[3,-2],[4,13],[12,1],[14,-4],[13,7],[65,0],[41,0],[5,45],[-8,15],[-1,33],[-2,21],[-1,36],[-2,22],[-6,109],[0,17],[-3,39],[-6,104],[0,14],[-3,39],[0,16],[-3,37],[50,0]],[[7737,5862],[0,-11],[-4,-2],[-1,13],[5,0]],[[7733,5907],[-2,-14],[-1,20],[3,-6]],[[7622,6095],[-2,9],[7,13],[2,-6],[-7,-16]],[[7710,6117],[-4,12],[2,5],[2,-17]],[[7602,6269],[-2,-10],[-5,9],[7,1]],[[7604,6305],[6,-6],[-6,-6],[-3,10],[3,2]],[[7780,6353],[-9,6],[0,-6],[-10,2],[3,-11],[-6,-6],[-8,1],[-1,-17],[-21,-7],[-6,8],[0,-9],[-5,-4],[-2,-10],[1,-18],[-4,-10],[3,-19],[-10,-8],[5,-6],[5,-22],[-2,-10],[11,-23],[4,-17],[7,-8],[-1,-11],[6,-28],[6,5],[-2,-15],[-7,-3],[0,-40],[-9,-4],[-2,-12],[2,-16],[6,-13],[3,-15],[11,-14],[4,-11],[3,-67],[6,-9],[1,-25],[2,1],[3,-19],[-6,-12],[-1,-12],[-5,-17],[-6,-8],[0,-8],[-5,-4],[-2,-23]],[[7742,5779],[-7,-20],[0,24],[-1,18],[7,10],[1,45],[-5,2],[4,20],[-6,11],[5,21],[-3,32],[-9,31],[-4,-1],[0,27],[-3,9],[-5,30],[0,32],[-2,26],[-4,14],[2,25],[-8,-2],[-5,13],[0,18],[-3,12],[-6,8],[0,-23],[-2,-16],[-5,-11],[-11,3],[2,-12],[-16,-8],[-2,-16],[-7,-13],[-9,8],[-6,-4],[0,12],[-5,-9],[-3,5],[3,21],[-12,-19],[-1,11],[4,22],[2,38],[4,9],[0,22],[-2,3],[-2,30],[-6,24],[-5,8],[0,20],[-2,-4],[-1,-16],[-7,9],[-6,22],[9,-10],[6,14],[-11,14],[3,13],[-4,-3],[-6,11],[-10,-1],[2,16],[-4,-12],[-5,6],[5,4],[-5,9],[0,-11],[-7,22],[-3,3],[-3,21]],[[5533,7690],[8,-17],[11,-8],[13,-12],[0,-5]],[[5538,7620],[0,-3]],[[5537,7617],[-6,0],[7,-10]],[[5537,7593],[-14,24],[-10,8]],[[8263,7933],[2,-6],[9,9],[-4,10]],[[7439,8014],[9,6],[1,10],[19,0],[8,3],[15,13],[-2,11],[25,18],[5,0],[8,12],[11,0],[12,16],[9,-2],[7,10],[7,-10],[9,6],[2,-10],[33,-2],[3,-22],[8,-10],[8,1],[15,-8],[9,7],[21,-9],[11,2],[9,-10],[7,11],[15,6],[5,15],[2,14],[-8,6],[-6,22],[7,27],[5,0],[3,14],[8,4],[7,20],[11,-11],[11,-3],[9,-10],[14,0],[23,-15],[7,1],[17,-9],[2,-43],[17,-15],[11,-7],[20,-3],[13,10],[19,4],[4,6],[21,-6],[4,-6],[13,3],[14,-20],[22,-3],[-1,-15],[17,-20],[16,1],[31,-10],[3,4],[9,-6],[20,14],[18,1],[11,8],[10,-2],[8,5],[3,12],[27,27],[17,-1],[17,-20],[9,-1],[12,8],[12,-5],[3,-6]],[[5913,3637],[-22,0]],[[5891,3637],[1,15],[-3,17],[1,16],[-3,3]],[[5887,3688],[1,16],[0,71],[-4,30],[-3,5],[-6,24],[1,14],[-7,44]],[[5869,3892],[31,64],[-2,10],[4,10],[-1,17],[6,7],[9,29],[1,14],[-6,6],[1,36],[-5,2],[0,11],[6,3],[-1,14],[4,4],[-2,36],[3,14],[-1,17],[-5,22],[4,14],[-7,-1],[-1,6],[-13,9],[-9,1],[-5,12],[-5,1],[-7,10],[-9,-2],[-2,4],[-13,-1],[0,21]],[[5844,4282],[-1,18],[-4,20],[19,14],[14,6],[19,16],[4,1],[27,19]],[[5922,4376],[6,-21],[7,-13],[1,6],[17,6],[5,-11],[2,-41],[-5,-11],[0,-9],[-5,-10],[5,-13],[1,-14],[9,-15],[5,-13],[5,-4],[0,-17],[5,0],[-2,38],[4,19],[9,2],[3,5],[1,35],[-1,16],[3,15],[-2,14],[-21,54],[-6,11]],[[5968,4405],[-2,10],[-1,28],[2,8],[-4,14],[0,16],[6,10],[2,25]],[[5971,4516],[19,0],[5,10],[9,-10],[1,-7],[15,1],[7,6],[12,-8],[11,10],[1,13],[7,4],[11,-8],[11,13],[11,0],[5,9],[9,4],[18,27]],[[6123,4580],[6,-13],[-7,-32],[0,-23],[3,-18],[0,-28],[3,-20],[-6,-8],[5,-1],[-2,-39],[4,-23],[-4,-8],[6,-2],[-3,-8],[6,-5],[0,-22],[-5,-7],[1,-8],[-3,-24],[-13,-26],[-3,-14],[-7,-7],[3,-7],[-21,-26],[-1,-7],[-11,-2],[-16,-16],[-6,-3],[-20,-22],[-11,-32],[-8,-15],[-2,-13],[-5,5],[1,-12],[-4,6],[-13,-18],[-6,-17],[-16,-26],[-3,4],[0,-25],[-3,-12],[6,-15],[3,0],[4,-39],[4,-16],[2,-20],[-1,-24],[5,16],[2,-16],[-2,-10],[3,-20],[-7,-50],[6,-4],[-3,-17],[-9,-26],[-13,-11],[-26,-17],[-11,-10],[-12,-16],[-5,-18],[-4,-6],[3,-12],[7,-5],[-1,-33]],[[4659,6034],[-6,12],[-12,16],[-1,13],[-8,8],[-2,17],[-5,13],[-10,-2],[-6,16],[-8,14],[-16,0],[-20,-9],[-19,1],[-1,-15],[-3,-3],[-2,-22]],[[4540,6093],[0,30],[2,18],[8,33],[4,26],[0,28],[-3,40],[-5,20],[-6,11],[9,24],[0,28],[-9,26],[0,-9],[-5,11],[-4,19],[-4,-3],[-1,-16]],[[4526,6379],[-1,6],[3,26],[55,0],[55,0],[0,15],[-4,71],[3,10],[12,16],[17,11],[0,146],[56,0],[36,0],[0,74]],[[6603,4026],[2,-11],[-3,-12],[-9,-1],[0,15],[4,13],[6,-4]],[[5969,4525],[0,2]],[[5969,4527],[0,-2]],[[5964,4534],[0,2]],[[5964,4536],[0,-2]],[[5952,4624],[-3,6]],[[5949,4630],[3,-6]],[[5946,4634],[0,1]],[[5946,4635],[0,-1]],[[5941,4623],[2,-16],[8,-22],[-1,-51],[3,-25],[-8,-21],[0,-15],[4,-4],[0,-16],[4,-12],[-1,-26],[2,-9],[7,-10],[-2,-24],[7,-10],[2,11],[8,-16],[4,0],[-6,34],[-6,2],[0,12]],[[5922,4376],[-7,-1],[-2,12],[-6,14],[6,8],[4,49],[9,3],[5,11],[-4,0],[-4,11],[2,15],[-3,27],[5,15],[-4,17],[7,6],[5,11],[-4,20],[-6,8],[1,15],[-4,12],[-7,1],[-1,11]],[[5914,4641],[10,-5],[4,-7],[9,1],[4,-7]],[[8093,5320],[-2,3],[0,20],[2,-2],[0,-21]],[[8269,5423],[5,-1]],[[7786,5497],[-1,-11],[-3,11],[4,0]],[[7773,5553],[-3,-8],[-3,8],[6,0]],[[7834,5543],[9,-7],[3,-14],[18,-29],[9,-33],[1,-32],[-4,-8],[0,-23],[4,-12],[-2,-6],[1,-32],[10,-15],[3,-23],[8,-23],[1,-24],[-16,4],[-4,-10],[-5,15],[-15,19],[-7,11],[-10,9],[-11,21],[-14,15],[2,9],[-2,17],[-6,17],[-11,19],[2,9],[-4,6],[1,21],[-2,19],[-6,11],[2,6],[-2,23],[0,26],[-7,25]],[[7780,5554],[2,15],[4,-9],[12,-7],[2,-11],[7,1],[0,-19],[-3,-9],[3,-8],[5,9],[9,7],[6,-10],[7,30]],[[8045,5303],[0,-10],[8,-13],[9,1],[16,-8],[6,-6],[0,16],[5,22],[0,18],[4,0],[2,16],[5,8],[11,2],[20,10],[9,9],[12,33],[7,12],[6,19],[1,16]],[[8193,5464],[1,-4]],[[8198,5465],[6,1],[6,15],[-6,9],[6,11],[6,0],[3,14],[4,4],[1,17],[6,6],[1,8],[8,18],[3,19],[3,-3],[-2,-22],[6,8],[3,15],[4,-2],[1,-18],[7,-3],[6,-10],[-4,-13],[5,-16],[6,9],[3,-14],[8,-1],[9,-15],[15,-10],[0,-11],[-15,-13],[-7,-1],[-2,6],[-7,-8],[5,-14],[9,-13],[-18,-12],[-11,10],[-1,-14]],[[8256,5598],[-5,-6],[0,10],[6,4],[-1,-8]],[[5649,4167],[22,9],[17,-1],[7,-5],[6,-12]],[[5554,3757],[1,-13],[0,-196],[-12,-8],[-2,-9],[-7,-5],[-3,-11],[-11,7],[-16,-4],[-16,13],[-5,-1],[-2,28],[-4,0],[-3,11],[-5,-2],[-4,-12],[0,-11],[-8,-7]],[[5457,3537],[-5,4],[-15,27],[-12,41],[-2,21],[-5,18],[2,11],[-5,7],[0,21],[-3,11],[-1,23],[1,20],[-11,53],[1,33],[-2,25],[3,10],[-1,27],[-14,39],[-4,18],[-13,37],[-5,37],[-3,3],[-4,20],[-7,22],[-3,18],[-8,23],[-8,14],[-5,21],[-3,36],[1,12]],[[9665,3952],[5,-3],[-1,-13],[-7,3],[-2,12],[5,1]],[[9646,3990],[4,-27],[-9,7],[-1,8],[6,12]],[[9555,4026],[7,-13],[6,0],[16,-24],[5,-3],[11,-30],[7,-3],[15,-20],[4,-10],[11,-14],[2,-10],[-3,-5],[-12,8],[-2,-4],[-6,8],[-2,13],[-4,-1],[-7,14],[-13,7],[-4,13],[-12,16],[-1,8],[-6,6],[-12,44]],[[5416,6507],[4,-53],[1,-34],[12,-31],[-1,-12],[11,-21],[-7,-29],[0,-21],[-6,-142],[-1,-9],[-22,-46],[-12,-29],[-13,-39],[0,-11],[-9,-19],[4,-39]],[[5377,5972],[-6,1],[-4,-10],[-5,0],[-14,-18],[-2,-10],[-10,2],[-7,9],[-12,6],[-22,1],[-13,-6],[-7,-7],[-8,-20],[-18,2],[-10,7],[-15,20],[-9,1],[-10,-12],[-6,0],[-3,-7],[-7,4],[-4,15],[-12,21],[-3,-3],[-16,14],[-8,-8],[-12,2],[-11,-6],[-9,-11],[-1,-28],[-4,-14],[-8,-13],[-1,-25],[1,-21],[-2,-2]],[[5377,5972],[13,-36]],[[5238,5460],[-5,-4],[-6,14],[5,-21],[-2,-4],[-17,-3],[-14,10],[0,-10],[-4,-4],[0,13],[-4,2],[3,-18],[-25,-6],[-7,6],[-8,17],[-3,12],[-3,27],[-4,8],[-3,17],[-6,13],[-13,20],[-15,4],[-12,-1],[4,6],[-5,2],[0,-9],[-19,-1]],[[2691,6046],[-6,-4],[4,-35],[-7,-20],[-4,-40],[2,-21],[-1,-19],[2,-10],[-4,-2],[1,15],[-5,-4],[4,-12],[-5,-31],[3,2],[1,-14],[-6,-11],[1,-16],[5,-12]],[[2619,5821],[-6,13],[-12,18],[-7,15],[-4,17],[-26,41],[4,10],[6,-5]],[[5093,8141],[24,0]],[[5162,8210],[-10,-17],[-10,7],[15,13],[5,-3]],[[5118,8141],[-21,6],[1,7],[9,1],[7,-11],[-3,33],[8,7],[6,13],[6,36],[10,-1],[14,21],[11,5],[24,3],[9,-12]],[[5140,8230],[7,-10],[-8,-8],[0,-15],[12,-5],[12,14],[-12,20],[-2,13],[-9,-9]],[[5157,8665],[-10,4],[10,9],[0,-13]],[[5249,8849],[3,-8],[-16,-5],[-3,7],[16,6]],[[5244,8857],[-2,-7],[-13,0],[15,7]],[[5344,8955],[3,-6],[-12,-11],[9,17]],[[5387,9114],[3,-5],[-17,-6],[5,13],[9,-2]],[[5420,9124],[-11,-11],[-15,-6],[9,15],[17,2]],[[5441,9154],[2,-15],[8,12],[8,-5],[-1,-15],[-21,-8],[-4,-7],[-17,-3],[6,18],[6,0],[6,23],[7,0]],[[5421,9152],[6,-15],[-9,-5],[-18,7],[21,13]],[[5439,9158],[-11,-3],[20,19],[-9,-16]],[[5492,9188],[10,-7],[-3,-14],[-32,-8],[9,12],[-6,8],[22,9]],[[5523,9207],[6,-7],[-8,-11],[-17,-2],[5,15],[14,5]],[[5533,9218],[12,-6],[-15,-10],[-9,7],[12,9]],[[5652,9249],[5,-8],[-16,-11],[-6,7],[17,12]],[[5649,9262],[-11,-16],[-24,-4],[7,13],[17,-3],[11,10]],[[5856,9203],[2,-15],[-17,4],[-10,-15],[-16,-3],[-11,-16]],[[5572,9158],[-14,0],[7,-8],[-11,-20],[0,-11],[-42,13],[-8,-3],[1,-19],[-8,-13],[-16,8],[-15,-11],[-5,-16],[-14,-13],[9,-12],[-1,-10],[-27,-31],[2,-13],[-12,-7],[-15,-1],[3,-17],[-3,-30],[-5,-12],[-20,-30],[14,-8],[1,-15],[-5,-10],[-21,5],[-15,-8],[-14,-21],[-5,-18],[6,-16],[-4,-24],[7,-20],[-5,-30],[20,-20],[-4,-18],[-13,-4],[10,-29],[-3,-21],[-10,-13],[-7,0],[-6,-16],[4,-21],[-6,-21],[-5,6]],[[5317,8580],[-2,7],[-16,4],[-5,22],[-5,-3],[1,-15],[-5,-12],[-15,-2],[-28,-36],[-16,-16],[-15,-5],[-30,5],[4,7],[-19,9],[-10,9],[-4,11],[2,18],[14,-10],[-5,13],[9,14],[-12,11],[2,-11],[-10,-4],[-8,9],[8,18],[11,0],[-5,7],[7,5],[5,15],[10,13],[-13,-9],[-6,-16],[-6,16],[-6,-8],[-6,8],[3,14],[12,-3],[-1,14],[-10,-9],[-10,14],[3,16],[10,0],[-13,10],[0,10],[11,7],[-11,5],[11,16],[33,-6],[-31,8],[-7,-3],[7,17],[13,1],[25,16],[-12,-3],[12,13],[22,-8],[-1,10],[-16,2],[-2,12],[10,5],[7,-6],[16,2],[4,11],[12,-2],[-5,11],[34,19],[7,-14],[24,5],[-2,8],[19,14],[2,9],[-18,-7],[2,-9],[-26,-14],[-12,16],[15,11],[-3,9],[14,10],[12,17],[13,-11],[0,17],[11,5],[4,17],[19,3],[-10,6],[10,12],[-8,12],[27,33],[-8,8],[9,16],[12,10],[-7,6],[20,4],[10,13],[22,-3],[0,5],[-28,1],[28,31],[-15,-9],[4,15],[30,7],[-22,1],[23,8],[5,-17],[6,8],[-11,14],[17,8],[32,-1],[-9,8],[-29,-5],[2,11],[24,6],[6,22],[10,6],[4,14],[19,5],[11,13],[26,10],[8,-11],[15,2],[11,14],[19,-17],[-5,14],[-18,15],[28,3],[20,-6],[5,-14],[11,25],[29,23],[0,11],[37,-7],[-19,-17],[-9,-26],[8,-1],[6,15],[33,35],[-3,-34],[17,22],[11,6],[-8,10],[28,3],[8,-5],[-19,-29],[14,2],[11,20],[9,1],[21,-14],[8,4],[27,-25],[-16,-2],[-10,-10],[-39,6],[-3,-4],[29,-8],[-2,-12],[34,3]],[[5713,9281],[11,-11],[-15,-3],[-6,9],[10,5]],[[4778,9282],[-1,-9],[-15,-2],[16,11]],[[5647,9686],[-7,-11],[38,-10],[-33,-33],[-23,0],[10,17],[-53,-6],[22,27],[-22,9],[23,8],[45,-1]],[[5596,9708],[21,-5],[1,-13],[-43,-4],[-15,17],[36,5]],[[5313,9706],[24,-18],[-29,12],[-16,19],[13,4],[8,-17]],[[5467,9783],[4,5],[53,-31],[2,-16],[23,1],[8,-9],[40,-9],[-5,-12],[-44,-1],[-22,-10],[3,-21],[-18,-4],[-5,-31],[-14,1],[-11,-30],[-12,-11],[3,-11],[-20,6],[-35,25],[-18,3],[-9,22],[50,-2],[-31,7],[59,9],[-36,4],[-50,-9],[-5,19],[40,3],[17,12],[27,1],[-3,22],[-14,-14],[-16,-1],[-1,23],[-28,-21],[10,-6],[-25,-10],[-23,-1],[-17,20],[-20,10],[21,16],[-19,4],[10,14],[-23,-12],[-16,26],[31,17],[9,-10],[47,12],[-3,-10],[-33,-9],[37,-1],[19,16],[20,-12],[5,-15],[28,-25],[-14,23],[-7,33],[24,9],[7,-9]],[[5642,9812],[113,-16],[-1,-15],[-37,-13],[-5,-13],[-38,-5],[-6,-7],[-32,2],[-1,11],[-57,-2],[-32,10],[22,8],[39,1],[0,7],[-66,-7],[-28,4],[-12,23],[33,-5],[33,19],[53,-25],[3,26],[19,-3]],[[9617,2273],[0,-19],[-6,6],[6,13]],[[9665,2494],[6,-10],[0,-14],[-12,-2],[-5,-8],[1,13],[5,6],[-1,14],[6,1]],[[96,2665],[10,-1],[-9,-6],[6,-11],[-9,-5],[3,13],[-9,8],[8,2]],[[9802,2850],[-4,0],[-2,-14],[9,-2],[1,-21],[4,-9],[10,14],[6,3],[3,-10],[3,13],[9,-2],[-4,-7],[3,-10],[-6,-8],[6,-18],[-8,-17],[-3,-13],[-9,-13],[-6,-23],[-15,-16],[-1,-24],[9,-5],[1,-9],[-7,-4],[-10,10],[-7,-9],[-25,-22],[-4,-20],[0,-17],[-7,-15],[-5,-25],[0,-16],[-8,-3],[-17,-24],[-4,-11],[-13,-7],[-11,0],[-1,6],[-13,-4],[-5,16],[-11,-2],[-2,10],[-8,3],[-3,-7],[-16,3],[1,13],[-9,0],[0,10],[9,6],[-2,8],[4,17],[8,-7],[-4,16],[36,56],[2,7],[10,1],[19,21],[8,4],[16,27],[14,12],[13,29],[6,37],[9,4],[8,16],[1,31],[15,21],[7,0]],[[9872,3102],[4,-10],[-7,5],[3,5]],[[9807,3201],[-1,-14],[3,-11],[8,-8],[8,2],[10,-9],[2,-9],[5,4],[1,-13],[5,-10],[-2,-23],[9,-16],[-3,-21],[7,-17],[8,0],[4,-17],[5,3],[-4,18],[3,20],[3,-14],[7,-9],[1,-35],[2,-7],[14,-7],[19,-13],[10,4],[5,14],[8,7],[8,0],[7,-10],[-6,-15],[-1,-32],[-10,-9],[-2,-34],[-1,12],[-12,1],[-10,-8],[-4,-10],[1,-13],[4,-3],[-5,-25],[-8,-21],[-6,-9],[-9,-30],[-8,-14],[-13,-14],[-3,11],[-9,-1],[-8,12],[4,4],[10,24],[4,27],[-5,17],[-15,10],[-6,12],[-9,4],[-6,8],[1,14],[22,19],[3,41],[4,20],[-3,30],[4,10],[-3,8],[-8,-6],[-2,16],[-6,19],[7,-12],[-2,22],[-11,8],[1,-9],[-26,61],[2,16],[-12,29],[10,1]],[[6629,6344],[-1,12],[8,19],[-7,-31]],[[6474,6141],[-8,37],[-2,0],[-11,55],[-10,44]],[[6443,6277],[13,8],[52,37],[19,12],[9,56],[9,61],[-13,39]],[[6566,6621],[6,-28],[6,-15],[10,-17],[31,-18],[8,2],[6,-11],[13,-39],[7,-13],[8,-2],[0,-17],[-9,-27],[-4,-19],[-12,-17],[-11,-42],[-8,1],[1,11],[-5,-3],[-3,-13],[-4,-4],[-1,-20],[-3,-10],[2,-31],[2,-11],[-3,-4],[-15,-2],[-8,-6],[-7,-12],[-3,-28],[-5,-10],[-5,1],[-21,-7],[-6,-19],[2,-9],[-7,-20],[-8,-3],[-4,5],[-16,-3],[-12,-14],[-7,0],[-7,-6]],[[6557,6684],[2,8],[9,-6],[-5,-27]],[[6893,6556],[-1,-9],[-8,10],[-6,-3],[-8,15],[-5,42],[-13,5],[1,20],[-5,7],[-3,13],[-7,1],[2,-7],[-16,-8],[-13,2],[-1,-4],[-23,-1],[-19,6],[-4,-11],[-28,4],[-5,-6],[-17,-8],[1,8],[-5,2]],[[2729,5623],[3,-19],[-7,12],[4,7]],[[2836,5599],[-8,16],[-7,31],[5,4],[0,10],[5,8],[-5,3],[-4,-7],[-3,16],[-10,15],[-6,5],[-10,2],[-9,-12],[0,-13],[-8,-11],[-12,-10],[0,-8],[10,-19],[4,-14],[-10,-6],[-2,-9],[-13,-2],[0,7],[-8,30],[-1,-14],[-10,8],[-3,19],[-9,8],[-6,-1],[0,8],[-8,-4],[-9,2],[-2,-16]],[[2706,5734],[6,-10],[3,-23],[13,-4],[-4,11],[5,-3],[6,-15],[10,-1],[9,5],[7,12],[14,8],[14,22],[10,-4],[7,2],[-2,-7],[16,-2],[17,-19],[3,-9],[10,-15]],[[3073,4289],[-8,13],[-7,0],[2,-20],[-3,4],[-3,-15],[17,-10],[-2,-8],[7,-8],[4,3]],[[3084,4249],[-2,-19]],[[3044,4127],[-14,19],[0,3],[-13,15],[0,13],[-3,10],[-18,16],[-6,15],[-10,5],[-17,20],[-17,13],[-3,8],[-32,34],[-1,9],[-9,19],[-10,12],[-6,25],[-4,2],[0,15],[3,23],[-10,34],[0,7],[-8,20],[1,6],[-7,9],[-3,11],[-2,23],[-4,10],[-8,9],[1,11],[-4,20],[-12,36],[-1,20],[-4,9],[-2,18],[-5,8],[-4,33],[-6,23],[-14,29],[-6,35],[-7,12],[-6,16],[-16,16],[-11,17],[0,11],[8,6],[-2,16],[-7,11],[3,15],[-8,19],[2,25],[12,23],[0,5],[14,21]],[[8339,5486],[-9,-12],[-3,4],[12,8]],[[8361,5534],[5,-6],[-8,-6],[3,12]],[[8390,5552],[-3,0],[-4,14],[7,5],[7,-7],[-7,-12]],[[8493,5581],[-3,9],[3,5],[0,-14]],[[8251,5645],[-2,-13],[-1,14],[3,-1]],[[8489,5736],[9,-8],[3,-13],[4,4],[-1,-13],[4,-7],[0,-10],[-6,-9],[8,-6],[-1,-20],[3,3],[-2,-23],[5,-6],[1,-27],[-4,-16],[-6,-12],[-1,-28],[-4,20],[1,8],[-6,19],[-1,14],[-5,-4],[0,-9],[-5,-8],[-3,-22],[6,-6],[3,-20],[-1,-12],[-7,-21],[-7,13],[3,8],[-3,9],[-3,-14],[-10,5],[-13,14],[-5,15],[0,20],[-2,0],[1,19],[6,8],[0,9],[-5,11],[-15,13],[-3,-12],[1,-15],[-4,9],[-4,-1],[0,12],[-4,-14],[-6,0],[1,16],[-9,-3],[-7,-26],[-2,-17],[-3,-3],[-5,9],[7,30],[-1,11],[7,16],[16,6],[3,21],[8,1],[2,11],[3,-6],[6,1],[4,-13],[0,-15],[11,6],[2,17],[3,4],[6,-8],[3,5],[0,23],[4,1],[5,-9],[5,10],[7,1],[0,17],[-4,21],[2,8],[5,-12]],[[8503,5750],[-4,-2],[2,14],[2,-12]],[[8453,5767],[7,-6],[-1,-12],[-7,-13],[-12,2],[-2,9],[7,10],[3,10],[5,0]],[[8479,5754],[-4,9],[3,3],[1,-12]],[[8490,5782],[1,-31],[-5,11],[0,15],[4,5]],[[8332,5791],[-6,-5],[2,10],[4,-5]],[[8408,5792],[-5,-9],[0,11],[4,7],[1,-9]],[[8423,5815],[8,-4],[1,-7],[-7,-25],[-1,-15],[-4,-13],[0,-19],[5,-11],[-2,-12],[-7,-5],[-3,15],[-9,8],[-5,15],[2,15],[11,6],[-1,23],[4,23],[8,6]],[[8444,5821],[1,-35],[-2,-9],[-9,-14],[0,-7],[-6,-27],[-3,-4],[2,34],[9,27],[5,33],[3,2]],[[8319,5836],[0,-30],[6,-17],[-10,-11],[-4,-14],[-13,-9],[1,-12],[-9,-26],[-10,-10],[-1,-9],[-8,-14],[-6,-2],[-1,-9],[-9,0],[19,43],[4,0],[9,23],[7,11],[6,20],[12,17],[4,32],[0,14],[3,3]],[[8456,5842],[7,-8],[4,7],[6,-10],[-1,-30],[5,-8],[2,-19],[-8,-4],[2,-10],[-8,7],[-1,14],[2,19],[-2,11],[-5,5],[-4,-4],[1,30]],[[8456,5856],[5,-12],[-5,0],[0,12]],[[8396,5860],[10,-14],[4,6],[3,-11],[7,8],[-1,-24],[-9,-10],[-1,-11],[-6,-6],[-9,-2],[-6,-13],[-2,20],[4,17],[0,39],[-6,1],[3,10],[9,-10]],[[8332,5870],[2,-13],[-3,-2],[-2,15],[3,0]],[[8331,5890],[11,-11],[0,-5],[-10,1],[-1,15]],[[8405,5890],[-5,12],[6,0],[-1,-12]],[[8469,5906],[10,-3],[2,-13],[5,-4],[-2,-6],[1,-33],[6,-24],[-14,0],[-2,10],[-4,0],[-4,10],[6,17],[-5,0],[-6,16],[-8,11],[-3,20],[7,-3],[11,2]],[[8426,5905],[6,-6],[5,-13],[4,-1],[4,-15],[0,-12],[-17,28],[-8,-17],[3,13],[-1,26],[4,-3]],[[8392,5910],[-3,-30],[-3,11],[2,17],[4,2]],[[8434,5912],[3,-18],[-5,16],[2,2]],[[8421,5926],[-7,8],[2,6],[5,-14]],[[8360,5962],[15,-22],[-1,-23],[-3,-26],[-4,-5],[-9,17],[-4,15],[0,14],[-7,12],[-4,18],[10,-4],[7,4]],[[8385,5963],[7,-9],[-4,-11],[-5,8],[2,12]],[[8450,5993],[5,-11],[0,-12],[-7,-8],[-4,7],[3,5],[0,20],[3,-1]],[[8387,6049],[2,-18],[-3,-5],[-3,23],[4,0]],[[8358,6252],[7,4],[10,-14],[13,-6],[4,13],[3,0],[2,-15],[-4,-8],[-1,-29],[3,-15],[4,0],[2,-28],[-8,-32],[1,-4],[-18,-18],[2,-10],[-7,-28],[9,-32],[-3,-1],[4,-30],[5,-10],[10,-2],[-3,13],[8,9],[8,-1],[9,-20],[-1,-12],[5,-3],[3,17],[17,-13],[1,-4],[-12,-1],[0,-8],[5,-8],[4,-16],[6,-8],[2,-12],[-2,-14],[-6,5],[-1,13],[-7,1],[-8,7],[0,14],[-3,11],[-7,6],[-5,16],[-9,7],[2,-18],[5,-15],[-3,-12],[-7,25],[-17,19],[-8,-8],[1,-6],[-11,-4],[-4,16],[-6,2],[-2,-7],[-1,24],[11,17],[-4,14],[-9,-4],[2,-13],[-4,-3],[-4,23],[-7,4],[-1,23],[-4,8],[1,26],[-4,3],[0,23],[9,-15],[9,5],[-3,17],[0,21],[4,10],[-1,11],[0,43],[5,23],[-1,10],[10,4]],[[8740,5620],[-2,-13],[-3,3],[5,10]],[[9256,4529],[13,-10],[0,-5],[-10,3],[-3,12]],[[9195,4611],[7,-2],[-2,-10],[-8,2],[-5,23],[8,-13]],[[9184,4640],[3,2],[5,-15],[-14,1],[0,16],[6,-4]],[[9176,4644],[-1,-9],[-5,5],[-1,9],[6,1],[1,-6]],[[9234,4667],[10,-3],[5,-11],[-10,2],[-5,12]],[[8989,4680],[-11,16],[11,-11],[0,-5]],[[8981,4701],[6,0],[1,-7],[-7,7]],[[9105,4867],[7,-7],[-1,-11],[-7,10],[1,8]],[[9299,4867],[8,-4],[3,-17],[6,-8],[1,-9],[5,-4],[8,-16],[2,-14],[-7,-8],[-5,1],[-10,17],[1,14],[-14,25],[0,19],[2,4]],[[9089,4870],[-4,0],[-2,11],[3,3],[3,-14]],[[9296,4889],[-2,-21],[-1,25],[3,-4]],[[9228,4941],[-2,-6],[7,-2],[0,-17],[-5,-20],[-8,-1],[5,-25],[-8,-9],[-11,3],[2,-8],[-14,-21],[-15,-13],[-24,-2],[-3,10],[-6,4],[-6,-5],[-2,7],[-10,12],[-9,7],[4,14],[11,-5],[3,4],[7,-8],[20,6],[2,24],[4,-27],[8,6],[8,-5],[8,6],[0,10],[10,20],[7,-3],[2,5],[-2,23],[-3,16],[7,0],[5,-8],[2,8],[6,0]],[[8915,5033],[7,-1],[25,-25],[25,-17],[13,-4],[9,-11],[5,-11],[15,-2],[0,-8],[9,-6],[5,-15],[8,-3],[13,-25],[-1,-38],[14,-4],[18,-16],[5,-7],[12,-3],[9,-22],[0,-18],[-25,-3],[0,-12],[5,-13],[1,-15],[7,-6],[8,-21],[12,-8],[3,-30],[7,-9],[2,-19],[21,3],[-4,-19],[1,-9],[7,-6],[15,-2],[1,-5],[-9,-5],[8,-16],[10,-7],[12,-3],[-4,-5],[-9,-1],[10,-10],[-7,-9],[-13,6],[2,7],[-9,8],[-7,-1],[-8,6],[-12,0],[1,5],[-11,-3],[-2,5],[-17,1],[-11,33],[-5,2],[-7,22],[-8,6],[-4,23],[-10,30],[-13,9],[-5,-1],[-7,8],[-9,2],[-6,12],[-6,-1],[2,-13],[-7,10],[1,-8],[-13,8],[4,-19],[-11,-4],[1,-12],[-18,-5],[-6,1],[11,-10],[7,-15],[1,-11],[-22,-23],[-11,10],[-20,-3],[-6,4],[-3,-5],[-6,7]],[[9195,5027],[10,-11],[11,-17],[7,-3],[14,-33],[11,-10],[5,-22],[-2,-14],[-5,-10],[-6,14],[1,21],[-5,19],[-10,21],[-6,2],[-9,16],[-5,4],[-9,15],[-10,7],[8,1]],[[9172,5046],[6,-5],[0,-12],[-8,0],[-3,9],[5,8]],[[9079,5070],[12,-5],[-3,-8],[-17,0],[0,11],[8,2]],[[9154,5105],[6,-13],[-6,5],[0,8]],[[5544,8319],[0,-1]],[[5544,8318],[4,-1]],[[5548,8317],[63,-4],[21,0]],[[5655,8150],[1,-13],[14,-27],[-5,0],[4,-18],[-10,-8],[-18,-24],[-13,-25],[4,-28],[-6,2]],[[5626,8009],[-15,8],[-11,12],[-16,-2],[-4,-6],[-6,6],[-10,0],[-14,-12],[-1,12],[-10,11],[-7,-11],[-9,7]],[[5396,8275],[8,-3],[0,13],[-10,0]],[[5394,8289],[54,20],[12,16],[10,2],[11,9],[27,5],[7,-23],[12,-6],[17,7]],[[3138,6248],[29,-2],[9,-6],[2,-7],[-7,-13],[-9,-5],[-17,3],[-12,-1],[1,15],[-3,7],[3,10],[4,-1]],[[8625,7631],[5,-14]],[[8630,7617],[-7,4],[-11,-15],[-11,-27],[4,-15],[-3,-11],[1,-19],[-11,-5],[-7,-16],[-13,-11],[-8,-14],[-9,1],[-4,-9],[-10,-8],[2,-9],[-6,-13],[2,-13],[9,-2],[17,-29]],[[8518,7361],[-8,4],[-8,-9],[-8,15],[-7,1],[2,-14],[-10,9],[-7,-2],[3,9],[-13,4],[9,5],[-3,9],[10,20],[-3,4],[4,21],[5,14],[-4,8],[-16,7],[-11,14],[1,12]],[[4525,7072],[11,-2],[-3,-7],[-10,3],[2,6]],[[4286,7362],[15,1],[0,-6],[-10,-3],[-5,8]],[[4220,7396],[-11,-2],[-2,9],[13,-7]],[[4248,7409],[-8,0],[0,8],[6,0],[2,-8]],[[4794,7325],[-12,-12],[-21,8],[-10,-7],[4,24],[1,44],[-4,18],[-8,-2],[-1,11],[8,6],[-2,7],[-4,-11],[-9,1],[4,38],[6,7],[7,36],[-1,3],[7,47],[-6,50],[3,7]],[[3492,3797],[-1,-17],[-4,-23],[-1,-22],[-3,-17]],[[5949,6986],[8,16]],[[5987,7012],[-4,-16]],[[853,4163],[-9,-2],[-1,11],[5,3],[5,-12]],[[6422,6601],[-8,-2],[-3,9]],[[6411,6608],[1,10],[-3,15],[1,20],[3,6],[4,24],[6,6],[4,-12],[5,-2],[1,-9],[-4,-14],[4,-14],[0,-15],[-4,-17],[-7,-5]],[[5783,7801],[3,-8],[11,-6],[14,12],[10,-3],[2,-9]],[[5823,7787],[-1,-22],[-14,-4],[-3,13],[-4,-3],[-6,-35],[1,-21],[-3,-13]],[[5630,7730],[-6,15],[8,5],[-10,9],[-6,-14],[-5,9],[-10,2],[-9,9],[5,16],[-15,12],[-6,9],[1,16],[-13,13],[-2,7]],[[5635,7944],[10,8],[7,-5],[20,-6],[10,3],[9,-14],[10,11],[26,6],[3,12],[9,3]],[[9064,7741],[7,1],[-12,-10],[-16,-24],[15,37],[6,-4]],[[9133,7793],[-15,-6],[-10,-15],[-5,0],[-7,-11],[-18,-19],[10,17],[-3,3],[25,28],[9,0],[12,15],[2,-12]],[[9182,7845],[-21,-27],[-10,-9],[15,27],[16,9]],[[9227,7898],[-1,-8],[-10,-14],[11,22]],[[9301,8041],[-1,-17],[-6,3],[7,14]],[[9336,8091],[-7,-15],[-9,-4],[-5,-11],[-5,16],[15,9],[4,15],[7,3],[0,-13]],[[9344,8100],[-7,6],[7,7],[0,-13]],[[8967,8309],[5,-11],[-3,-7],[8,-35],[4,-38],[-6,-46],[5,-11],[-2,-12],[6,0],[9,-69],[10,-33],[0,-7],[8,-36],[-9,14],[-23,9],[3,-6],[-10,-7],[-2,-16],[-12,-57],[6,-26],[8,-11],[0,-11],[5,-21],[9,4],[1,-28],[-3,-6],[-2,22],[-17,3],[-2,6],[-7,-5],[-6,-32],[-5,-9],[-3,6],[-4,29],[7,30],[-3,31],[7,21],[-3,26],[-5,12],[7,55],[0,46],[-3,10],[1,17],[5,19],[-5,18],[-11,14],[-1,38],[4,5],[3,26],[-4,26],[13,9],[1,-9],[10,9],[-4,8],[9,2],[-2,12],[-10,21],[5,-2],[5,11],[3,-8]],[[9669,8321],[-19,19],[4,0],[15,-19]],[[8810,8355],[-14,-11],[8,11],[6,0]],[[8827,8358],[9,-8],[-12,-22],[-6,15],[-6,1],[8,17],[7,-3]],[[5548,8317],[18,15],[-10,2],[-12,-16]],[[5544,8319],[10,17],[0,12],[12,-1],[15,19]],[[5582,8366],[-12,-19],[12,-3],[7,5],[1,15]],[[9609,8371],[18,-27],[1,-11],[-13,14],[-4,13],[-7,6],[5,5]],[[9571,8591],[3,-16],[-8,-2],[-23,-18],[9,26],[19,10]],[[5777,8600],[3,-1]],[[6924,9029],[21,-5],[-5,-13],[-16,18]],[[6396,9167],[-24,-22],[-23,-4],[-10,9],[1,19],[15,16],[13,1],[28,-19]],[[9482,9188],[-3,-8],[6,-25],[-10,6],[-2,19],[9,8]],[[9705,9201],[-6,-12],[-29,7],[-11,8],[14,11],[32,-8],[0,-6]],[[6648,9234],[5,-8],[26,-17],[0,-11],[-25,-1],[-5,11],[-10,-2],[-13,12],[-1,15],[13,8],[10,-7]],[[6464,9295],[14,-14],[-6,-11],[-7,12],[-15,9],[14,4]],[[0,9271],[9990,-7],[-25,-4],[-4,14],[8,11],[30,17],[-9999,-31]],[[8829,9305],[-3,-9],[-20,5],[23,4]],[[0,9302],[26,4],[18,-3],[27,-17],[-12,-12],[-42,-8],[-17,5],[0,31]],[[7160,9347],[-27,1],[22,18],[21,-9],[-16,-10]],[[8580,9366],[-7,-7],[-15,7],[22,0]],[[8592,9374],[-28,2],[18,7],[10,-9]],[[7209,9382],[0,-11],[-19,1],[-8,7],[16,13],[11,-10]],[[7078,9392],[-5,-14],[-16,10],[21,4]],[[6536,9406],[31,-6],[-8,-26],[-15,-9],[-7,-32],[5,-18],[16,-29],[23,-20],[19,-10],[-49,-5],[-16,3],[-2,-8],[-14,12],[-18,-1],[-11,7],[-11,34],[-11,-4],[-10,10],[-19,-6],[-8,6],[-3,22],[11,12],[15,-5],[9,22],[11,9],[-20,7],[7,8],[21,1],[-7,12],[17,12],[13,-2],[20,9],[11,-5]],[[6970,9416],[1,-13],[11,-6],[-42,-7],[3,20],[27,6]],[[8951,9436],[32,-18],[0,-21],[-33,3],[-40,10],[-27,-4],[2,8],[17,1],[17,22],[32,-1]],[[8903,9439],[-10,16],[20,5],[2,-17],[-12,-4]],[[8148,9464],[-16,-15],[-37,13],[18,14],[34,-4],[1,-8]],[[7281,9528],[-4,-16],[-14,11],[18,5]],[[9075,9530],[47,-4],[5,-12],[15,3],[49,-6],[-8,-15],[-25,-8],[-43,2],[-58,24],[7,20],[11,-4]],[[8773,9524],[-11,-1],[6,29],[14,-16],[-9,-12]],[[8863,9565],[40,-20],[10,14],[19,1],[-8,10],[35,-19],[29,1],[50,-20],[-19,-5],[5,-8],[-16,-15],[-40,6],[-11,13],[15,13],[-3,8],[-25,-4],[5,-18],[12,-15],[30,-9],[-38,-6],[-14,10],[-49,-10],[-6,8],[-17,-18],[-33,8],[-25,20],[-2,34],[18,1],[-9,9],[42,18],[5,-7]],[[7674,9577],[3,-9],[-30,3],[27,6]],[[8125,9595],[2,-10],[-18,11],[16,-1]],[[9145,9596],[-23,0],[29,8],[-6,-8]],[[6893,9615],[24,-15],[-21,-24],[-51,-17],[-116,-32],[-47,-18],[0,-15],[-22,-8],[-2,-8],[-17,8],[1,-16],[-26,8],[15,-17],[-16,-8],[-16,-31],[-24,-20],[-36,4],[-11,6],[-20,-6],[-4,9],[24,12],[-30,-4],[-2,8],[26,12],[-3,6],[26,13],[-3,20],[24,4],[-14,7],[18,4],[-18,4],[-3,9],[21,-4],[14,19],[19,-4],[-5,11],[38,20],[23,3],[14,11],[23,-2],[0,12],[52,-5],[61,15],[49,28],[35,1]],[[7679,9622],[-33,-4],[35,11],[-2,-7]],[[8666,7787],[3,-13],[-2,-13],[9,-14],[7,9],[6,22]],[[6367,7850],[-12,-15],[-2,-14],[-4,9],[-10,-14],[-17,0],[-7,-31],[-8,-23],[-10,-8],[0,-13],[14,-11],[8,-28],[-2,-14],[6,19],[-5,-26],[0,-21],[7,-10],[4,-16],[12,-26],[2,-11],[6,-4]],[[6110,7681],[-15,21],[-1,6],[-18,24],[-15,7],[-11,15],[-9,1],[-8,19],[-17,11],[8,3],[-1,11],[8,-6],[11,2],[5,-4],[0,16],[-4,2],[8,10],[2,14],[4,-6],[2,11],[11,0],[-13,17],[-5,0],[-4,15],[6,-3],[13,14],[24,9],[0,13],[-30,-8]],[[6061,7895],[-1,12],[5,17],[11,5],[3,10],[25,-3],[0,13],[6,12],[-8,29],[10,5],[-8,3],[11,26],[-1,14],[-10,-2],[-5,10],[-7,0],[-5,9],[-6,-5],[-8,10],[-18,-4],[-8,11],[-8,20],[-16,-6],[-6,-7],[-10,4],[-5,8],[-13,-5],[-6,10],[2,10],[-4,19],[-7,12],[-11,-3],[-13,12],[-3,17],[8,9],[-8,8],[-1,10],[-11,13],[-13,1],[-9,-8],[-15,5],[-1,-11],[-12,-7],[-3,5]],[[5767,8523],[9,-9],[6,9],[-6,10],[-10,-2],[7,19],[-4,30]],[[5773,8590],[9,11]],[[5778,8608],[-1,16],[11,-5],[3,11],[10,-4],[7,12],[29,-8],[2,8],[-9,9],[-25,2],[-10,28],[-16,-9],[-7,2]],[[5856,9203],[15,-9],[19,18],[16,-11],[14,-3],[-7,-8],[-20,4],[6,-7],[19,-3],[-6,-7],[19,4],[5,-5],[35,-7],[23,-1],[52,-28],[21,-21],[14,-2],[16,-14],[13,-3],[30,-21],[1,-23],[7,-2],[-5,-24],[-21,-24],[-30,-15],[-22,-4],[-28,5],[-22,9],[-27,3],[-27,15],[-36,7],[-24,23],[-11,0],[8,-15],[18,-11],[3,-9],[13,-6],[-4,-7],[14,-3],[21,-20],[-4,-21],[-6,-7],[13,-46],[-6,-4],[16,-15],[15,2],[12,-18],[31,-13],[16,9],[1,21],[-25,5],[-16,19],[-3,12],[10,2],[7,12],[18,-9],[10,-13],[0,-9],[10,10],[31,-15],[9,7],[18,-7],[-4,22],[-19,30],[4,9],[18,12],[6,9],[18,5],[22,27],[11,-8],[20,3],[22,-21],[1,11],[11,23],[0,16],[-20,19],[10,28],[3,31],[-25,18],[18,-4],[37,0],[18,-6],[16,-18],[5,-18],[-38,-5],[-12,-22],[17,-9],[8,-17],[20,-5],[34,13],[5,22],[-3,11],[26,7],[1,6],[24,9],[31,22],[8,-1],[31,13],[-1,-12],[16,4],[-12,10],[32,18],[15,-3],[-7,-14],[6,-13],[-21,-8],[29,-3],[7,6],[11,-7],[1,12],[29,14],[38,-5],[18,17],[25,8],[15,-13],[-10,-8],[1,-13],[16,-4],[8,10],[-6,7],[20,5],[13,11],[0,10],[-22,28],[15,6],[2,10],[74,-10],[20,-7],[19,-15],[62,-29],[33,-25],[2,-9],[17,25],[7,19],[-21,2],[-10,16],[-1,12],[-35,14],[3,16],[12,3],[-6,9],[6,15],[-1,20],[-16,-3],[-2,17],[8,14],[28,12],[15,17],[14,51],[12,16],[5,-5],[52,1],[39,-11],[1,-25],[-16,-26],[1,-7],[-15,-11],[8,-13],[16,-10],[5,-15],[-2,-25],[-10,-9],[8,-25],[-5,-11],[3,-21],[-3,-16],[5,-8],[26,-20],[-15,-16],[3,-22],[-18,-13],[-9,-27],[-20,-14],[2,-15],[-15,-1],[-10,-7],[-22,21],[-22,-6],[8,-15],[27,-10],[22,2],[24,-8],[10,6],[2,16],[13,2],[26,20],[1,17],[24,24],[-1,25],[-11,15],[3,17],[29,12],[31,4],[1,-11],[19,-15],[-5,-15],[5,-20],[-7,-7],[18,-13],[18,-1],[-25,13],[0,18],[20,10],[-11,14],[-5,24],[-19,5],[-24,13],[-17,1],[-20,-10],[-27,5],[3,18],[-10,15],[6,25],[17,20],[-21,41],[-15,12],[14,22],[39,16],[5,17],[-4,28],[15,-7],[6,-30],[-13,-17],[7,-17],[-5,-18],[11,-4],[57,-7],[6,-11],[12,0],[-4,17],[-17,2],[-39,16],[-8,20],[27,8],[17,-13],[15,3],[-5,14],[-15,-2],[15,14],[16,5],[28,-3],[51,-35],[23,-3],[18,5],[14,-7],[-14,-16],[-16,-6],[-2,-17],[7,-12],[-10,-12],[11,2],[0,11],[10,11],[9,-6],[-4,-27],[-10,-9],[14,-10],[-7,14],[18,0],[6,8],[-17,44],[13,23],[-6,11],[-32,15],[-3,11],[-26,4],[-14,11],[4,23],[-11,9],[2,28],[39,5],[43,-1],[59,10],[40,3],[-23,-18],[25,2],[10,13],[-19,21],[-22,4],[14,18],[-21,4],[13,10],[16,-7],[68,47],[67,8],[66,16],[-28,9],[19,3],[22,-5],[25,7],[21,-3],[-16,-13],[58,10],[32,12],[29,-10],[-29,24],[18,-3],[40,4],[1,26],[63,39],[43,3],[33,-17],[-21,-13],[-24,-3],[82,-7],[6,-6],[-27,-21],[36,-1],[4,12],[38,1],[19,-4],[27,5],[47,-24],[3,-16],[19,4],[3,-28],[-21,5],[1,-12],[22,-1],[-2,-14],[-20,-17],[-20,-6],[-12,-13],[-47,-16],[-2,-9],[-32,-15],[-20,-19],[-27,-1],[-12,-18],[-17,-2],[-6,-15],[-15,-12],[23,6],[7,17],[37,-2],[15,8],[51,12],[23,10],[-7,6],[-25,-5],[-6,8],[13,10],[25,-6],[7,7],[8,-13],[19,-6],[22,5],[-2,12],[16,-20],[-8,-12],[44,9],[19,7],[100,-13],[-18,-4],[1,-11],[38,-12],[36,-5],[25,2],[21,-8],[-7,11],[19,-6],[11,17],[-8,10],[3,16],[17,-2],[10,10],[23,-14],[29,0],[12,-16],[7,15],[30,-4],[7,-12],[34,-14],[-34,-12],[30,-6],[-39,-3],[20,-10],[18,-1],[6,-12],[-15,-11],[-19,8],[27,-37],[13,-27],[40,-21],[13,12],[18,43],[10,14],[13,-19],[23,-12],[22,0],[4,6],[31,8],[22,-6],[19,-11],[11,-13],[7,27],[16,4],[12,-13],[17,2],[-3,27],[15,17],[-29,0],[12,16],[37,2],[4,10],[-12,9],[23,-1],[23,-9],[38,0],[50,-8],[39,-12],[-37,1],[-16,4],[-13,-15],[27,6],[42,2],[-26,-26],[10,16],[-12,4],[-3,-17],[-23,-12],[29,4],[30,31],[36,0],[34,-9],[13,-13],[-12,-9],[-7,7],[-9,-11],[25,-2],[-2,-11],[20,2],[0,-13],[24,3],[18,-20],[-13,0],[26,-9],[28,3],[65,12],[45,-1],[26,-6],[33,-17],[11,-25],[-11,-19],[3,-8],[31,-8],[3,-28],[11,-11],[-10,-25],[14,22],[-2,26],[19,17],[51,7],[23,-12],[23,2],[11,-5],[24,-1],[21,16],[16,-13],[2,-19],[29,-8],[7,-18],[22,4],[17,12],[-13,32],[-11,-1],[11,11],[-1,19],[41,-7],[22,-1],[17,-10],[1,9],[37,-6],[20,2],[28,-7],[71,-27],[17,-16],[-9958,-15],[3,-12],[28,-11],[2,-9],[12,1],[20,-19],[16,-2],[-10,-7],[12,-5],[0,10],[12,-7],[8,-20],[10,-2],[-3,-18],[5,-13],[-7,-6],[14,-8],[-1,-14],[17,13],[-11,3],[9,6],[-2,17],[-9,6],[27,1],[20,-12],[-5,9],[32,-6],[10,-17],[13,-7],[10,-17],[5,4],[17,-14],[-9,0],[-14,-11],[-5,-15],[-21,13],[11,-20],[-32,3],[4,-27],[-19,-12],[-8,-11],[16,-5],[6,-9],[-13,-1],[-12,-9],[-23,10],[-2,8],[-16,10],[-33,12],[-4,29],[-29,10],[-12,-10],[-30,4],[-11,27],[9,7],[2,15],[-7,-11],[-28,-4],[0,-16],[13,-11],[-7,-23],[9982,-11],[-10,-13],[-34,-9],[-21,8],[-1,8],[-16,9],[12,-16],[-24,2],[-11,7],[20,-23],[20,12],[-3,-16],[17,-17],[8,8],[12,-25],[2,-16],[-5,-13],[18,-9],[2,-20],[7,-16],[-12,-7],[0,-10],[-28,12],[-22,3],[-10,16],[2,-16],[-21,-16],[-25,-11],[-25,-18],[-12,2],[-7,-10],[-8,4],[-1,-10],[-10,-10],[-11,2],[5,-8],[-22,-13],[-3,-12],[-17,-4],[-1,-9],[-15,-7],[-10,-16],[-6,-18],[-8,8],[-7,21],[-13,9],[-32,0],[-35,-20],[-16,-23],[-4,0],[8,39],[-33,-24],[-5,-14],[-7,-2],[-2,11],[-30,3],[2,-9],[-9,-4],[-5,-19],[4,-12],[-12,-10],[4,-10],[-18,-16],[-10,-26],[1,-19],[13,-7],[1,11],[18,-8],[3,-6],[-15,-21],[1,-36],[11,1],[4,-32],[-9,-10],[-12,13],[8,11],[-6,4],[-8,-7],[6,-6],[-16,-12],[-7,-25],[-1,-16],[11,-34],[-11,-14],[-13,-1],[-6,6],[-15,-9],[-13,-15],[-6,-22],[4,-13],[-3,-6],[5,-22],[-13,10],[-9,-5],[-21,-25],[1,-26],[-7,-19],[-10,-20],[-11,-7],[-2,-8],[-17,-22],[-9,17],[-1,40],[-4,33],[-7,23],[-4,46],[-9,60],[-2,29],[4,46],[6,29],[6,15],[17,15],[7,17],[-5,22],[16,0],[7,14],[15,0],[20,19],[24,33],[3,13],[13,12],[5,12],[8,2],[18,25],[14,14],[-1,8],[30,21],[21,9],[-8,4],[15,18],[-7,9],[8,12],[2,33],[14,12],[17,-5],[-18,17],[-15,-1],[-22,-8],[3,-11],[-8,-6],[3,-9],[-6,-15],[10,-9],[-10,-7],[-5,11],[-10,-2],[-12,-18],[-32,-32],[-19,-14],[8,27],[-17,-7],[5,11],[-3,9],[14,29],[-3,10],[-12,-14],[-10,-2],[-3,12],[-13,2],[-26,-10],[-15,3],[-22,-15],[-1,-18],[-20,-20],[0,-9],[-27,-20],[-13,-28],[-7,-1],[-2,-23],[14,5],[16,-14],[-1,-7],[-11,-3],[-8,5],[-13,-10],[-19,11],[0,-8],[-10,-2],[-2,-8],[-16,8],[-9,-11],[-17,-2],[-9,15],[10,4],[18,-1],[6,4],[-15,8],[-10,14],[-13,-8],[-12,2],[-2,7],[-23,8],[-16,-8],[5,-5],[-14,-5],[6,-12],[-14,2],[-2,7],[-12,0],[-10,-9],[-31,13],[-3,-16],[-8,-3],[-6,9],[4,6],[-27,-1],[-32,2],[-19,-3],[-25,-13],[-19,-30],[-17,-11],[-8,-13],[-5,-20],[-15,-9],[-4,-11],[-11,-12],[-14,-9],[-22,-32],[-12,-26],[-26,-27],[-8,-4],[-15,-23],[-19,-15],[0,-12],[14,-9],[30,5],[0,-28],[-4,-21],[12,0],[5,14],[-6,6],[10,10],[8,-2],[-8,-11],[9,-11],[-12,-22],[16,4],[11,9],[7,14],[1,-9],[-10,-15],[7,-3],[8,26],[-1,20],[16,-8],[9,5],[17,-12],[0,-11],[27,-32],[6,-10],[-13,-12],[8,-5],[1,-15],[-4,-13],[11,-12],[-6,-3],[3,-9],[-9,-16],[-6,-3],[0,-12],[-6,-8],[0,-18],[-4,-4],[-3,-20],[1,-32],[3,-23],[-6,-17],[1,-17],[-6,-17],[0,-14],[-26,-38],[-7,-28],[-13,-18],[-5,-27],[-18,-41],[-15,-25],[-10,-11],[-8,-20],[-6,-6],[-5,-15],[-7,-5],[-11,-25],[-3,-14],[-5,0],[-1,-12],[-18,-20],[-9,-6],[-7,-11],[-8,0],[-12,-10],[-6,7],[-4,-4],[-12,10],[-3,-4],[-1,23],[-9,-11],[1,15],[-16,-21],[-1,-11],[-14,-11],[-4,-17]],[[7858,9748],[0,-12],[30,4],[14,-16],[16,-1],[8,-19],[-16,-10],[-31,-5],[-68,-3],[-33,-14],[-21,5],[21,17],[6,19],[36,39],[19,-6],[2,11],[17,-9]],[[7118,9769],[37,-6],[-27,-3],[-10,9]],[[7523,9794],[79,-8],[-18,-13],[-55,8],[-6,13]],[[6659,9787],[-27,3],[21,7],[6,-10]],[[7715,9797],[-5,-21],[25,17],[20,0],[24,-16],[-9,-24],[-19,-5],[25,-18],[-39,-10],[-38,4],[-11,8],[-50,2],[-18,12],[-1,14],[-33,3],[29,14],[23,19],[77,1]],[[6585,9810],[-4,-16],[-28,0],[1,14],[31,2]],[[6481,9813],[15,-7],[-35,-6],[20,13]],[[6646,9809],[-52,-12],[-13,20],[42,0],[23,-8]],[[6329,9836],[-38,-20],[-39,11],[77,9]],[[6729,9835],[-5,-10],[-29,-12],[-38,1],[-13,13],[14,11],[65,2],[6,-5]],[[6537,9839],[-13,-8],[-22,8],[35,0]],[[6388,9840],[7,-8],[30,3],[-9,-14],[-60,-9],[4,-14],[-38,-4],[16,15],[-22,8],[63,10],[-18,7],[27,6]],[[7225,9845],[-28,-9],[2,9],[26,0]],[[6560,9854],[57,-11],[-29,-1],[-28,12]],[[6542,9848],[13,2],[47,-13],[-19,-7],[-41,18]],[[6797,9859],[20,-16],[-28,-11],[-36,-3],[-17,9],[46,10],[15,11]],[[7536,9852],[-37,1],[2,7],[38,-2],[-3,-6]],[[7665,9859],[54,-29],[-20,-3],[0,-24],[-75,-6],[-22,-7],[-63,20],[36,9],[15,17],[-22,-3],[16,14],[81,12]],[[6577,9869],[28,-6],[-38,-6],[10,12]],[[6605,9878],[14,-9],[-44,4],[30,5]],[[5846,5121],[2,-14],[5,-5],[3,-11],[1,-26],[-1,-18],[-8,-2]],[[5801,5040],[6,7],[8,22],[-4,17]],[[5821,5103],[7,4],[4,-9],[5,7],[5,16],[4,0]],[[4526,6379],[-1,15],[2,22]],[[6163,6147],[4,4],[4,-6],[-8,2]],[[6345,6826],[6,-29],[6,-11],[0,-14],[11,-4],[-4,-5],[5,-5],[11,-23],[8,-6],[0,-16],[6,-10],[-2,-18],[-4,4],[7,-31],[8,-17],[0,-12],[8,-21]],[[6422,6601],[7,-4],[-5,-9],[8,-8]],[[6443,6277],[-4,-2],[-58,-16],[-17,-4],[-27,-27],[-16,-40],[-3,-19],[-9,-11],[-5,1],[-7,19],[-11,-3],[-25,5],[-5,6],[-16,1],[-15,-5],[-11,0],[-7,10],[-9,-11],[-1,-24],[2,-15],[-11,-16]],[[6188,6126],[-2,21],[-5,8],[0,8],[-6,9],[0,15],[-15,23],[-9,25],[0,8],[-7,16],[-2,14],[-11,49],[-18,29],[-9,3],[-6,13],[-13,43],[3,7],[-7,28],[4,20],[0,19],[-8,23],[0,8],[-14,46],[-18,21],[-2,-3],[-12,35],[3,0],[0,20],[-4,7],[-4,18],[-8,11],[1,11],[-5,5],[-8,30],[-4,7],[-8,26],[-7,15],[-6,24],[-8,14],[-6,-3],[-6,7],[5,20],[4,47]],[[6024,6449],[0,-20],[6,-21],[2,-34],[2,-65],[5,-40],[4,-8],[10,-8],[5,-9],[1,-10],[10,-6],[3,-8]],[[5946,5727],[-6,5],[3,17],[-2,21],[-20,35],[-3,45],[2,5],[2,31],[-13,0],[0,-12],[-18,0],[7,-17],[0,-27],[2,-11],[-14,-24],[-1,-9],[-18,-39],[-13,-4],[-14,23],[-7,8],[-11,-12],[-4,-17],[-13,-9],[-5,-10],[1,-6],[-23,0],[-4,15],[-22,1],[-14,-7],[-11,27],[-8,12],[-2,15],[-21,-7],[-3,-21],[-5,-6],[0,-19],[-3,-6],[-3,-29],[-11,-12]],[[5634,5812],[3,13],[-1,15],[-4,-1],[-7,16],[3,23],[-5,-2],[0,34],[-7,7],[-6,-7],[-5,9],[6,21],[7,14],[-5,25],[4,9],[9,9],[-4,7],[-1,18],[8,6],[0,10],[7,15],[2,15],[-2,11],[7,9],[12,2],[11,-2],[0,218]],[[5943,5426],[-14,-28],[-9,2],[-3,6],[-5,-5],[-13,-3],[-6,-13],[-7,5],[-4,12],[-7,-8],[-11,7],[-8,-17]],[[4535,5893],[-1,42]],[[4540,5965],[-5,11],[-1,13],[-14,41],[-8,3],[11,9],[8,18],[9,33]],[[7884,5266],[4,-3],[-4,-7],[-7,2],[7,8]],[[3953,2073],[22,-4],[11,-7],[17,-21],[3,-11],[-10,-7],[-10,20],[-12,11],[-22,11],[1,8]],[[9445,4521],[15,-17],[-6,0],[-3,9],[-8,4],[2,4]],[[9612,4569],[-6,-12],[-3,7],[9,5]],[[9481,4595],[13,-14],[8,0],[5,-13],[0,-8],[-12,4],[-9,10],[-1,11],[-6,3],[2,7]],[[9483,4641],[4,-12],[0,-10],[-5,7],[1,15]],[[9442,4640],[13,0],[11,-20],[-4,-9],[-10,7],[-13,1],[-6,13],[0,16],[3,2],[6,-10]],[[9388,4691],[3,-9],[-6,0],[3,9]],[[9371,4689],[-5,3],[5,6],[0,-9]],[[9466,4701],[6,-16],[-2,-11],[5,-5],[7,-34],[-14,21],[-3,10],[-5,37],[6,-2]],[[9378,4711],[4,-3],[3,-19],[-7,4],[-2,13],[-9,-2],[-1,6],[6,13],[5,-1],[1,-11]],[[9365,4716],[-5,1],[-1,9],[4,5],[2,-15]],[[9349,4747],[6,-9],[-4,-9],[-5,14],[3,4]],[[9405,4746],[4,0],[9,-16],[12,-12],[9,-15],[1,-13],[-7,12],[-11,9],[-18,25],[-3,13],[4,-3]],[[9349,4800],[13,-15],[3,-16],[10,-7],[-2,-7],[-15,13],[-7,18],[-6,9],[4,5]],[[4650,5621],[2,-12],[-12,10],[10,2]],[[4681,5581],[-6,9],[-23,18],[1,15],[-7,4],[-6,10],[2,3],[-3,18],[-5,-4],[-3,18],[7,1],[-6,7],[0,11],[4,7],[-6,5]],[[2560,5955],[-2,-14],[-12,0],[-13,5],[-14,14],[-14,2],[-8,11]],[[6359,5831],[0,-104],[-27,-84]],[[6201,5844],[18,-44],[13,-18],[15,0],[11,15],[4,0],[10,12],[11,-4],[6,-7],[6,4],[21,25],[8,-5],[14,3],[9,10],[12,-4]],[[6359,5831],[14,5],[4,7],[7,0],[12,7],[13,23],[15,-9],[-5,-19],[-1,-18],[2,-35],[8,-8],[-14,-6],[-3,-53],[-4,-8],[-1,-12],[-6,-10],[-3,-22],[-6,-20],[-8,-13],[0,-11],[-6,-25],[-10,-29],[-4,-29],[-12,-48],[-13,-33],[-7,-26],[-12,-30],[-14,-28],[-10,-24],[-9,-15],[-8,-19],[-21,-26],[-8,-7],[-18,-27],[-8,-17],[-10,-15],[-22,-48],[-11,-21],[-18,-49],[-9,-28]],[[5183,5187],[-3,-2],[-1,13],[5,8],[3,-11],[-4,-8]],[[3409,5499],[3,3],[1,20],[5,7],[8,-2],[20,-10],[2,10],[33,0],[18,-8],[-1,-20],[-3,-8]],[[5626,8009],[-12,-39]],[[5377,7802],[3,6]],[[5474,8485],[-7,-30],[-12,-34],[0,19],[19,45]],[[5521,8514],[8,1],[-8,-14],[-2,-22],[-10,-8],[-5,7],[-1,19],[10,16],[8,1]],[[5327,8537],[-2,-9],[-9,3],[11,6]],[[5671,8973],[-41,-2],[-9,5],[1,-19],[-16,0],[3,-8],[-13,0],[4,-13],[-10,-13],[-4,-15],[12,-15],[-17,-17],[-4,-15],[-13,-13],[-8,1],[-11,-13],[-32,-24],[0,-9],[-17,-3],[5,-11],[-5,-7],[-15,-2],[5,-14],[-5,-29],[-7,-9],[5,-32],[0,-18],[10,-10],[10,4],[14,-25],[9,-2],[6,-19],[-20,-23],[-6,3],[8,-16],[-17,-16],[-18,-13],[-13,-2],[8,-8],[-6,-3],[3,-15],[-10,-16],[6,-8],[0,-17],[-6,-10],[-3,-37],[-3,0],[-6,-23],[-5,-8],[-6,5],[-27,-3],[-11,-14],[-2,-11],[5,-10],[-6,-9],[-11,3],[-10,-5],[-14,2],[4,15],[-14,31],[8,6],[-6,8],[8,2],[-15,26],[-18,47],[4,27],[-4,8],[-9,-4],[-4,9],[-1,39],[6,-6]],[[5891,3637],[-3,2],[-1,-29],[-12,0],[-11,7],[-9,22],[0,24],[7,17],[1,10],[8,11],[14,-15],[2,2]],[[3249,6221],[-2,2]],[[5999,7178],[-3,27],[1,18],[-4,4],[1,20],[3,4]],[[5997,7251],[7,-5],[5,9],[0,11],[9,3],[-4,14],[4,21],[8,-5],[2,-7],[12,0],[5,6],[18,10],[10,-11],[16,-3],[21,8],[20,17],[22,-1],[16,7],[4,7],[4,-12]],[[5402,5930],[5,0],[0,13],[-4,3],[-6,-5],[2,-5]],[[5398,5936],[-1,0]],[[5044,5541],[-12,-7]],[[7728,5654],[6,-7],[0,-10],[-6,-6],[0,23]],[[7840,5883],[5,-11],[-4,1],[-1,10]],[[7858,5853],[-4,22],[-5,11],[-1,-7],[-12,18],[0,8],[-5,0],[-8,10],[-7,-5],[-16,5],[3,15],[-3,7],[4,21],[-11,5],[-15,-8],[-2,-9],[4,-13],[-4,-16],[0,-27],[2,-5],[-7,-15],[0,-11],[-4,-13],[-5,-20],[0,-15],[-9,-32],[2,-7],[-2,-27],[5,-21],[-3,-10],[16,5],[4,-12],[1,-29],[9,-16],[0,-12],[4,-37],[4,-16],[-4,4],[-3,29],[-6,-2],[2,-13],[6,-18],[6,0],[9,-18],[12,1],[6,-4],[6,-21],[7,-12]],[[7780,5554],[-4,13],[-8,12],[2,14],[-6,2],[-5,10],[-2,18],[-7,5],[1,7],[-5,11],[-4,1],[-3,18],[-5,-2],[-2,-12],[-4,5],[-2,18],[2,14],[4,19],[0,16],[3,16],[7,40]],[[6962,7540],[0,0]],[[6882,7324],[1,20],[12,24],[3,15],[-7,12],[-2,14],[4,10],[-2,9],[-12,1],[0,7],[-9,4],[2,16],[8,9],[18,-6],[7,6],[0,11],[8,4],[1,14],[-10,2],[13,4],[7,-3],[1,9],[-4,11],[5,14],[8,-8],[18,14],[5,7],[8,-18],[-11,-19],[7,-10],[9,3]],[[6497,7333],[-3,23],[2,30],[-1,22],[4,15],[-12,17],[0,9],[-11,0],[1,8],[14,2],[-9,14],[6,10],[-5,3],[-14,-3],[-5,6],[0,25],[4,9],[2,19],[4,-11],[13,-1],[5,-8],[16,6],[1,12],[8,-6],[3,14],[-19,23],[-4,34],[-6,5],[-16,-3],[-5,-6],[-5,-17],[4,0],[-3,-19],[-7,9],[-3,13]],[[6554,7562],[29,-5],[4,7],[-4,7],[-2,23],[4,3]],[[6585,7597],[4,-18],[11,-2],[7,14],[-6,6],[0,13]],[[6601,7610],[5,1],[4,19],[7,-2],[-3,10],[11,1],[2,6],[8,-12],[7,-2],[7,-14],[13,2],[5,-8],[-1,-12],[6,-8],[-5,-4],[4,-10],[-3,-10],[11,-11],[18,1],[6,-3],[7,6],[9,-10],[8,-36],[4,-2],[5,-29],[27,-31],[4,-10],[13,-16],[5,2],[10,-14],[27,-29],[7,1],[19,-14],[3,-4],[-4,-9],[0,-25]],[[8444,4645],[12,9]],[[8469,4667],[5,9],[1,10],[20,8],[10,-1],[6,5],[3,-4],[11,10],[11,-6],[-13,-19],[-8,-3],[-4,-9],[-7,-2],[-6,-8],[-10,-3],[-15,-17]],[[130,3966],[6,0],[-1,-7],[-5,7]],[[3308,5807],[-4,-9],[1,-31],[-4,-4],[-14,-1],[-5,4],[10,7],[0,20],[-5,5],[8,7],[13,2]],[[5303,7135],[4,-6],[-9,-6],[0,11],[5,1]],[[5238,7310],[7,2],[10,15],[13,6],[17,-9],[-4,-1],[6,-17],[-5,-4],[10,-3],[14,20],[3,-14],[-10,-23],[-6,-4],[-3,-16],[6,-18],[11,-10],[-1,-16],[3,-7],[-3,-11],[-12,-28],[-14,-14],[-2,-16],[4,-12],[9,-10],[6,4],[0,-13],[11,4],[2,-20],[9,-1]],[[5778,7600],[-2,-9],[6,-15],[20,-17],[6,-2],[-3,-13],[-14,-1],[-9,6],[-6,-7],[-12,1],[-9,-20],[-14,-10],[-15,-24],[2,17],[13,10],[3,7],[-20,-3],[-1,9]],[[5997,7251],[2,5],[-6,17],[12,18],[0,11],[-6,7],[-10,-18],[-8,-3],[-18,15],[-11,-13],[-17,-26],[-7,1],[-17,-8],[-13,9],[-7,18],[-21,18],[-18,5],[-3,-3],[0,-18],[-5,-18],[-4,6],[-13,-10],[-12,5],[-7,9],[0,16],[-7,-1],[-7,9],[-10,3],[-3,-6],[-11,1],[-2,-6],[-9,3],[8,5],[12,0],[-1,7],[8,7],[-15,-3],[-12,2],[-1,8],[7,-2],[-10,13],[0,14],[-5,5],[7,4],[-1,13],[-17,7],[-11,9],[7,6],[-4,14],[4,3],[5,-20],[14,8],[-7,0],[-5,16],[6,2],[3,10],[-6,-2],[0,14],[-6,9],[9,16],[-24,-6],[2,29],[16,25],[16,3],[2,-7],[11,-1],[-1,11],[8,-2],[-2,-7],[11,3],[19,-3],[1,7],[-8,3],[5,6],[27,5],[-15,3],[-11,13],[6,13],[19,-6],[11,5],[15,-8],[9,1],[7,11],[29,28],[14,6],[10,9],[28,-6],[10,0],[10,9],[1,-10],[6,-11],[9,-5],[10,6],[4,-16],[8,-13],[5,8],[12,-5],[0,-6],[13,-8],[8,0],[15,-7],[32,11],[4,-6],[14,-5],[12,7],[24,20],[3,7]],[[8378,6635],[10,-12],[-5,-8],[1,-22],[-6,-18],[-4,-43],[-3,-19],[-6,-20],[-4,-5],[-4,-17],[-1,-27],[-5,7],[-1,16],[-11,20],[-2,22],[-3,0],[2,15],[0,20],[17,58],[3,3],[4,18],[12,7],[2,9],[4,-4]],[[6108,4736],[-7,-14],[1,11],[6,3]],[[6093,4842],[6,-26],[-4,-4],[-7,16],[0,15],[5,-1]],[[6102,4899],[5,-11],[-3,-19],[-2,30]],[[5914,5071],[5,-1],[2,-12],[-9,7],[2,6]],[[5882,5125],[1,0]],[[5883,5125],[1,0]],[[5884,5125],[-1,-28],[-2,0],[-1,-30],[-2,-20],[4,2],[0,-28],[2,8],[4,-3],[0,13],[5,-3],[-3,10],[7,6],[2,-10],[12,-2],[8,5],[3,-7],[17,17],[-2,8],[-4,-6],[-10,4],[5,8],[-3,9],[5,-1],[5,9],[-1,12],[6,0],[-2,7],[8,17]],[[6088,4913],[1,-10],[-4,-16],[-3,-25],[-5,-21],[2,-26],[5,-5],[12,-22],[2,-15],[-4,-5],[-4,-23],[1,-10],[4,-2],[0,-13],[-4,-14],[2,-25],[4,-7],[0,-16],[4,-4],[0,-15],[4,-21],[-2,-8],[15,-16],[5,-14]],[[5971,4516],[-2,9]],[[5969,4527],[-5,7]],[[5964,4536],[-4,14],[2,20],[-2,4],[-1,30],[-7,20]],[[5949,4630],[-3,4]],[[5946,4635],[-4,-2],[-1,-10]],[[5914,4641],[-12,10],[-3,6],[-13,6],[-6,6],[-4,13],[-11,6]],[[5865,4688],[0,10],[-4,5],[-1,11],[-11,36],[1,11],[-3,8],[2,12],[-5,9],[-7,21],[-6,-1],[-6,12],[0,13],[6,7],[-5,32],[1,21],[-6,5],[2,27]],[[5846,5121],[10,4],[26,0]],[[5883,5125],[1,0]],[[5944,5197],[-8,-3],[1,8],[-8,-8],[-3,15],[-5,-3],[-2,-12],[-6,-7],[0,7],[-6,-6],[0,10],[-8,-17],[-9,0],[-4,-9],[3,-7],[-9,-26],[2,-14]],[[5823,5155],[5,6],[2,14],[-6,2]],[[5846,5254],[4,-12],[9,28],[10,11],[3,11],[-1,25],[-3,-9]],[[6061,7895],[-18,0],[-6,-11],[-4,2],[-12,-13],[-4,3],[-22,-8],[-14,-18],[-4,3],[-11,-12],[4,-22],[15,-28],[18,10],[13,-3],[-5,-9],[1,-11],[-17,-4],[-9,7],[-4,-10],[-23,-12],[-12,-18],[-10,-2],[-11,11],[5,5],[1,24],[-8,3],[-11,13],[-9,-2],[-1,8],[24,21],[8,2],[-1,14],[-6,-3],[-5,10],[-3,-6],[-18,-3],[-17,14],[4,8],[-7,6],[17,-5],[4,9],[-11,-4],[-6,5],[-25,-2],[-24,-46],[-5,1],[-10,-23],[4,2],[-3,-14]],[[5836,7853],[9,-17],[2,3],[-11,14]],[[5948,7848],[0,-9],[-11,7],[3,-13],[4,5],[21,-17],[6,-8],[4,-20],[9,-4],[-12,23],[-7,26],[-10,-6],[-7,16]],[[3523,3302],[-5,-5],[0,-12],[-8,-5],[3,-30]],[[3517,3240],[-4,-18],[-7,-13],[0,-7],[-13,-16],[-20,-17],[-12,10],[-14,0],[-7,-8],[-20,15],[-8,13],[-18,-1],[-16,29],[-2,10],[3,27],[-1,10],[9,9],[-4,31]],[[677,6342],[13,-11],[2,-12],[8,-13],[-6,-10],[-16,-13],[-3,-11],[-7,9],[1,15],[-4,25],[5,12],[-1,17],[8,-8]],[[649,6394],[3,-7],[7,2],[8,-8],[0,-7],[-9,-6],[-4,2],[0,10],[-7,7],[2,7]],[[631,6405],[16,-4],[-2,-5],[-15,2],[1,7]],[[613,6427],[6,-8],[1,-12],[-13,2],[-3,14],[7,10],[2,-6]],[[571,6463],[4,-3],[-1,-14],[-8,-3],[-6,11],[11,9]],[[2301,6687],[-6,35],[0,12],[6,-47]],[[2761,6828],[-2,-18],[-2,17],[4,1]],[[2366,6873],[3,-1],[-11,-13],[8,14]],[[1707,7111],[7,-9],[-6,0],[-1,9]],[[1671,7144],[8,-4],[-8,-2],[0,6]],[[2993,7551],[-6,-11],[8,7],[8,-1],[-20,-15],[-36,-12],[-4,1],[4,11],[7,6],[29,6],[10,8]],[[2582,7791],[0,-10],[-7,-17],[-3,8],[10,19]],[[2679,7836],[1,-8],[-10,3],[9,5]],[[2563,7913],[-19,-17],[-6,0],[5,14],[8,6],[12,-3]],[[2541,7956],[-2,-6],[-15,-14],[0,8],[17,12]],[[1595,7969],[-3,-9],[8,-13],[-1,-5],[-9,17],[5,10]],[[1582,8004],[-1,0]],[[2511,7947],[-14,-11],[-19,-11],[-20,-29],[-17,-21],[9,-3],[22,14],[6,0],[-5,-19],[14,-2],[11,5],[7,9],[14,4],[10,7],[7,13],[7,-14],[-1,-10],[10,6],[9,-1],[12,-22],[11,0],[9,-4],[14,14],[18,-2],[13,6],[0,-17],[15,-1]],[[2663,7852],[-3,-10],[9,-12],[-16,1],[-5,4],[-2,-11],[-7,9],[-15,5],[-3,-7],[-25,-7],[-13,0],[-15,-39],[-3,-12],[-10,-17],[2,-8],[10,17],[7,-3],[-11,-49],[1,-13],[-6,-26],[0,-14],[4,-15],[-2,-28],[9,-33],[8,-4],[16,14],[7,22],[5,26],[0,15],[-9,37],[3,10],[-3,17],[8,20],[0,14],[5,15],[7,2],[7,15],[-3,-22],[4,-4],[4,14],[0,16],[11,5],[-3,15],[9,10],[13,-8],[6,-11],[16,-7],[6,-13],[-4,-11],[4,-6],[-1,-28],[-6,-5],[-1,-13],[-7,-2],[-3,-18],[6,-5],[7,6],[6,16],[9,5],[7,-10],[4,-37],[3,-14]],[[2704,7634],[-5,5],[-3,-17],[-6,-8],[-3,-17],[-6,-12],[15,-11],[7,0],[5,-7],[9,4],[14,3],[9,12],[24,15],[26,21],[14,21],[5,2],[-1,17],[-5,3]],[[2804,7674],[10,6],[16,2],[13,-8],[18,0],[8,5],[15,19],[-3,9],[4,4],[-7,11],[15,16],[1,7]],[[3116,7818],[10,-9]],[[3134,7784],[3,-9],[-3,-20],[-20,-16],[-6,5],[-13,-5],[1,-9],[-12,11],[-3,-22],[-14,-14],[-10,3],[-8,-8],[1,-9],[-11,-15],[-6,-22],[1,-15],[5,1],[-13,-19],[9,-7],[5,-23],[17,-8],[-14,-3],[-6,-6],[0,11],[-15,-14],[0,12],[-5,5],[-1,-17],[-12,-9],[-29,-2],[-6,-9],[-8,-1],[-23,-27],[-1,-10],[8,-1],[-2,-29],[-3,-14],[-7,-9],[-1,-11],[-12,-24],[-1,15],[-7,2],[-10,13],[3,-23],[9,-21],[1,-16],[-10,-31],[-7,-13],[-8,-30],[-2,11],[4,20],[6,17],[-6,-2],[1,9],[-13,21],[-1,17],[4,11],[-2,15],[11,15],[-5,0],[-11,-10],[2,-16],[-4,-6],[0,-23],[4,-6],[1,-20],[-9,11],[-8,-2],[9,-4],[11,-13],[-2,-17],[-6,3],[8,-12],[-7,-12],[6,-8],[-4,-8],[12,-4],[5,-35],[7,-23],[-5,9],[-6,38],[-2,-15],[6,-17],[-9,5],[0,-7],[-15,-4],[-2,-6],[15,3],[13,-8],[-1,-17],[-3,2],[-5,-13],[-13,1],[-2,9],[-4,-8],[7,-6],[-2,-11],[-11,-8],[17,-2],[-7,-11],[-15,-4],[-15,-18],[-9,-27],[-11,1],[-13,-12],[-5,-10],[-4,-21],[-22,-32],[-14,-8],[1,-8],[-12,-15],[1,-5],[-11,-14],[-3,-12],[2,-18],[-4,-5],[-3,-19],[8,-63],[9,-38],[9,-26],[-5,0],[0,-10],[18,-75],[3,-31],[-2,-12],[-1,-28],[-4,-11],[-4,-29],[-12,-1],[-7,-4],[0,14],[-6,25],[-6,7],[-6,0],[-3,31],[-6,5],[0,20],[-7,-2],[-6,21],[-3,18],[7,15],[-1,8],[-7,6],[0,-19],[-5,8],[2,21],[4,14],[0,26],[-4,16],[-7,0],[-10,20],[-6,20],[-11,14],[-10,-4],[-10,-15],[-16,-5],[0,7],[-11,20],[-22,14],[-15,-1],[-2,9],[-4,-11],[-14,-5],[-4,7],[-1,16],[-3,2],[-2,-22],[-5,5],[-5,-5],[-10,6],[-14,-7],[-7,-9],[-11,7],[-4,7],[-8,-12],[2,-7],[10,-1],[3,4],[6,-14],[5,12],[3,-3],[-8,-29],[4,-8],[11,-5],[3,-9],[-4,-9],[-3,10],[-15,9],[2,4],[-12,11],[4,-9],[-2,-16],[-10,12],[-8,-14],[-15,9],[0,13],[-7,3],[-3,12],[-6,5],[-9,-8],[4,-6],[-13,-2],[-21,13],[-16,-5],[2,17],[-8,-18],[-17,-13],[-1,19],[-8,-5],[-1,-9],[4,-12],[-8,-12],[1,-4],[-14,-18],[-16,-9],[-12,8],[1,-9],[6,-8],[-7,-6],[-5,6],[1,-12],[-12,-8],[1,-14],[-7,-33],[-3,-26],[7,-32],[1,-16],[3,-1]],[[2245,6713],[1,7],[-9,21]],[[2193,6879],[-7,10]],[[1746,7056],[-4,10],[-2,27],[-8,16],[-15,18],[-6,2],[-3,12],[-9,0],[-10,6],[-10,18],[-21,3],[-9,5],[0,33],[-7,5],[0,12],[-12,15],[-5,18],[-9,13],[-4,23],[5,9],[-3,11],[-6,-1],[-8,13],[-3,21],[3,5],[9,-11],[-10,29],[8,6],[-7,6],[-2,-19],[-16,13],[5,3],[-7,20],[-7,6],[-10,20],[1,10],[-4,16],[2,10],[-2,15],[-7,17],[-8,9],[0,19],[8,15],[-2,17],[3,16],[-2,16],[-5,5],[3,12],[-5,8],[-1,32],[-5,10],[9,41],[4,25],[2,52],[2,11],[1,62],[13,7],[-14,-2],[1,29],[-4,-2],[6,13],[-7,6],[-10,44],[-7,20],[6,11],[15,-11],[24,0],[7,-6],[4,-14],[-9,-15],[12,8],[2,-20],[-7,-10],[2,-4],[10,14],[-1,29],[5,8],[-5,18],[-9,6],[8,12],[-10,16],[1,6]],[[60,8169],[1,-9],[-11,9],[10,0]],[[80,8161],[-11,0],[12,11],[-1,-11]],[[96,8175],[2,-14],[-10,0],[1,14],[7,0]],[[177,8186],[18,-5],[-12,-3],[-15,5],[9,3]],[[162,8200],[5,-4],[-4,-12],[-7,-4],[-27,-2],[22,6],[9,7],[-7,4],[9,5]],[[9827,8206],[-2,-8],[-9,2],[11,6]],[[9802,8235],[12,-10],[-11,-5],[-1,15]],[[332,8268],[5,-12],[-32,-29],[11,24],[7,1],[-1,9],[10,7]],[[367,8291],[6,-8],[9,8],[-9,-15],[8,1],[-14,-16],[-4,1],[-20,-13],[-6,4],[19,9],[1,25],[10,4]],[[391,8303],[7,-5],[-10,-3],[3,8]],[[451,8354],[5,-1],[6,-16],[-8,-9],[-16,0],[-4,-9],[-14,-3],[-3,11],[7,3],[10,16],[3,-2],[14,10]],[[1304,8361],[8,-30],[-14,25],[6,5]],[[558,8363],[-9,-20],[4,19],[5,1]],[[1355,8404],[7,-16],[-1,-16],[-6,-11],[-13,9],[-5,8],[5,20],[13,6]],[[1295,8417],[2,-9],[-14,-4],[5,11],[7,2]],[[1319,8419],[9,-1],[0,-12],[-13,5],[4,8]],[[1289,8428],[10,-1],[4,-16],[13,-7],[9,-30],[9,-9],[-1,-33],[-16,17],[2,8],[-21,10],[8,20],[-11,-1],[6,13],[-3,17],[-9,2],[0,10]],[[1315,8433],[-5,-12],[-6,8],[11,4]],[[1328,8428],[4,-13],[-9,9],[0,12],[5,-8]],[[1308,8454],[9,-14],[-10,-3],[1,17]],[[1278,8457],[7,-4],[1,-11],[-6,-6],[-6,-28],[-3,4],[0,20],[-4,26],[11,-1]],[[1283,8470],[24,-10],[-2,-17],[-9,13],[7,-18],[-16,-4],[0,23],[-10,9],[6,4]],[[745,8475],[8,0],[-14,-10],[6,10]],[[1234,8479],[-1,-12],[-6,-2],[-1,19],[8,-5]],[[1237,8491],[8,2],[9,-14],[7,-29],[-1,-30],[-5,0],[-13,33],[-1,15],[-10,18],[6,5]],[[749,8519],[11,0],[7,-8],[-2,-10],[8,0],[-4,-10],[-18,4],[10,-7],[-18,-9],[-14,-22],[-10,-6],[6,10],[-12,-1],[-12,22],[3,14],[7,7],[10,0],[7,-19],[-4,28],[5,5],[16,-5],[-3,10],[7,-3]],[[1229,8536],[23,-12],[-1,-13],[-7,-1],[-18,12],[14,-15],[13,1],[1,-16],[-7,0],[-19,17],[7,-17],[-4,-6],[-8,6],[-1,10],[-12,12],[1,20],[18,2]],[[1252,8544],[6,-11],[14,-6],[8,-16],[-2,-5],[2,-21],[-19,-19],[-1,12],[4,10],[-5,13],[-7,43]],[[761,8550],[18,-11],[-6,-8],[-18,-4],[-10,2],[1,9],[10,1],[5,11]],[[913,8659],[5,-3],[-25,-29],[20,32]],[[385,8661],[13,-6],[2,-22],[-19,-5],[-10,2],[-19,13],[-4,7],[16,0],[9,9],[12,2]],[[929,8665],[13,-4],[-15,-9],[2,13]],[[897,8667],[-2,-19],[-4,10],[6,9]],[[231,8857],[0,-6],[17,-7],[20,7],[23,-20],[21,-2],[-2,-9],[-15,1],[-9,-13],[-3,10],[-28,19],[-17,-8],[-13,10],[6,18]],[[1387,8402],[-3,-8],[4,-28],[-10,-21],[-9,-8],[-7,2],[-3,23],[6,6],[-1,24],[-15,16],[-8,-7],[-7,-22],[-9,13],[7,4],[5,24],[-18,22],[-11,25],[-19,8],[12,9],[-11,10],[-3,12],[14,-6],[-15,12],[-15,23],[-16,11],[-4,24],[-6,1],[-1,17],[-6,-11],[7,-17],[1,-24],[-13,11],[-8,-2],[2,13],[-8,12],[-3,-4],[-17,8],[19,-18],[2,-12],[-9,-4],[-20,5],[-23,23],[-9,16],[-34,19],[-11,9],[12,10],[-5,11],[-18,-12],[-9,0],[-21,9],[3,11],[-13,-5],[-31,8],[-30,-6],[-12,12],[-16,5],[3,18],[-11,-14],[-21,5],[9,13],[-18,-1],[-16,19],[-12,1],[-2,-7],[-15,-3],[-3,6],[9,19],[-17,-18],[2,-20],[8,-8],[-6,-3],[-8,-27],[-18,1],[-5,-5],[-2,13],[-12,-25],[-13,3],[-7,-13],[-19,-17],[-16,-2],[-6,6],[3,9],[19,10],[2,8],[-11,-6],[-10,7],[4,16],[8,10],[5,19],[-5,8],[27,21],[6,-6],[18,3],[-14,10],[4,5],[-19,4],[-15,-15],[-9,-2],[-20,-27],[-7,-16],[-11,-2],[9,-10],[-18,-24],[-11,0],[-4,-11],[-9,-5],[-3,-20],[10,3],[13,-8],[2,-6],[-11,-12],[-5,0],[-14,-31],[-4,7],[-2,-11],[-12,1],[-9,-17],[-9,2],[-2,-13],[-10,-1],[-14,-15],[7,-5],[-7,-12],[-5,4],[-12,-16],[-17,-5],[-2,-11],[-13,-1],[-4,-8],[7,-10],[-10,-4],[-1,-7],[-22,-6],[-5,-17],[-6,16],[-20,-21],[-10,2],[-12,-10],[-5,2],[6,12],[-10,1],[-6,-22],[-9,-11],[-12,8],[-4,-14],[-7,2],[-9,-9],[0,18],[10,3],[22,30],[12,12],[9,3],[34,-7],[-10,9],[5,17],[16,15],[24,17],[9,-4],[-1,15],[10,16],[18,15],[2,46],[12,18],[5,16],[-8,-7],[-25,-13],[-11,12],[1,10],[-9,-10],[4,-20],[-11,-2],[-14,29],[-8,-10],[-12,17],[-19,-11],[-20,-18],[-11,4],[11,7],[-1,13],[6,7],[-12,2],[0,15],[7,6],[-20,46],[-1,-17],[-16,-8],[-23,-4],[-9,6],[-13,23],[-19,12],[20,19],[18,-3],[7,-12],[9,7],[-4,7],[-29,2],[-20,20],[-7,-6],[-9,14],[0,21],[-6,7],[15,2],[-4,13],[18,26],[8,-3],[-3,14],[5,17],[11,0],[-8,7],[7,5],[17,0],[2,-11],[17,1],[20,24],[25,-1],[18,17],[-6,30],[-13,9],[10,4],[9,13],[-10,12],[-41,-24],[-17,-5],[-12,9],[-18,0],[-19,-8],[-33,8],[-8,6],[3,12],[-11,10],[7,9],[13,2],[-38,8],[-18,10],[37,28],[24,9],[16,13],[16,7],[29,2],[-7,-11],[7,-19],[26,2],[24,-8],[11,18],[13,-3],[-13,10],[-11,-2],[-2,11],[-15,10],[-5,9],[9,3],[7,-17],[12,-11],[10,4],[14,-9],[16,2],[-3,14],[-23,0],[-9,-7],[-10,10],[2,20],[-23,-2],[-30,5],[-10,27],[-34,25],[-20,9],[-16,11],[9,17],[0,14],[16,-2],[37,4],[19,11],[15,16],[2,19],[29,33],[26,0],[45,27],[39,4],[21,14],[12,13],[33,-7],[-12,-12],[11,-6],[16,16],[13,-7],[2,-12],[19,5],[38,-1],[9,-4],[-12,-15],[24,0],[-6,-6],[32,3],[11,-5],[30,5],[31,-8],[27,-11],[40,0],[30,-12],[40,9],[52,-27],[12,0]],[[2912,6333],[-2,-4]],[[2914,6329],[-1,4]],[[6651,7782],[-7,-26],[12,-19],[-3,-12],[11,5],[3,8],[-2,16],[3,11]],[[6601,7610],[-7,11],[-5,-2],[-4,-22]],[[6627,7805],[-10,-35],[2,-18],[4,-10],[9,17],[-3,20],[3,6],[-1,16]],[[3301,5940],[-4,4],[5,8],[-1,-12]],[[3313,5694],[1,-6],[-5,-8],[-9,-2],[1,7],[12,9]],[[3303,5691],[4,12],[2,-5],[-6,-7]],[[3228,5816],[-8,-8],[-9,6],[4,7],[6,-5],[4,10],[3,-10]],[[3018,5865],[-3,-7],[-14,-7],[0,-13],[10,-38],[-1,-16],[-4,-6],[-10,-30],[5,-18],[6,-7],[-1,-15],[6,-5],[9,7],[5,10],[-1,32],[-11,30],[-2,23],[3,10],[4,0],[12,13],[18,8],[5,9],[8,-2],[-2,13],[-11,-5],[-2,13],[2,16],[5,5],[6,-10],[2,-22],[4,-10],[12,3],[15,-10],[7,-12],[4,-15],[-2,-7],[5,-15],[8,-1],[17,4],[6,4],[21,2],[11,-20],[11,-9],[11,-5],[8,2],[4,9],[5,0],[2,8],[20,5],[-5,5],[-9,1],[10,6],[7,-3],[11,6],[12,1],[16,-4],[8,4],[-2,-6],[-10,-6],[-16,0],[1,-9],[5,-5],[1,-12],[-9,-1],[5,-4],[8,8],[5,-25],[2,17],[11,-10],[7,-3],[-2,7],[13,-19],[4,1],[7,-12],[-9,-24],[-3,-22],[-12,0],[10,-11],[3,6],[14,6],[6,-4],[3,6],[9,-4]],[[7888,5785],[0,-17],[-4,12],[4,5]],[[7999,6420],[-7,1],[-4,-12],[-7,-3],[1,-12],[-6,-6],[-5,4],[-9,-2],[4,-16],[-8,-8],[2,-17],[-7,-4],[-4,-11],[-7,-4],[-3,-15],[-1,-23],[-5,-13],[7,-30],[7,-15],[11,-17],[-1,-15],[8,-21],[9,-14],[4,-12],[16,-29],[6,-2],[16,-47],[8,-11],[1,-21],[5,-18],[-2,-5],[6,-25],[0,-35],[2,-3],[0,-23],[3,-13],[-6,-10],[0,-42],[-3,-5],[4,-7],[-4,-10],[-2,4],[0,-16],[-7,-2],[-2,-8],[-4,0],[-8,-14],[-6,-1],[-2,-13],[-5,0],[-11,-13],[-13,0],[-5,12],[1,-23],[-11,2],[11,-9],[-4,-11],[-6,4],[7,-11],[-3,-2],[-12,24],[0,-5],[10,-18],[2,-11],[-5,-6],[-10,15],[4,-19],[-1,-6],[-17,-13],[-12,-29],[-11,-2],[5,9],[-2,10],[0,36],[2,17],[6,7],[-10,15],[-5,-5],[-3,16]],[[9706,4050],[-7,13],[4,7],[3,-20]],[[9699,4104],[2,-14],[-8,6],[0,12],[6,-4]],[[9675,4172],[7,-8],[-6,-8],[-6,7],[5,9]],[[9671,4228],[8,-15],[-7,1],[-1,14]],[[9675,4243],[-6,-2],[-6,7],[7,9],[5,-14]],[[9650,4255],[10,-14],[1,-7],[-10,-6],[-4,27],[-5,1],[1,12],[4,-1],[3,-12]],[[9672,4262],[-3,21],[1,9],[3,-20],[-1,-10]],[[9662,4292],[-5,2],[9,9],[-4,-11]],[[9671,4298],[-2,1],[-1,24],[2,-2],[1,-23]],[[9633,4310],[4,2],[0,11],[5,-11],[3,-23],[-11,-7],[-7,15],[1,11],[-3,15],[1,17],[5,-11],[2,-19]],[[9653,4368],[1,-9],[-5,0],[4,9]],[[9654,4385],[-4,-3],[-1,10],[5,-7]],[[5917,7177],[-8,1]],[[233,4380],[5,-6],[-14,2],[-4,7],[7,5],[6,-8]],[[213,4406],[3,-6],[-1,-12],[-9,0],[-5,15],[12,3]],[[6488,5914],[7,-6],[7,6],[10,-9],[-9,-11],[-10,-3],[-6,2],[-5,12],[6,9]],[[6474,6141],[-14,-9],[-10,-18],[-2,-12],[2,-20],[-10,-7],[-13,-15],[-23,-11],[-11,-11],[-4,0],[-25,-18],[-3,-12],[-8,-16],[-6,-3],[-14,3],[-10,-9],[-6,-13],[-15,-8],[-5,-6],[-14,0],[-16,-6],[-7,-15],[-15,-17],[-7,3],[-4,-8],[-14,-5],[-10,9],[-3,-4],[-7,35],[2,25],[-6,21],[-2,16],[-3,43],[-6,7],[4,2],[-3,17],[3,18],[-1,29]],[[5913,3637],[-1,-16],[-5,-23],[-3,-38],[-5,-21],[-10,-19],[-7,-3],[-13,-27],[-21,-68],[-4,-16],[-15,-32],[-4,-4],[-16,-28],[-9,-21],[-13,-22],[-25,-35],[-27,-26],[-15,4],[-9,-9],[0,-11],[-17,5],[-4,-12],[-11,1],[-8,6],[-16,4],[-6,-7],[-23,6],[-10,-4],[-12,-19],[-7,3],[-6,-5],[-11,4],[-1,-6],[-11,0],[-14,-20],[-9,3],[-9,9],[0,11],[-6,4],[-8,-2],[0,17],[-10,-2],[0,-13],[-4,19],[5,10],[-2,12],[-7,16],[-4,20],[-4,-1],[1,18],[7,-2],[4,8],[1,20],[-2,22],[-4,17],[-9,20],[-7,28],[-8,24],[-6,42],[-6,29],[-7,15],[-3,15]],[[5815,3905],[12,3],[14,-12],[15,3],[13,-7]],[[5844,4282],[-15,1],[-13,-5],[-15,-18],[0,-21],[-3,-8]],[[5798,4231],[-3,3],[-13,-9],[-5,-13],[-12,-14],[-13,-38],[-2,-11]],[[5750,4149],[-9,-7],[-14,11],[-7,-7],[-7,11],[-12,1]],[[5792,4643],[5,5],[9,23],[3,15],[-7,8]],[[5849,4709],[-4,-14],[7,-1],[9,-18],[5,4],[-1,8]],[[5750,4149],[10,22],[5,5],[4,17],[11,9],[0,11],[8,0],[8,9],[1,-7],[8,12],[-7,4]]],"type":"Topology","objects":{"units":{"geometries":[{"arcs":[[0,1,2,3,4,5]],"type":"Polygon","id":"AFG","properties":{"name":"Afghanistan"}},{"arcs":[[[6,7,8,9]],[[10,11,12]]],"type":"MultiPolygon","id":"AGO","properties":{"name":"Angola"}},{"arcs":[[[13,14]],[[15,16]],[[17,18,19,20,21,22,23,24,25,26,27,28,29,30]]],"type":"MultiPolygon","id":"ALB","properties":{"name":"Albania"}},{"arcs":[[[31]]],"type":"MultiPolygon","id":"ALD","properties":{"name":"Aland"}},{"arcs":[[32,33]],"type":"Polygon","id":"AND","properties":{"name":"Andorra"}},{"arcs":[[[34]],[[35,36,37,38,39],[40]]],"type":"MultiPolygon","id":"ARE","properties":{"name":"United Arab Emirates"}},{"arcs":[[[41,42]],[[43,44]],[[45,46,47,48,49,50]]],"type":"MultiPolygon","id":"ARG","properties":{"name":"Argentina"}},{"arcs":[[[51]],[[52,53,54,55,56],[57],[58]]],"type":"MultiPolygon","id":"ARM","properties":{"name":"Armenia"}},{"arcs":[[[59]],[[60]],[[61]],[[62]],[[63]],[[64]],[[65]],[[66]],[[67]],[[68]],[[69]],[[70]],[[71]],[[72]],[[73]],[[74]],[[75]],[[76]],[[77]],[[78]],[[79]],[[80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90]],[[91]],[[92]],[[93]],[[94]],[[95]],[[96]],[[97]],[[98]],[[99]],[[100]],[[101]],[[102]],[[103]],[[104]],[[105]],[[106]],[[107]],[[108]],[[109]],[[110]],[[111]],[[112]],[[113]],[[114]],[[115]],[[116]],[[117]],[[118]],[[119]],[[120]]],"type":"MultiPolygon","id":"ATA","properties":{"name":"Antarctica"}},{"arcs":[[[121]]],"type":"MultiPolygon","id":"ATF","properties":{"name":"Fr. S. Antarctic Lands"}},{"arcs":[[[122]],[[123]],[[124]],[[125]],[[126]],[[127]],[[128]],[[129]],[[130]],[[131]],[[132]],[[133]],[[134]],[[135]],[[136]],[[137]],[[138]],[[139]],[[140]]],"type":"MultiPolygon","id":"AUS","properties":{"name":"Australia"}},{"arcs":[[141,142,143,144,145,146,147,148,149,150]],"type":"Polygon","id":"AUT","properties":{"name":"Austria"}},{"arcs":[[[151,152,-55]],[[-59]],[[-58]],[[153,154,155,-53,156],[-52]]],"type":"MultiPolygon","id":"AZE","properties":{"name":"Azerbaijan"}},{"arcs":[[157,158,159,160]],"type":"Polygon","id":"BDI","properties":{"name":"Burundi"}},{"arcs":[[161,162,163,164,165,166,167]],"type":"Polygon","id":"BEL","properties":{"name":"Belgium"}},{"arcs":[[168,169,170,171,172]],"type":"Polygon","id":"BEN","properties":{"name":"Benin"}},{"arcs":[[173,-172,174,175,176,177]],"type":"Polygon","id":"BFA","properties":{"name":"Burkina Faso"}},{"arcs":[[[178]],[[179]],[[180,181,182]]],"type":"MultiPolygon","id":"BGD","properties":{"name":"Bangladesh"}},{"arcs":[[183,184,185,186,187,188]],"type":"Polygon","id":"BGR","properties":{"name":"Bulgaria"}},{"arcs":[[189]],"type":"Polygon","id":"BHR","properties":{"name":"Bahrain"}},{"arcs":[[[190]],[[191]],[[192]],[[193]],[[194]],[[195]],[[196]],[[197]],[[198]],[[199]],[[200]]],"type":"MultiPolygon","id":"BHS","properties":{"name":"Bahamas"}},{"arcs":[[201,202,203,204,205]],"type":"Polygon","id":"BIH","properties":{"name":"Bosnia and Herz."}},{"arcs":[[206,207,208,209,210]],"type":"Polygon","id":"BLR","properties":{"name":"Belarus"}},{"arcs":[[[211,212,213]]],"type":"MultiPolygon","id":"BLZ","properties":{"name":"Belize"}},{"arcs":[[[214,215]],[[216,-51,217,218,219,220,221]]],"type":"MultiPolygon","id":"BOL","properties":{"name":"Bolivia"}},{"arcs":[[[222]],[[223]],[[224]],[[225]],[[226]],[[227]],[[228]],[[229]],[[230]],[[231]],[[232]],[[233]],[[234]],[[235]],[[236]],[[237]],[[238,239,240,241,242,243,-47,244,245,246,-222,247,248,249,250]]],"type":"MultiPolygon","id":"BRA","properties":{"name":"Brazil"}},{"arcs":[[251]],"type":"Polygon","id":"BRB","properties":{"name":"Barbados"}},{"arcs":[[[252,253]],[[254,255]]],"type":"MultiPolygon","id":"BRN","properties":{"name":"Brunei"}},{"arcs":[[256,257]],"type":"Polygon","id":"BTN","properties":{"name":"Bhutan"}},{"arcs":[[258,259,260]],"type":"Polygon","id":"BWA","properties":{"name":"Botswana"}},{"arcs":[[261,262,263,264,265,266]],"type":"Polygon","id":"CAF","properties":{"name":"Central African Rep."}},{"arcs":[[[267]],[[268]],[[269]],[[270]],[[271]],[[272]],[[273]],[[274,275,276,277]],[[278]],[[279]],[[280]],[[281]],[[282]],[[283]],[[284]],[[285]],[[286]],[[287]],[[288]],[[289]],[[290]],[[291]],[[292]],[[293]],[[294]],[[295]],[[296]],[[297]],[[298]],[[299]],[[300]],[[301]],[[302]],[[303]],[[304]],[[305]],[[306]],[[307]],[[308]],[[309]],[[310]],[[311]],[[312]],[[313]],[[314]],[[315]],[[316]],[[317]],[[318]],[[319]],[[320]],[[321]],[[322]],[[323]],[[324]],[[325]],[[326]],[[327]],[[328]],[[329]],[[330]],[[331]],[[332]],[[333,334,335,336,337,338,339,340,341,342,343,344,345,-346,346,347]],[[348]],[[349]],[[350]],[[351]],[[352]],[[353]],[[354]],[[355]],[[356]],[[357]],[[358]],[[359]],[[360]],[[361]],[[362]],[[363]],[[364]],[[365]],[[366]],[[367]],[[368]],[[369]],[[370]],[[371]],[[372]],[[373]],[[374]],[[375]],[[376]],[[377]],[[378]],[[379]],[[380]],[[381]],[[382]],[[383]],[[384]]],"type":"MultiPolygon","id":"CAN","properties":{"name":"Canada"}},{"arcs":[[385,386,387,-148,388,-146,389,390,391,392,393]],"type":"Polygon","id":"CHE","properties":{"name":"Switzerland"}},{"arcs":[[[394]],[[395]],[[396]],[[397]],[[398]],[[399]],[[400]],[[401]],[[402]],[[-44,403,-42,404]],[[405]],[[406]],[[407]],[[408]],[[409]],[[410]],[[411]],[[412]],[[413]],[[414]],[[415]],[[416]],[[417]],[[418]],[[419]],[[420]],[[421]],[[422]],[[423]],[[424]],[[425]],[[426]],[[427]],[[428]],[[429]],[[430]],[[431]],[[432]],[[433]],[[434]],[[435]],[[-50,436,437,-218]]],"type":"MultiPolygon","id":"CHL","properties":{"name":"Chile"}},{"arcs":[[[438]],[[439]],[[440]],[[441]],[[442,443,444,445,446,447,448,449,450,451,-258,452,453,454,455,456,-1,457,458,459,460,461,462,463,464]]],"type":"MultiPolygon","id":"CHN","properties":{"name":"China"}},{"arcs":[[[465,466]],[[-177,467,468,469,470,471]]],"type":"MultiPolygon","id":"CIV","properties":{"name":"C\u00f4te d'Ivoire"}},{"arcs":[[[472,-266,473,474,475,476,477,478,479]],[[480,481]]],"type":"MultiPolygon","id":"CMR","properties":{"name":"Cameroon"}},{"arcs":[[[482,483,484,485]],[[486,487,488,489]],[[490,491,492,493]]],"type":"MultiPolygon","id":"CNM","properties":{"name":"Cyprus U.N. Buffer Zone"}},{"arcs":[[[494]],[[495,496,497,498,499,500,501,502,503,-160,504,505,506,507,-10,508,-11,509,-264]]],"type":"MultiPolygon","id":"COD","properties":{"name":"Dem. Rep. Congo"}},{"arcs":[[-510,-13,510,511,-474,-265]],"type":"Polygon","id":"COG","properties":{"name":"Congo"}},{"arcs":[[[512,-249,513,514,515,516,517]]],"type":"MultiPolygon","id":"COL","properties":{"name":"Colombia"}},{"arcs":[[[518]],[[519]]],"type":"MultiPolygon","id":"COM","properties":{"name":"Comoros"}},{"arcs":[[[520]],[[521]],[[522]],[[523]]],"type":"MultiPolygon","id":"CPV","properties":{"name":"Cape Verde"}},{"arcs":[[[524,525,526,527]]],"type":"MultiPolygon","id":"CRI","properties":{"name":"Costa Rica"}},{"arcs":[[[528]],[[529]],[[530]],[[531,532,533,534]]],"type":"MultiPolygon","id":"CUB","properties":{"name":"Cuba"}},{"arcs":[[535]],"type":"Polygon","id":"CUW","properties":{"name":"Cura\u00e7ao"}},{"arcs":[[[536,-488]],[[-486,537,-494,538]]],"type":"MultiPolygon","id":"CYN","properties":{"name":"N. Cyprus"}},{"arcs":[[[539,540]],[[541]],[[542,543,-484]],[[544,545,546,547,-490,548,-492]]],"type":"MultiPolygon","id":"CYP","properties":{"name":"Cyprus"}},{"arcs":[[549,550,-151,551]],"type":"Polygon","id":"CZE","properties":{"name":"Czech Rep."}},{"arcs":[[[-387,552]],[[553,554]],[[555]],[[556,557,-552,-150,558,-394,559,560,-162,561,562,563]]],"type":"MultiPolygon","id":"DEU","properties":{"name":"Germany"}},{"arcs":[[564,565,566,567,568,569]],"type":"Polygon","id":"DJI","properties":{"name":"Djibouti"}},{"arcs":[[570]],"type":"Polygon","id":"DMA","properties":{"name":"Dominica"}},{"arcs":[[[571]],[[572]],[[573]],[[574]],[[575]],[[576]],[[577]],[[-564,578]]],"type":"MultiPolygon","id":"DNK","properties":{"name":"Denmark"}},{"arcs":[[[579,580,581,582,583,584]]],"type":"MultiPolygon","id":"DOM","properties":{"name":"Dominican Rep."}},{"arcs":[[585,586,587,588,589,590,591,592]],"type":"Polygon","id":"DZA","properties":{"name":"Algeria"}},{"arcs":[[[593]],[[594]],[[595]],[[596]],[[597]],[[598]],[[599,600,-515]]],"type":"MultiPolygon","id":"ECU","properties":{"name":"Ecuador"}},{"arcs":[[[601,602,603,604,605,606]]],"type":"MultiPolygon","id":"EGY","properties":{"name":"Egypt"}},{"arcs":[[[607]],[[-569,608,609,610]]],"type":"MultiPolygon","id":"ERI","properties":{"name":"Eritrea"}},{"arcs":[[-485,-544,611,-541,612,-545,-491,-538],[-542]],"type":"Polygon","id":"ESB","properties":{"name":"Dhekelia"}},{"arcs":[[[613]],[[614]],[[615]],[[616]],[[617]],[[618]],[[619,620]],[[621,622]],[[623]],[[624]],[[625]],[[626]],[[627,-33,628,629,630,631,632,633]]],"type":"MultiPolygon","id":"ESP","properties":{"name":"Spain"}},{"arcs":[[[634]],[[635]],[[636,637,638,639,640,641,642,643,644]]],"type":"MultiPolygon","id":"EST","properties":{"name":"Estonia"}},{"arcs":[[-568,645,-566,646,647,648,649,650,-609]],"type":"Polygon","id":"ETH","properties":{"name":"Ethiopia"}},{"arcs":[[[651]],[[652,653,654,655]]],"type":"MultiPolygon","id":"FIN","properties":{"name":"Finland"}},{"arcs":[[[656]],[[657]],[[658]]],"type":"MultiPolygon","id":"FJI","properties":{"name":"Fiji"}},{"arcs":[[[659]],[[660]]],"type":"MultiPolygon","id":"FLK","properties":{"name":"Falkland Is."}},{"arcs":[[[661]],[[662]],[[-240,663,664]],[[665]],[[666]],[[667]],[[668]],[[669,-560,-393,670,-391,671,672,673,674,-629,-34,-628,675,-164],[-627]]],"type":"MultiPolygon","id":"FRA","properties":{"name":"France"}},{"arcs":[[[676]],[[677]]],"type":"MultiPolygon","id":"FRO","properties":{"name":"Faeroe Is."}},{"arcs":[[[678]]],"type":"MultiPolygon","id":"FSM","properties":{"name":"Micronesia"}},{"arcs":[[[-512,679,680,-475]]],"type":"MultiPolygon","id":"GAB","properties":{"name":"Gabon"}},{"arcs":[[[681]],[[682]],[[683,684]],[[685]],[[686]],[[687]],[[688]],[[689]],[[690]],[[691]],[[692]],[[693]],[[694]],[[695]]],"type":"MultiPolygon","id":"GBR","properties":{"name":"United Kingdom"}},{"arcs":[[-157,-57,696,697,698]],"type":"Polygon","id":"GEO","properties":{"name":"Georgia"}},{"arcs":[[699,700,-466,701,-468,-176]],"type":"Polygon","id":"GHA","properties":{"name":"Ghana"}},{"arcs":[[-631,702]],"type":"Polygon","id":"GIB","properties":{"name":"Gibraltar"}},{"arcs":[[703,-471,704,705,706,707,708]],"type":"Polygon","id":"GIN","properties":{"name":"Guinea"}},{"arcs":[[709,710]],"type":"Polygon","id":"GMB","properties":{"name":"Gambia"}},{"arcs":[[[711]],[[712,713,-708]]],"type":"MultiPolygon","id":"GNB","properties":{"name":"Guinea-Bissau"}},{"arcs":[[[-681,714,-476]],[[715]]],"type":"MultiPolygon","id":"GNQ","properties":{"name":"Eq. Guinea"}},{"arcs":[[[716]],[[717]],[[718]],[[719]],[[720]],[[721]],[[722]],[[723]],[[724]],[[725]],[[726]],[[727]],[[728]],[[729]],[[730]],[[731]],[[732,-186,733,734,-27,735,-25,736]]],"type":"MultiPolygon","id":"GRC","properties":{"name":"Greece"}},{"arcs":[[[737]]],"type":"MultiPolygon","id":"GRD","properties":{"name":"Grenada"}},{"arcs":[[[738]],[[739]],[[740]],[[741]],[[742]],[[743]],[[744]],[[745]],[[746]],[[747]],[[748]],[[749]],[[750]],[[751]],[[752]],[[753]],[[754]],[[755]],[[756]],[[757]],[[758]],[[759]],[[760]],[[761]],[[762]],[[763]]],"type":"MultiPolygon","id":"GRL","properties":{"name":"Greenland"}},{"arcs":[[-213,764,765,766,767,768]],"type":"Polygon","id":"GTM","properties":{"name":"Guatemala"}},{"arcs":[[769]],"type":"Polygon","id":"GUM","properties":{"name":"Guam"}},{"arcs":[[[770,-251,771,772]]],"type":"MultiPolygon","id":"GUY","properties":{"name":"Guyana"}},{"arcs":[[[773,-447]]],"type":"MultiPolygon","id":"HKG","properties":{"name":"Hong Kong"}},{"arcs":[[774]],"type":"Polygon","id":"HMD","properties":{"name":"Heard I. and McDonald Is."}},{"arcs":[[[775,776,777,-766,778]]],"type":"MultiPolygon","id":"HND","properties":{"name":"Honduras"}},{"arcs":[[[-204,779,780]],[[781]],[[782]],[[783]],[[784]],[[785,786,-206,787,788]]],"type":"MultiPolygon","id":"HRV","properties":{"name":"Croatia"}},{"arcs":[[[-582,789]],[[790]],[[-584,791,-580,792]]],"type":"MultiPolygon","id":"HTI","properties":{"name":"Haiti"}},{"arcs":[[793,794,795,-786,796,-143,797]],"type":"Polygon","id":"HUN","properties":{"name":"Hungary"}},{"arcs":[[[798]],[[799]],[[800]],[[801,802,803,804]],[[805]],[[806]],[[807]],[[808]],[[809]],[[810]],[[811]],[[812]],[[813]],[[814]],[[815]],[[816]],[[817]],[[818]],[[819]],[[820]],[[821]],[[822]],[[823]],[[824]],[[825]],[[826]],[[827]],[[828]],[[829]],[[830]],[[831]],[[832]],[[833]],[[834]],[[835]],[[836]],[[837]],[[838]],[[839]],[[840]],[[841]],[[842]],[[843]],[[844]],[[845]],[[846]],[[847]],[[848]],[[849]],[[850]],[[851]],[[852]],[[853]],[[854]],[[855]],[[856]],[[857,858]],[[859]],[[860]],[[861]],[[862]],[[863]],[[864]],[[865]],[[866]],[[867]],[[868]],[[869]],[[870]],[[871]],[[872]],[[873]],[[874]],[[875]],[[876]],[[877]],[[878]],[[879]],[[880]],[[881,882]],[[883]],[[884,885]],[[886]],[[887]]],"type":"MultiPolygon","id":"IDN","properties":{"name":"Indonesia"}},{"arcs":[[888]],"type":"Polygon","id":"IMN","properties":{"name":"Isle of Man"}},{"arcs":[[[889]],[[890]],[[891]],[[892]],[[893,-453,-257,-452,894,-183,895,896,897,-455]]],"type":"MultiPolygon","id":"IND","properties":{"name":"India"}},{"arcs":[[[-684,898]]],"type":"MultiPolygon","id":"IRL","properties":{"name":"Ireland"}},{"arcs":[[[899]],[[-54,-156,900,901,-3,902,903,904,905,-152]]],"type":"MultiPolygon","id":"IRN","properties":{"name":"Iran"}},{"arcs":[[-905,906,907,908,909,910,911,912,913]],"type":"Polygon","id":"IRQ","properties":{"name":"Iraq"}},{"arcs":[[[914]]],"type":"MultiPolygon","id":"ISL","properties":{"name":"Iceland"}},{"arcs":[[915,916,917,918,919,920,921,-603,922,923,924,925]],"type":"Polygon","id":"ISR","properties":{"name":"Israel"}},{"arcs":[[[926]],[[927]],[[928,929,-672,-390,-145],[930],[931]]],"type":"MultiPolygon","id":"ITA","properties":{"name":"Italy"}},{"arcs":[[932]],"type":"Polygon","id":"JAM","properties":{"name":"Jamaica"}},{"arcs":[[933,934,-921,935,-919,936,937,-916,938,-910]],"type":"Polygon","id":"JOR","properties":{"name":"Jordan"}},{"arcs":[[[939]],[[940]],[[941]],[[942]],[[943]],[[944]],[[945]],[[946]],[[947]],[[948]],[[949]],[[950]],[[951]]],"type":"MultiPolygon","id":"JPN","properties":{"name":"Japan"}},{"arcs":[[952]],"type":"Polygon","id":"KAB","properties":{"name":"Baikonur"}},{"arcs":[[-898,953,-456]],"type":"Polygon","id":"KAS","properties":{"name":"Siachen Glacier"}},{"arcs":[[[954,955]],[[-460,956,957,958,959,960,961,962],[-953]]],"type":"MultiPolygon","id":"KAZ","properties":{"name":"Kazakhstan"}},{"arcs":[[[-649,963,964,965,966,967,968]]],"type":"MultiPolygon","id":"KEN","properties":{"name":"Kenya"}},{"arcs":[[-459,969,970,-957],[971],[972],[973]],"type":"Polygon","id":"KGZ","properties":{"name":"Kyrgyzstan"}},{"arcs":[[[974,975,976,977]]],"type":"MultiPolygon","id":"KHM","properties":{"name":"Cambodia"}},{"arcs":[[[978]]],"type":"MultiPolygon","id":"KIR","properties":{"name":"Kiribati"}},{"arcs":[[[979]],[[980]],[[981]],[[982,983]]],"type":"MultiPolygon","id":"KOR","properties":{"name":"Korea"}},{"arcs":[[984,-18,985,986]],"type":"Polygon","id":"XKX","properties":{"name":"Kosovo"}},{"arcs":[[[987]],[[988,-908,989]]],"type":"MultiPolygon","id":"KWT","properties":{"name":"Kuwait"}},{"arcs":[[990,-977,991,992,-450]],"type":"Polygon","id":"LAO","properties":{"name":"Lao PDR"}},{"arcs":[[-925,993,994]],"type":"Polygon","id":"LBN","properties":{"name":"Lebanon"}},{"arcs":[[-470,995,996,-705]],"type":"Polygon","id":"LBR","properties":{"name":"Liberia"}},{"arcs":[[-606,997,998,999,-587,1000,1001]],"type":"Polygon","id":"LBY","properties":{"name":"Libya"}},{"arcs":[[1002]],"type":"Polygon","id":"LCA","properties":{"name":"Saint Lucia"}},{"arcs":[[-389,-147]],"type":"Polygon","id":"LIE","properties":{"name":"Liechtenstein"}},{"arcs":[[[1003]]],"type":"MultiPolygon","id":"LKA","properties":{"name":"Sri Lanka"}},{"arcs":[[1004]],"type":"Polygon","id":"LSO","properties":{"name":"Lesotho"}},{"arcs":[[[1005,1006]],[[-210,1007,1008,1009,1010]]],"type":"MultiPolygon","id":"LTU","properties":{"name":"Lithuania"}},{"arcs":[[-561,-670,-163]],"type":"Polygon","id":"LUX","properties":{"name":"Luxembourg"}},{"arcs":[[1011,-211,-1011,1012,-644]],"type":"Polygon","id":"LVA","properties":{"name":"Latvia"}},{"arcs":[[1013,1014]],"type":"Polygon","id":"MAF","properties":{"name":"St-Martin"}},{"arcs":[[-622,1015,-620,1016,-592,1017,1018]],"type":"Polygon","id":"MAR","properties":{"name":"Morocco"}},{"arcs":[[1019,-674]],"type":"Polygon","id":"MCO","properties":{"name":"Monaco"}},{"arcs":[[1020,1021]],"type":"Polygon","id":"MDA","properties":{"name":"Moldova"}},{"arcs":[[[1022]],[[1023]]],"type":"MultiPolygon","id":"MDG","properties":{"name":"Madagascar"}},{"arcs":[[[1024]],[[1025]],[[1026]],[[1027]],[[1028]],[[1029,1030,1031,1032,1033,-214,-769,1034,1035],[1036]]],"type":"MultiPolygon","id":"MEX","properties":{"name":"Mexico"}},{"arcs":[[[-23,1037]],[[-187,-733,1038,-15,1039,-21,1040,-19,-985,1041]]],"type":"MultiPolygon","id":"MKD","properties":{"name":"Macedonia"}},{"arcs":[[1042,-178,-472,-704,1043,1044,-589]],"type":"Polygon","id":"MLI","properties":{"name":"Mali"}},{"arcs":[[[1045]],[[1046]],[[1047]],[[1048]],[[1049]],[[1050]],[[-993,1051,1052,-181,-895,-451]]],"type":"MultiPolygon","id":"MMR","properties":{"name":"Myanmar"}},{"arcs":[[1053,-986,-31,1054,-16,1055,-29,1056,-780,-203]],"type":"Polygon","id":"MNE","properties":{"name":"Montenegro"}},{"arcs":[[-464,1057,-462,1058]],"type":"Polygon","id":"MNG","properties":{"name":"Mongolia"}},{"arcs":[[[1059,1060,1061,1062,1063,1064,1065,1066,1067]]],"type":"MultiPolygon","id":"MOZ","properties":{"name":"Mozambique"}},{"arcs":[[[1068,1069,1070,-590,-1045]]],"type":"MultiPolygon","id":"MRT","properties":{"name":"Mauritania"}},{"arcs":[[[1071]]],"type":"MultiPolygon","id":"MUS","properties":{"name":"Mauritius"}},{"arcs":[[[1072,1073]],[[1074,1075]],[[1076,1077]],[[1078,1079]],[[1080,-1065,1081,1082]]],"type":"MultiPolygon","id":"MWI","properties":{"name":"Malawi"}},{"arcs":[[[1083]],[[-882,1084]],[[1085]],[[1086]],[[1087,1088]],[[-886,1089,-256,1090,-253,1091]],[[1092]]],"type":"MultiPolygon","id":"MYS","properties":{"name":"Malaysia"}},{"arcs":[[1093,-261,1094,1095,-8]],"type":"Polygon","id":"NAM","properties":{"name":"Namibia"}},{"arcs":[[[1096]],[[1097]],[[1098]]],"type":"MultiPolygon","id":"NCL","properties":{"name":"New Caledonia"}},{"arcs":[[1099,1100,-173,-174,-1043,-588,-1000]],"type":"Polygon","id":"NER","properties":{"name":"Niger"}},{"arcs":[[[1101,-478,1102,-169,-1101]]],"type":"MultiPolygon","id":"NGA","properties":{"name":"Nigeria"}},{"arcs":[[[1103,-528,1104,-776]]],"type":"MultiPolygon","id":"NIC","properties":{"name":"Nicaragua"}},{"arcs":[[[-166,1105]],[[1106]],[[-562,-168,1107],[1108]]],"type":"MultiPolygon","id":"NLD","properties":{"name":"Netherlands"}},{"arcs":[[[1109]],[[1110]],[[1111]],[[1112]],[[1113]],[[1114]],[[1115]],[[1116]],[[1117]],[[1118]],[[1119]],[[1120]],[[1121]],[[1122]],[[1123,-656,1124,1125]],[[1126]],[[1127]],[[1128]],[[1129]],[[1130]],[[1131]],[[1132]]],"type":"MultiPolygon","id":"NOR","properties":{"name":"Norway"}},{"arcs":[[-894,-454]],"type":"Polygon","id":"NPL","properties":{"name":"Nepal"}},{"arcs":[[[1133]],[[1134]],[[1135]],[[1136]],[[1137]],[[1138]]],"type":"MultiPolygon","id":"NZL","properties":{"name":"New Zealand"}},{"arcs":[[[1139]],[[1140,1141,-37,1142]],[[-41],[-35]],[[-40,1143]]],"type":"MultiPolygon","id":"OMN","properties":{"name":"Oman"}},{"arcs":[[[-954,-897,1144,-903,-2,-457]]],"type":"MultiPolygon","id":"PAK","properties":{"name":"Pakistan"}},{"arcs":[[[1145]],[[-517,1146,-526,1147]]],"type":"MultiPolygon","id":"PAN","properties":{"name":"Panama"}},{"arcs":[[[-248,-221,1148,-215,1149,-219,-438,1150,-600,-514]]],"type":"MultiPolygon","id":"PER","properties":{"name":"Peru"}},{"arcs":[[[1151]],[[1152]],[[1153]],[[1154]],[[1155]],[[1156]],[[1157]],[[1158]],[[1159]],[[1160]],[[1161]],[[1162]],[[1163]],[[1164]],[[1165]],[[1166]],[[1167]],[[1168]],[[1169]],[[1170]],[[1171]],[[1172]],[[1173]],[[1174]],[[1175]],[[1176]],[[1177]],[[1178]],[[1179]],[[1180]],[[1181]]],"type":"MultiPolygon","id":"PHL","properties":{"name":"Philippines"}},{"arcs":[[[1182]]],"type":"MultiPolygon","id":"PLW","properties":{"name":"Palau"}},{"arcs":[[[1183]],[[1184]],[[1185]],[[1186]],[[1187]],[[1188]],[[1189]],[[1190]],[[1191]],[[1192]],[[1193]],[[1194]],[[-858,1195]],[[1196]],[[1197]],[[1198]],[[1199]]],"type":"MultiPolygon","id":"PNG","properties":{"name":"Papua New Guinea"}},{"arcs":[[1200,1201,1202,-1008,-209,1203,1204,-550,-558,1205,-554,1206]],"type":"Polygon","id":"POL","properties":{"name":"Poland"}},{"arcs":[[[1207]]],"type":"MultiPolygon","id":"PRI","properties":{"name":"Puerto Rico"}},{"arcs":[[[1208,1209,-983,1210,-445]]],"type":"MultiPolygon","id":"PRK","properties":{"name":"Dem. Rep. Korea"}},{"arcs":[[[1211]],[[1212]],[[1213]],[[1214]],[[1215,-633]]],"type":"MultiPolygon","id":"PRT","properties":{"name":"Portugal"}},{"arcs":[[-247,1216,-245,-46,-217]],"type":"Polygon","id":"PRY","properties":{"name":"Paraguay"}},{"arcs":[[[-602,1217,-923]],[[-938,1218,-917]]],"type":"MultiPolygon","id":"PSX","properties":{"name":"Palestine"}},{"arcs":[[[1219]]],"type":"MultiPolygon","id":"PYF","properties":{"name":"Fr. Polynesia"}},{"arcs":[[1220,1221]],"type":"Polygon","id":"QAT","properties":{"name":"Qatar"}},{"arcs":[[1222,1223,-189,1224,-795,1225,-1021]],"type":"Polygon","id":"ROU","properties":{"name":"Romania"}},{"arcs":[[[1226]],[[1227]],[[1228]],[[1229]],[[1230]],[[1231]],[[1232]],[[1233]],[[1234]],[[1235]],[[1236]],[[-1203,1237,-1201,1238,-1006,1239,-1009]],[[1240]],[[1241]],[[1242,-639]],[[1243]],[[1244]],[[1245]],[[1246]],[[1247]],[[1248]],[[1249]],[[1250]],[[1251]],[[1252]],[[1253]],[[1254]],[[1255]],[[1256]],[[1257]],[[1258]],[[1259]],[[1260]],[[1261]],[[1262]],[[1263]],[[1264]],[[1265]],[[1266]],[[1267]],[[1268]],[[1269]],[[1270]],[[-1209,-444,1271,-465,-1059,-461,-963,1272,-154,-699,1273,1274,-207,-1012,-643,1275,-641,1276,-637,1277,-653,-1124,1278]],[[1279]],[[1280]],[[1281]],[[1282]],[[1283]],[[1284]],[[1285]],[[1286]],[[1287]],[[1288]],[[1289]],[[1290]],[[1291]],[[1292]],[[1293]],[[1294]],[[1295]],[[1296]],[[1297]],[[1298]]],"type":"MultiPolygon","id":"RUS","properties":{"name":"Russia"}},{"arcs":[[1299,-161,-504,1300,-502,1301]],"type":"Polygon","id":"RWA","properties":{"name":"Rwanda"}},{"arcs":[[-591,-1071,1302,-1018]],"type":"Polygon","id":"ESH","properties":{"name":"W. Sahara"}},{"arcs":[[[1303]],[[-989,1304,-1221,1305,-38,-1142,1306,1307,-934,-909]]],"type":"MultiPolygon","id":"SAU","properties":{"name":"Saudi Arabia"}},{"arcs":[[[1308,-610,-651,1309,-262,1310,-998,-605]]],"type":"MultiPolygon","id":"SDN","properties":{"name":"Sudan"}},{"arcs":[[-650,-969,1311,-496,-263,-1310]],"type":"Polygon","id":"SSD","properties":{"name":"S. Sudan"}},{"arcs":[[-1044,-709,-714,1312,-711,1313,-1069]],"type":"Polygon","id":"SEN","properties":{"name":"Senegal"}},{"arcs":[[1314]],"type":"Polygon","id":"SGP","properties":{"name":"Singapore"}},{"arcs":[[[1315]]],"type":"MultiPolygon","id":"SGS","properties":{"name":"S. Geo. and S. Sandw. Is."}},{"arcs":[[[1316]],[[1317]],[[1318]],[[1319]],[[1320]],[[1321]],[[1322]],[[1323]],[[1324]],[[1325]],[[1326]],[[1327]],[[1328]]],"type":"MultiPolygon","id":"SLB","properties":{"name":"Solomon Is."}},{"arcs":[[[1329]],[[-997,1330,-706]]],"type":"MultiPolygon","id":"SLE","properties":{"name":"Sierra Leone"}},{"arcs":[[[-778,1331,-767]]],"type":"MultiPolygon","id":"SLV","properties":{"name":"El Salvador"}},{"arcs":[[-931]],"type":"Polygon","id":"SMR","properties":{"name":"San Marino"}},{"arcs":[[1332,-647,-565,1333]],"type":"Polygon","id":"SOL","properties":{"name":"Somaliland"}},{"arcs":[[-964,-648,-1333,1334]],"type":"Polygon","id":"SOM","properties":{"name":"Somalia"}},{"arcs":[[-1225,-188,-1042,-987,-1054,-202,-787,-796]],"type":"Polygon","id":"SRB","properties":{"name":"Serbia"}},{"arcs":[[[1335]]],"type":"MultiPolygon","id":"STP","properties":{"name":"S\u00e3o Tom\u00e9 and Principe"}},{"arcs":[[-664,-239,-771,1336]],"type":"Polygon","id":"SUR","properties":{"name":"Suriname"}},{"arcs":[[1337,-798,-142,-551,-1205]],"type":"Polygon","id":"SVK","properties":{"name":"Slovakia"}},{"arcs":[[-789,1338,-929,-144,-797]],"type":"Polygon","id":"SVN","properties":{"name":"Slovenia"}},{"arcs":[[[1339]],[[1340]],[[1341]],[[1342,-1125,-655]]],"type":"MultiPolygon","id":"SWE","properties":{"name":"Sweden"}},{"arcs":[[-1061,1343]],"type":"Polygon","id":"SWZ","properties":{"name":"Swaziland"}},{"arcs":[[1344,-1014]],"type":"Polygon","id":"SXM","properties":{"name":"Sint Maarten"}},{"arcs":[[-913,911,-911,-939,-926,-995,1345,1346]],"type":"Polygon","id":"SYR","properties":{"name":"Syria"}},{"arcs":[[-1311,-267,-473,1347,-481,1348,-479,-1102,-1100,-999]],"type":"Polygon","id":"TCD","properties":{"name":"Chad"}},{"arcs":[[-171,1349,-700,-175]],"type":"Polygon","id":"TGO","properties":{"name":"Togo"}},{"arcs":[[[1350]],[[1351]],[[-992,-976,1352,-1089,1353,-1052]]],"type":"MultiPolygon","id":"THA","properties":{"name":"Thailand"}},{"arcs":[[[-974]],[[1354]],[[-970,-458,-6,1355]]],"type":"MultiPolygon","id":"TJK","properties":{"name":"Tajikistan"}},{"arcs":[[[-4,-902,1356,-961,1357,1358,1359]]],"type":"MultiPolygon","id":"TKM","properties":{"name":"Turkmenistan"}},{"arcs":[[[1360,-803]],[[-805,1361]]],"type":"MultiPolygon","id":"TLS","properties":{"name":"Timor-Leste"}},{"arcs":[[[1362]]],"type":"MultiPolygon","id":"TON","properties":{"name":"Tonga"}},{"arcs":[[[1363]]],"type":"MultiPolygon","id":"TTO","properties":{"name":"Trinidad and Tobago"}},{"arcs":[[[1364]],[[-1001,-586,1365]]],"type":"MultiPolygon","id":"TUN","properties":{"name":"Tunisia"}},{"arcs":[[[1366,-734,-185]],[[-697,-56,-153,-906,-914,-1347,1367]]],"type":"MultiPolygon","id":"TUR","properties":{"name":"Turkey"}},{"arcs":[[[1368]]],"type":"MultiPolygon","id":"TWN","properties":{"name":"Taiwan"}},{"arcs":[[[1369]],[[1370]],[[1371]],[[1372]],[[1373,1374,1375,-966,1376,-1067,1377,-1074,1378,-1076,1379,-1078,1380,-1080,1381,-1083,1382,1383,-158,-1300,1384]]],"type":"MultiPolygon","id":"TZA","properties":{"name":"Tanzania"}},{"arcs":[[[-1375,1385]],[[1386,-1385,-1302,-501,1387,-499,1388,-497,-1312,-968]]],"type":"MultiPolygon","id":"UGA","properties":{"name":"Uganda"}},{"arcs":[[[1389,-1223,-1022,-1226,-794,-1338,-1204,-208,-1275],[1390],[1391]]],"type":"MultiPolygon","id":"UKR","properties":{"name":"Ukraine"}},{"arcs":[[1392,-242,1393,-48,-244]],"type":"Polygon","id":"URY","properties":{"name":"Uruguay"}},{"arcs":[[[1394]],[[1395]],[[1396]],[[1397]],[[1398]],[[1399]],[[1400]],[[1401]],[[1402]],[[1403]],[[1404]],[[1405]],[[1406]],[[1407]],[[1408]],[[1409]],[[1410,-344]],[[1411,-340,1412,-338,1413,-336,1414,-334,-278,1415,-276,1416,-1033,1417,-1031,1418,-1036,1419,-342]],[[1420]],[[1421]],[[1422]],[[1423]],[[1424]],[[1425]],[[1426]],[[1427]],[[1428]],[[1429]],[[1430]],[[1431]],[[1432]],[[1433]],[[1434]],[[1435]],[[1436]],[[1437]],[[1438]],[[1439]],[[1440]],[[1441]],[[1442]],[[1443]],[[1444]],[[1445]],[[1446]],[[1447]],[[1448]],[[1449]],[[1450]],[[1451]],[[1452]],[[1453]],[[-347,345,1454]]],"type":"MultiPolygon","id":"USA","properties":{"name":"United States"}},{"arcs":[[[-534,1455]],[[1456,-532]]],"type":"MultiPolygon","id":"USG","properties":{"name":"USNB Guantanamo Bay"}},{"arcs":[[[-973]],[[-972]],[[-955,1457,-958,-971,-1356,-5,-1360,1458,-1358,-960,1459],[-1355]]],"type":"MultiPolygon","id":"UZB","properties":{"name":"Uzbekistan"}},{"arcs":[[-932]],"type":"Polygon","id":"VAT","properties":{"name":"Vatican"}},{"arcs":[[[1460]]],"type":"MultiPolygon","id":"VCT","properties":{"name":"St. Vin. and Gren."}},{"arcs":[[[1461]],[[1462]],[[1463]],[[-772,-250,-513,1464]]],"type":"MultiPolygon","id":"VEN","properties":{"name":"Venezuela"}},{"arcs":[[[1465]],[[1466,-978,-991,-449]]],"type":"MultiPolygon","id":"VNM","properties":{"name":"Vietnam"}},{"arcs":[[[1467]],[[1468]],[[1469]],[[1470]],[[1471]],[[1472]],[[1473]],[[1474]],[[1475]],[[1476]],[[1477]],[[1478]]],"type":"MultiPolygon","id":"VUT","properties":{"name":"Vanuatu"}},{"arcs":[[1479,-547]],"type":"Polygon","id":"WSB","properties":{"name":"Akrotiri"}},{"arcs":[[[1480]],[[1481]]],"type":"MultiPolygon","id":"WSM","properties":{"name":"Samoa"}},{"arcs":[[[1482]],[[1483,-1307,-1141]]],"type":"MultiPolygon","id":"YEM","properties":{"name":"Yemen"}},{"arcs":[[[-1062,-1344,-1060,1484,-1095,-260,1485],[-1005]]],"type":"MultiPolygon","id":"ZAF","properties":{"name":"South Africa"}},{"arcs":[[-1383,-1082,-1064,1486,1487,1488,-1094,-7,-508,1489,-506,1490]],"type":"Polygon","id":"ZMB","properties":{"name":"Zambia"}},{"arcs":[[-1063,-1486,-259,-1489,1491,-1487]],"type":"Polygon","id":"ZWE","properties":{"name":"Zimbabwe"}}],"type":"GeometryCollection"}},"transform":{"translate":[-180,-90],"scale":[0.036003600360036005,0.01736514657995801]}} \ No newline at end of file diff --git a/src/pages/maps/package.json b/src/pages/maps/package.json new file mode 100644 index 0000000..57918ef --- /dev/null +++ b/src/pages/maps/package.json @@ -0,0 +1,6 @@ +{ + "name": "Maps", + "version": "0.0.0", + "main": "Maps.js", + "private": true +} diff --git a/src/pages/maps/styles.js b/src/pages/maps/styles.js new file mode 100644 index 0000000..ee312ae --- /dev/null +++ b/src/pages/maps/styles.js @@ -0,0 +1,21 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + mapContainer: { + height: "calc(100vh - 170px)", + minHeight: 480, + borderRadius: 8, + overflow: "hidden", + }, + vectorContainer: { + height: "calc(100vh - 170px)", + minHeight: 480, + borderRadius: 8, + overflow: "hidden", + }, + leafletMap: { + height: "100%", + width: "100%", + background: theme.palette.background.default, + }, +})); diff --git a/src/pages/modal/Modal.js b/src/pages/modal/Modal.js new file mode 100644 index 0000000..e97a6aa --- /dev/null +++ b/src/pages/modal/Modal.js @@ -0,0 +1,497 @@ +import React from "react"; +import { + Grid, + Box, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, + TextField } from +"@mui/material"; +import cn from "classnames"; +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget"; +import Code from "../../components/Code"; +import { Typography, Button, Paper } from "../../components/Wrappers"; + +const reducer = (state, action) => { + switch (action.type) { + case "OPEN_MODAL": + return { + ...state, + toggleModal: true + }; + case "CLOSE_MODAL": + return { + ...state, + toggleModal: false + }; + case "OPEN_BODY": + return { + ...state, + toggleBody: true + }; + case "CLOSE_BODY": + return { + ...state, + toggleBody: false + }; + case "OPEN_SMALL": + return { + ...state, + toggleSmall: true + }; + case "CLOSE_SMALL": + return { + ...state, + toggleSmall: false + }; + case "OPEN_LARGE": + return { + ...state, + toggleLarge: true + }; + case "CLOSE_LARGE": + return { + ...state, + toggleLarge: false + }; + case "OPEN_GRID": + return { + ...state, + toggleGrid: true + }; + case "CLOSE_GRID": + return { + ...state, + toggleGrid: false + }; + case "OPEN_INPUT_MODAL": + return { + ...state, + toggleInputModal: true + }; + case "CLOSE_INPUT_MODAL": + return { + ...state, + toggleInputModal: false + }; + default: + return null; + } +}; + +export default function ModalComp() { + const classes = useStyles(); + const [state, dispatch] = React.useReducer(reducer, { + toggleModal: false, + toggleBody: false, + toggleSmall: false, + toggleGrid: false, + toggleLarge: false, + toggleInputModal: false + }); + + return ( +
+ + + + + + + Toggle a working modal demo by clicking the button below. It + will slide down and fade in from the top of the page. + + + + dispatch({ type: "CLOSE_MODAL" })} + scroll={"body"} + aria-labelledby="scroll-dialog-title"> + + + {"Use Google's location service?"} + + + + Let Google help apps determine location. This means + sending anonymous location data to Google, even when no + apps are running. + + + + + + + + + dispatch({ type: "CLOSE_BODY" })} + scroll={"body"} + aria-labelledby="scroll-dialog-title"> + + + Subscribe + + + + {[...new Array(50)].map( + () => `Cras mattis consectetur purus sit amet fermentum. +Cras justo odio, dapibus ac facilisis in, egestas eget quam. +Morbi leo risus, porta ac consectetur ac, vestibulum at eros. +Praesent commodo cursus magna, vel scelerisque nisl consectetur et.` + ).join("\n")} + + + + + + + + + + + + + + To appoint modal's width size, equal maxWidth attribute to one + of values: {`xs, sm, md, lg, xl`} + + + + dispatch({ type: "CLOSE_LARGE" })} + aria-labelledby="alert-dialog-title" + aria-describedby="alert-dialog-description"> + + + {"Use Google's location service?"} + + + + Let Google help apps determine location. This means + sending anonymous location data to Google, even when no + apps are running. + + + + + + + + + dispatch({ type: "CLOSE_SMALL" })} + aria-labelledby="alert-dialog-title" + aria-describedby="alert-dialog-description"> + + + {"Use Google's location service?"} + + + + Let Google help apps determine location. This means + sending anonymous location data to Google, even when no + apps are running. + + + + + + + + + + + + + + Form dialogs allow users to fill out form fields within a + dialog. For example, if your site prompts for potential + subscribers to fill in their email address, they can fill out + the email field and touch {`Submit`} + + + + dispatch({ type: "CLOSE_INPUT_MODAL" })} + aria-labelledby="form-dialog-title"> + + Subscribe + + + To subscribe to this website, please enter your email + address here. We will send updates occasionally. + + + + + + + + + + + + + + + + + + Utilize the Material UI grid system within a modal by nesting{" "} + {``} within the{" "} + {``}. Then, use the normal grid + system classes as you would anywhere else. + + + + + {` + + + + 1 + 2 + + + 1 + 2 + + + 1 + 2 + 3 + + + + `} + + + dispatch({ type: "CLOSE_GRID" })} + aria-labelledby="alert-dialog-title" + aria-describedby="alert-dialog-description"> + + {"Grid system"} + + + + + + + + + + 1 + + + + + + 2 + + + + + + + + + 1 + + + + + + 2 + + + + + + + + + 1 + + + + + + 2 + + + + + + 3 + + + + + + + + + + + + + + +
); + +} diff --git a/src/pages/modal/package.json b/src/pages/modal/package.json new file mode 100644 index 0000000..7a24ca3 --- /dev/null +++ b/src/pages/modal/package.json @@ -0,0 +1,6 @@ +{ + "name": "Modal", + "version": "1.0.0", + "main": "Modal.js", + "license": "MIT" +} diff --git a/src/pages/modal/styles.js b/src/pages/modal/styles.js new file mode 100644 index 0000000..2dd0bff --- /dev/null +++ b/src/pages/modal/styles.js @@ -0,0 +1,22 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + marginRight: { + marginRight: theme.spacing(3) + }, + marginTop: { + marginTop: theme.spacing(3) + }, + paperItem: { + backgroundColor: theme.palette.primary.light, + textAlign: "center", + padding: theme.spacing(2), + color: "#f3f3f3", + }, + wrapFix: { + whiteSpace: 'pre' + }, + paperMargin: { + margin: 12, + }, +})); diff --git a/src/pages/nav/Navbar.js b/src/pages/nav/Navbar.js new file mode 100644 index 0000000..83d0258 --- /dev/null +++ b/src/pages/nav/Navbar.js @@ -0,0 +1,170 @@ +import React, { useState } from "react"; +import { + Grid, + Box, + Menu, + InputBase, + MenuItem, + Toolbar, + Button, + IconButton } from +"@mui/material"; +import AccountCircle from "@mui/icons-material/AccountCircle"; +import MenuIcon from "@mui/icons-material/Menu"; +import { Search as SearchIcon } from "@mui/icons-material"; + +// components +import Widget from "../../components/Widget"; +import { Typography, AppBar } from "../../components/Wrappers"; + +import classNames from "classnames"; +import useStyles from "./styles"; + +export default function NavComp() { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + + function handleMenu(event) { + setAnchorEl(event.currentTarget); + } + + function handleClose() { + setAnchorEl(null); + } + + const [isSearchOpen, setSearchOpen] = useState(false); + + const classes = useStyles(); + return ( +
+ + + + + App bar displays yours app links by importing and inserting AppBar + component. To swap links style add attribute within Button + component. + +
+ + + + + + + + + Navbar + + + + + + + + +
+ With menu + + + + + + + + + Navbar menu + + + + + + + + Profile + My account + + + + +
+
+ + + + Search icon makes UX more flexible. To start using search icon, + make sure you got all relative functions. + +
+ + + + + + + + + Navbar search + +
+
+ +
setSearchOpen(!isSearchOpen)}> + + +
+ + +
+ + + +
+ + + +
); + +} \ No newline at end of file diff --git a/src/pages/nav/package.json b/src/pages/nav/package.json new file mode 100644 index 0000000..d950213 --- /dev/null +++ b/src/pages/nav/package.json @@ -0,0 +1,6 @@ +{ + "name": "Navbar", + "version": "1.0.0", + "main": "Navbar.js", + "license": "MIT" +} diff --git a/src/pages/nav/styles.js b/src/pages/nav/styles.js new file mode 100644 index 0000000..be5eba8 --- /dev/null +++ b/src/pages/nav/styles.js @@ -0,0 +1,75 @@ +import { makeStyles } from 'styles/mui'; +import { alpha } from "@mui/material/styles"; + +export default makeStyles(theme => ({ + root: { + flexGrow: 1, + }, + menuButton: { + marginRight: theme.spacing(2), + }, + title: { + flexGrow: 1, + }, + wrapFix: { + whiteSpace: "pre", + }, + paper: { + margin: theme.spacing(3), + padding: 10, + backgroundColor: "#f3f3f3", + }, + grow: { + flexGrow: 1, + }, + search: { + position: "relative", + borderRadius: 25, + paddingLeft: theme.spacing(2.5), + width: 36, + backgroundColor: alpha(theme.palette.common.black, 0), + transition: theme.transitions.create(["background-color", "width"]), + "&:hover": { + cursor: "pointer", + backgroundColor: alpha(theme.palette.common.black, 0.08), + }, + }, + searchFocused: { + backgroundColor: alpha(theme.palette.common.black, 0.08), + width: "100%", + [theme.breakpoints.up("md")]: { + width: 250, + }, + }, + searchIcon: { + width: 36, + right: 0, + height: "100%", + position: "absolute", + display: "flex", + alignItems: "center", + justifyContent: "center", + transition: theme.transitions.create("right"), + "&:hover": { + cursor: "pointer", + }, + }, + + searchIconOpened: { + right: theme.spacing(1.25), + }, + headerIcon: { + fontSize: 28, + color: "rgba(255, 255, 255, 0.35)", + }, + inputRoot: { + color: "inherit", + width: "100%", + }, + inputInput: { + height: 36, + padding: 0, + paddingRight: 36 + theme.spacing(1.25), + width: "100%", + }, +})); \ No newline at end of file diff --git a/src/pages/notifications/Notifications.js b/src/pages/notifications/Notifications.js new file mode 100644 index 0000000..69df378 --- /dev/null +++ b/src/pages/notifications/Notifications.js @@ -0,0 +1,358 @@ +import { useState } from "react"; +import { Grid, Box, Snackbar, Alert } from "@mui/material"; + +// styles +import classnames from "classnames"; +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget"; +import Notification from "../../components/Notification"; +import Code from "../../components/Code"; +import { Typography, Button } from "../../components/Wrappers"; + + +export default function NotificationsPage() { + let classes = useStyles(); + + const [type, setType] = useState({ + type: 'success', + message: 'This is a success message!' + }); + const [state, setState] = useState({ + open: false, + vertical: 'top', + horizontal: 'center' + }); + + const { vertical, horizontal, open } = state; + + const handleClick = (newState, positionId) => () => { + setState({ open: true, ...newState }); + setNotificationPosition(positionId); + }; + + const handleClose = () => { + setState({ ...state, open: false }); + }; + + let [notificationsPosition, setNotificationPosition] = useState(2); + + const handleChange = (type) => { + setType(type); + setState({ ...state, open: true }); + }; + + return ( + <> + + + + + + + Layout Options + + + There are few position options available for notifications. You + can click any of them to change notifications position: + +
+
+
+ + Click any position + +
+
+
+
+ + + + Notifications Types + + + Different types of notifications for lost of use cases. Custom + classes are also supported. + +
+ + + +
+
+ + + + Usage + + + Notifications are created with the help of{" "} + + MUI Snackbar + + + {` + // import needed components, functions and styles + import { useState } from 'react'; + import { Snackbar, Alert, Button } from '@mui/material'; + + const [open, setOpen] = useState(false); + + return ( +
+ + setOpen(false)} + anchorOrigin={{ vertical: 'top', horizontal: 'right' }} + > + setOpen(false)} severity="success" sx={{ width: '100%' }}> + This is a success message! + + +
+ ); + `}
+ + + For more API information refer to the library documentation + + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {type.message} + + + ); + +} diff --git a/src/pages/notifications/package.json b/src/pages/notifications/package.json new file mode 100644 index 0000000..26faaf2 --- /dev/null +++ b/src/pages/notifications/package.json @@ -0,0 +1,6 @@ +{ + "name": "Notifications", + "version": "0.0.0", + "main": "Notifications.js", + "private": true +} diff --git a/src/pages/notifications/styles.js b/src/pages/notifications/styles.js new file mode 100644 index 0000000..20e7d4f --- /dev/null +++ b/src/pages/notifications/styles.js @@ -0,0 +1,90 @@ +import { makeStyles } from "styles/mui"; +import tinycolor from "tinycolor2"; + +export default makeStyles(theme => ({ + layoutContainer: { + height: 200, + display: "flex", + flexDirection: "column", + justifyContent: "space-between", + alignItems: "center", + marginTop: theme.spacing(2), + border: "1px dashed", + borderColor: theme.palette.primary.main, + position: "relative", + }, + head5: { + color: "rgb(110, 110, 110)", + marginBottom: theme.spacing(2), + fontSize: "20px", + }, + layoutText: { + color: tinycolor(theme.palette.background.light) + .darken() + .toHexString(), + }, + layoutButtonsRow: { + width: "100%", + display: "flex", + justifyContent: "space-between", + }, + layoutButton: { + backgroundColor: theme.palette.background.light, + width: 125, + height: 50, + outline: "none", + border: "none", + }, + layoutButtonActive: { + backgroundColor: tinycolor(theme.palette.background.light) + .darken() + .toHexString(), + }, + buttonsContainer: { + display: "flex", + flexDirection: "column", + alignItems: "flex-start", + marginTop: theme.spacing(2), + }, + notificationCallButton: { + color: "white", + marginBottom: theme.spacing(1), + textTransform: "none", + }, + codeContainer: { + display: "flex", + flexDirection: "column", + marginTop: theme.spacing(2), + }, + codeComponent: { + flexGrow: 1, + }, + notificationItem: { + marginTop: theme.spacing(2), + }, + notificationCloseButton: { + position: "absolute", + right: theme.spacing(2), + }, + toastsContainer: { + width: 400, + marginTop: theme.spacing(6), + right: 0, + }, + progress: { + visibility: "hidden", + }, + notification: { + display: "flex", + alignItems: "center", + background: "transparent", + boxShadow: "none", + overflow: "visible", + }, + notificationComponent: { + paddingRight: theme.spacing(4), + }, + widgetHeader: { + paddingBottom: 8 + } +})); diff --git a/src/pages/profile/Components/Calendar/Calendar.js b/src/pages/profile/Components/Calendar/Calendar.js new file mode 100644 index 0000000..0fa7beb --- /dev/null +++ b/src/pages/profile/Components/Calendar/Calendar.js @@ -0,0 +1,231 @@ +import { useState } from 'react';import { makeStyles } from 'styles/mui'; +import { + KeyboardArrowLeft as KeyboardArrowLeftIcon, + KeyboardArrowRight as KeyboardArrowRightIcon, +} from '@mui/icons-material'; + +import DayNames from './DayNames' +import { v4 as uuid } from 'uuid'; +import Week from './Week'; +import dayjs from 'utils/dayjs'; + +const styles = (theme) => ({ + + calendarRectangle: { + width: '100%', + position: 'relative', + marginLeft: 'auto', + marginRight: 'auto', + color: '#ccc', + fontSize: '.9rem', + overflow: 'visible', + }, + + calendarRow: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flexWrap: 'wrap', + }, + + calendarHeader: { + display: 'flex', + flexWrap: 'wrap', + width: '100%', + color: '#ccc', + }, + + mainCalendar: { + height: '100%', + display: 'flex', + flexWrap: 'wrap', + }, + + titleHeader: { + width: '100%', + height: '70%', + whiteSpace: 'nowrap', + fontSize: '1.2em', + fontWeight: 700, + backgroundColor: 'transparent', + + '@media (min-width: 992px)': { + fontSize: '1.4em', + }, + + '@media (min-width: 1200px)': { + fontSize: '1.2em', + } + }, + + headerText: { + flex: 5, + display: 'flex', + }, + + monthLabel: { + flex: 3, + color: theme.palette.text.primary, + fontSize: '1.1rem', + justifyContent: 'center!important', + '@media (max-width: 1330px)': { + fontSize: '.9rem' + } + }, + + daysContainer: { + width: '100%', + background: 'transparent', + height: 'inherit', + padding: '15px 0 0', + }, + + calendarItemContainer: { + flexGrow: 1, + display: 'flex', + + alignItems: 'center', + flex: 1, + height: '100%', + transition: 'all 0.4s ease-in-out 0s', + '&:first-of-type': { + justifyContent: 'flex-start', + paddingLeft: '15px', + }, + '&:last-of-type': { + justifyContent: 'flex-end', + paddingRight: '15px', + }, + }, + + arrow: { + cursor: 'pointer', + fontSize: '1rem', + color: '#C9C9C9', + }, + +}); + +const useStyles = makeStyles(styles); + +const Calendar = () => { + const classes = useStyles(); + const currentDate = dayjs(); + + const [date, setDate] = useState({ + selectedMonth: dayjs(), + selectedDay: dayjs().startOf("day"), + selectedMonthEvents: [ + { + title: "The flower bed", + info: "Contents here", + itemStyle: "#1870dc", + date: dayjs(`${currentDate.year()}-${currentDate.month() + 1}-02`, 'YYYY-M-DD'), + }, + { + title: "Stop world water pollution", + info: "Have a kick off meeting with .inc company", + itemStyle: "#f0b518", + date: dayjs(`${currentDate.year()}-${currentDate.month() + 1}-05`, 'YYYY-M-DD'), + }, + { + title: "Light Blue 2.2 release", + info: "Some contents here", + itemStyle: "#58d777", + date: dayjs(`${currentDate.year()}-${currentDate.month() + 1}-18`, 'YYYY-M-DD'), + }, + { + title: "A link", + info: "", + itemStyle: "#f45722", + link: "http://www.flatlogic.com", + date: dayjs(`${currentDate.year()}-${currentDate.month() + 1}-28`, 'YYYY-M-DD'), + }, + ], + showEvents: false + }); + + const previous = () => { + setDate((prev) => ({ + ...prev, + selectedMonth: prev.selectedMonth.subtract(1, "month") + })); + } + + const next = () => { + setDate((prev) => ({ + ...prev, + selectedMonth: prev.selectedMonth.add(1, "month") + })); + } + + const renderMonthLabel = () => { + return ( + + {date.selectedMonth.format("MMMM YYYY")} + + ); + } + + const renderWeeks = () => { + const currentMonthView = date.selectedMonth; + const currentSelectedDay = date.selectedDay; + + let weeks = []; + let done = false; + let previousCurrentNextView = currentMonthView + .clone() + .startOf("month") + .subtract(1, "day") + .day(0); + let count = 0; + let monthIndex = previousCurrentNextView.month(); + + while (!done) { + weeks.push( + + ); + previousCurrentNextView = previousCurrentNextView.add(1, "week"); + done = count++ > 2 && monthIndex !== previousCurrentNextView.month(); + monthIndex = previousCurrentNextView.month(); + } + return weeks; + } + + return ( +
+
+
+
+
+ +
+ + {renderMonthLabel()} +
+ +
+ +
+
+ {renderWeeks()} +
+
+
+
+ ) +} + +export default Calendar; diff --git a/src/pages/profile/Components/Calendar/Day.js b/src/pages/profile/Components/Calendar/Day.js new file mode 100644 index 0000000..3baf587 --- /dev/null +++ b/src/pages/profile/Components/Calendar/Day.js @@ -0,0 +1,209 @@ +import React, { useState } from 'react'; +import { makeStyles } from 'styles/mui'; +import Popover from '@mui/material/Popover'; + +const styles = (theme) => ({ + + today: { + '& > div': { + backgroundColor: '#7C90FF', + borderRadius: '50%', + color: '#fff !important', + } + }, + + day: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flex: 1, + height: 30, + width: 30, + }, + + dayNumber: { + width: '28px', + height: '28px', + cursor: 'pointer', + display: 'flex', + margin: '3px 0', + color: theme.palette.text.primary, + justifyContent: 'center', + alignItems: 'center', + boxSizing: 'border-box', + '@media (max-width: 1330px)': { + width: 26, + height: 26 + }, + '@media (max-width: 1280px)': { + width: 25, + height: 25 + } + }, + + hasEvents: { + '& > div, & > a': { + position: 'relative', + color: theme.palette.text.primary, + borderRadius: '50%', + fontWeight: 'bold', + } + }, + + differentMonth: { + visibility: 'hidden', + height: 0, + }, + + '@media(max-width: 810px)': { + dayNumber: { + width: 25, + height: 25, + } + }, + + selected: { + '& .hasEvents': { + position: 'relative', + } + }, + + calendarDot: { + position: 'absolute', + top: -1, + right: 12, + width: 6, + height: 6, + borderRadius: 6, + backgroundColor: 'inherit', + '@media (max-width: 1330px)': { + right: 10, + } + }, + + eventLink: { + fontFamily: 'roboto', + padding: 10, + color: theme.palette.text.primary, + display: 'inline-block', + '& > h4': { + margin: 0, + fontSize: 16, + fontWeight: 500, + marginBottom: 0 + }, + }, + + eventContent: { + fontFamily: 'roboto', + padding: 15, + color: theme.palette.text.primary, + display: 'inline-block', + '& > h4': { + margin: 0, + fontSize: 16, + fontWeight: 500, + marginBottom: 6 + }, + '& > h5': { + margin: 0, + fontSize: 12, + opacity: .7, + fontWeight: 100 + } + }, + + customShadow: { + '& > div:nth-of-type(3)': { + boxShadow: '0 0 40px -5px #8598AE!important', + } + } +}) + +const useStyles = makeStyles(styles); + +const Day = ({ day, selected }) => { + const classes = useStyles(); + const [popover, setPopover] = useState({ + popoverShow: false, + tooltipShow: false + }) + + const togglePopover = (event) => { + setPopover({ popoverShow: !popover.popoverShow }) + setAnchorEl(event.currentTarget); + } + + // eslint-disable-next-line no-unused-vars + const toggleTooltip = () => { + setPopover({ tooltipShow: !popover.tooltipShow }) + } + + const [anchorEl, setAnchorEl] = React.useState(null); + + // eslint-disable-next-line no-unused-vars + const handleClick = (event) => { + + }; + + // eslint-disable-next-line no-unused-vars + const handleClose = () => { + setAnchorEl(null); + }; + const open = Boolean(anchorEl); + const id = open ? 'simple-popover' : undefined; + return ( +
+ + {!day.hasEvents ? +
{day.number}
+ : (day.hasEvents || day.link) ? + +
{day.number} + {day.itemStyle ? + + : "" } +
+ + {day.link ? ( + +

{day.title}

+
) : ( +
+

{day.title}

+
{day.info}
+
+ )} +
+ +
+ : "" } + +
+ ); +} +export default Day; diff --git a/src/pages/profile/Components/Calendar/DayNames.js b/src/pages/profile/Components/Calendar/DayNames.js new file mode 100644 index 0000000..aed2eed --- /dev/null +++ b/src/pages/profile/Components/Calendar/DayNames.js @@ -0,0 +1,46 @@ +import { makeStyles } from 'styles/mui'; + +const styles = () => ({ + calendarItemContainer: { + flexGrow: 1, + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flex: 1, + height: '100%', + transition: 'all 0.4s ease-in-out 0s', + }, + calendarRow: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flexWrap: 'wrap', + }, + daysHeader: { + width: '100%', + padding: '5px 0', + backgroundColor: 'transparent', + }, + dayName: { + color: '#cccccc', + }, +}) + +const useStyles = makeStyles(styles); + +const DayNames = () => { + const classes = useStyles(); + return ( +
+ S + M + T + W + T + F + S +
+ ); +} + +export default DayNames; diff --git a/src/pages/profile/Components/Calendar/Week.js b/src/pages/profile/Components/Calendar/Week.js new file mode 100644 index 0000000..7deca14 --- /dev/null +++ b/src/pages/profile/Components/Calendar/Week.js @@ -0,0 +1,97 @@ +import { makeStyles } from 'styles/mui'; +import Day from './Day'; +import dayjs from 'utils/dayjs' +import { v4 as uuid } from 'uuid'; + +const styles = () => ({ + calendarRow: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + flexWrap: 'nowrap', + }, + week: { + height: '15%', + }, +}) + +const useStyles = makeStyles(styles); + +const Week = ({ selected, currentMonthView, previousCurrentNextView }) => { + const classes = useStyles(); + + let days = []; + let date = previousCurrentNextView; + let selectedMonthEvents = [ + { + title: "The flower bed", + info: "Contents here", + itemStyle: "#7C90FF", + date: dayjs(`${dayjs().year()}-${dayjs().month() + 1}-02`, 'YYYY-M-DD'), + }, + { + title: "Stop world water pollution", + info: "Have a kick off meeting with .inc company", + itemStyle: "#FFC35F", + date: dayjs(`${dayjs().year()}-${dayjs().month() + 1}-05`, 'YYYY-M-DD'), + }, + { + title: "Light Blue 2.2 release", + info: "Some contents here", + itemStyle: "#3CD4A0", + date: dayjs(`${dayjs().year()}-${dayjs().month() + 1}-18`, 'YYYY-M-DD'), + }, + { + title: "A link", + info: "", + itemStyle: "#FF5C93", + link: "http://www.flatlogic.com", + date: dayjs(`${dayjs().year()}-${dayjs().month() + 1}-28`, 'YYYY-M-DD'), + }, + ]; + + for (var i = 0; i < 7; i++) { + let dayHasEvents = false, + title = '', + info = '', + itemStyle = '', + link = ''; + + for (var j = 0; j < selectedMonthEvents.length; j++) { + if (selectedMonthEvents[j].date.isSame(date, "day")) { + dayHasEvents = true; + title = selectedMonthEvents[j].title ? selectedMonthEvents[j].title : ''; + info = selectedMonthEvents[j].info ? selectedMonthEvents[j].info : ''; + itemStyle = selectedMonthEvents[j].itemStyle ? selectedMonthEvents[j].itemStyle : ''; + link = selectedMonthEvents[j].link ? selectedMonthEvents[j].link : ''; + } + } + + let day = { + name: date.format("dd").substring(0, 1), + number: date.date(), + isCurrentMonth: date.month() === currentMonthView.month(), + isToday: date.isSame(new Date(), "day"), + date: date, + hasEvents: dayHasEvents, + title: title, + info: info, + itemStyle: itemStyle, + link: link + }; + + days.push(); + date = date.add(1, "day"); + } + return ( +
+ {days} +
+ ); +} + +export default Week; diff --git a/src/pages/profile/Components/DonutChart.js b/src/pages/profile/Components/DonutChart.js new file mode 100644 index 0000000..7567232 --- /dev/null +++ b/src/pages/profile/Components/DonutChart.js @@ -0,0 +1,110 @@ +import { Button } from '../../../components/Wrappers'; +import { Grid, Typography } from "@mui/material"; +import Dot from '../../../components/Dot/Dot'; +import { makeStyles } from 'styles/mui'; +import { + ResponsiveContainer, + PieChart, + Pie, + Cell, + } from "recharts"; + +const PieChartData = [ + { name: "New", value: 400 ,color: "#536DFE" }, + { name: "In Progress", value: 300 ,color: "#FFC35F" }, + { name: "Completed", value: 300 ,color: "#3CD4A0" }, + { name: "Cancel", value: 200 ,color: "#FF5C93" } +]; + +const styles = () => ({ + legendItemContainer: { + display: 'flex', + alignItems: 'center', + marginBottom: 8, + paddingLeft: 10 + }, + detailsWrapper: { + display: 'flex', + justifyContent: 'flex-end', + paddingRight: 0, + paddingLeft: 0, + width: '100%', + bottom: 5, + }, + legendItemsContainer: { + display: 'flex', + alignItems: 'center', + flexWrap: 'wrap' + } +}) + +const useStyles = makeStyles(styles); + +const DonutChart = () => { + const classes = useStyles(); + + return ( + + + + 121 + + + + + {PieChartData.map((entry, index) => ( + + ))} + + + + + + {PieChartData.map(({ name, color }) => ( +
+ + +  {name}  + +
+ ))} +
+
+ +
+
+ ) +} + +export default DonutChart diff --git a/src/pages/profile/Components/MediaBlock.js b/src/pages/profile/Components/MediaBlock.js new file mode 100644 index 0000000..68a7453 --- /dev/null +++ b/src/pages/profile/Components/MediaBlock.js @@ -0,0 +1,67 @@ +import { makeStyles } from 'styles/mui'; + +import DocIcon from '../Icons/DocIcon'; +import ProjectIcon from '../Icons/ProjectIcon'; +import UsersIcon from '../Icons/UsersIcon'; +import FollowIcon from '../Icons/FollowIcon'; + +const styles = () => ({ + mediaIndicator: { + fontSize: 18, + width: '50%', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + padding: '22px 0', + '& strong': { + margin: '1px 0', + }, + '& span': { + fontSize: 13, + opacity: .6, + } + }, + mediaIconsWrapper: { + display: 'flex', + flexWrap: 'wrap', + width: '100%', + '@media (max-width: 1280px)': { + marginTop: 40, + } + }, + valueLabel: { + marginBottom: '-8px', + } +}) + +const useStyles = makeStyles(styles); + +const MediaBlock = () => { + const classes = useStyles(); + return ( +
+
+ + 194 + Posts +
+
+ + 554 + Projects +
+
+ + 12.8k + Followers +
+
+ + 1.1k + Following +
+
+ ) +} + +export default MediaBlock; diff --git a/src/pages/profile/Components/RNSWIdget.js b/src/pages/profile/Components/RNSWIdget.js new file mode 100644 index 0000000..db9ff05 --- /dev/null +++ b/src/pages/profile/Components/RNSWIdget.js @@ -0,0 +1,69 @@ +import { makeStyles } from 'styles/mui'; +import { Grid, IconButton } from "@mui/material"; +import { Bookmark as BookmarkIcon } from '@mui/icons-material'; + +import rnsHero from "../../../images/profile/rnsHero.png"; + +const styles = (theme) => ({ + header: { + fontSize: 18, + fontWeight: 500, + }, + rnsImgWrap: { + '& img': { + maxWidth: '100%', + }, + }, + author: { + opacity: .8, + fontSize: 12, + }, + text: { + fontWeight: theme.typography.fontWeightMedium, + }, + date: { + opacity: .6, + fontSize: 12, + }, + flexContainer: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + }, + iconColor: { + color: '#FFC35F', + padding: 0, + }, +}) + +const useStyles = makeStyles(styles); + +const RNSWidget = () => { + const classes = useStyles(); + return ( + + + TOP 5 REACT NATIVE STARTER KITS + + +
+ RNS +
+
+ +
+ Nastassia Ovchinnikova +

React Native allows us to create a boilerplate that have been crafted for both platforms. The ability to create an app both for Android and iOS...

+
+ 11 Sep 2020 | 5 min read + + + +
+
+
+
+ ) +} + +export default RNSWidget; diff --git a/src/pages/profile/Components/Tabs.js b/src/pages/profile/Components/Tabs.js new file mode 100644 index 0000000..08f3490 --- /dev/null +++ b/src/pages/profile/Components/Tabs.js @@ -0,0 +1,154 @@ +import React from 'react'; +import { Box, Tab, Tabs } from '@mui/material'; +import { styled, useTheme } from '@mui/material/styles'; + +import FolderBlue from '../Icons/FolderBlue'; +import FolderBlueDark from '../Icons/FolderBlueDark'; +import FolderRed from '../Icons/FolderRed'; +import FolderRedDark from '../Icons/FolderRedDark'; +import FolderGreen from '../Icons/FolderGreen'; +import FolderGreenDark from '../Icons/FolderGreenDark'; +import FolderYellow from '../Icons/FolderYellow'; +import FolderYellowDark from '../Icons/FolderYellowDark'; + +const StyledTabs = styled(Tabs)(({ theme }) => ({ + borderBottom: '1px solid rgba(185, 185, 185, 0.3)', + '& .MuiTabs-indicator': { + backgroundColor: theme.palette.secondary.main, + borderRadius: 2, + }, +})); + +const StyledTab = styled(Tab)(({ theme }) => ({ + textTransform: 'none', + minWidth: 72, + fontSize: 14, + fontWeight: theme.typography.fontWeightMedium, + color: theme.palette.text.primary, + '&:hover': { + color: theme.palette.text.primary, + opacity: 1, + }, + '&.Mui-selected': { + color: theme.palette.text.primary, + }, +})); + +const tabsConfig = [ + { + id: 'work', + label: 'Work', + files: [ + { kind: 'blue', title: 'UI/UX', value: 178, label: 'files' }, + { kind: 'red', title: 'Design', value: 154, label: 'files' }, + { kind: 'green', title: 'Mobile', value: 98, label: 'files' }, + { kind: 'yellow', title: 'Illustration', value: 154, label: 'files' }, + { kind: 'blue', title: 'Branding', value: 73, label: 'files' }, + { kind: 'red', title: 'Web', value: 127, label: 'files' }, + { kind: 'green', title: 'Research', value: 46, label: 'files' }, + { kind: 'yellow', title: 'Prototype', value: 59, label: 'files' }, + ], + }, + { + id: 'private', + label: 'Private', + files: [ + { kind: 'blue', title: 'Family', value: 42, label: 'files' }, + { kind: 'red', title: 'Travel', value: 27, label: 'files' }, + { kind: 'green', title: 'Finance', value: 16, label: 'files' }, + { kind: 'yellow', title: 'Personal', value: 39, label: 'files' }, + { kind: 'blue', title: 'Health', value: 31, label: 'files' }, + { kind: 'red', title: 'Home', value: 22, label: 'files' }, + { kind: 'green', title: 'Education', value: 18, label: 'files' }, + { kind: 'yellow', title: 'Archive', value: 64, label: 'files' }, + ], + }, + { + id: 'social', + label: 'Social', + files: [ + { kind: 'blue', title: 'Instagram', value: 84, label: 'files' }, + { kind: 'red', title: 'Dribbble', value: 21, label: 'files' }, + { kind: 'green', title: 'Behance', value: 18, label: 'files' }, + { kind: 'yellow', title: 'Medium', value: 13, label: 'files' }, + { kind: 'blue', title: 'LinkedIn', value: 33, label: 'files' }, + { kind: 'red', title: 'X/Twitter', value: 47, label: 'files' }, + { kind: 'green', title: 'GitHub', value: 24, label: 'files' }, + { kind: 'yellow', title: 'YouTube', value: 19, label: 'files' }, + ], + }, +]; + +function renderFolder({ kind, title, value, label, isDark }) { + switch (kind) { + case 'blue': + return isDark ? ( + + ) : ( + + ); + case 'red': + return isDark ? ( + + ) : ( + + ); + case 'green': + return isDark ? ( + + ) : ( + + ); + default: + return isDark ? ( + + ) : ( + + ); + } +} + +export default function ProfileFilesTabs() { + const theme = useTheme(); + const [activeTab, setActiveTab] = React.useState(0); + const current = tabsConfig[activeTab]; + const isDark = theme.palette.mode === 'dark'; + + return ( + + setActiveTab(nextValue)}> + {tabsConfig.map((tab, index) => ( + + ))} + + + + *': { + flex: '0 0 auto', + }, + '&::-webkit-scrollbar': { + height: 6, + }, + '&::-webkit-scrollbar-thumb': { + borderRadius: 6, + backgroundColor: theme.palette.mode === 'dark' ? '#4A4A53' : '#C4C4CC', + }, + }} + > + {current.files.map((file) => ( + {renderFolder({ ...file, isDark })} + ))} + + + + ); +} diff --git a/src/pages/profile/Components/ToDo.js b/src/pages/profile/Components/ToDo.js new file mode 100644 index 0000000..88453a8 --- /dev/null +++ b/src/pages/profile/Components/ToDo.js @@ -0,0 +1,153 @@ +import React from 'react'; +import { makeStyles } from 'styles/mui'; +import { Tabs, Tab, Box } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import ToDoItem from './ToDoItem'; + +function TabPanel(props) { + const { children, value, index, ...other } = props; + + return ( + + ); +} + +const AntTabs = styled(Tabs)(({ theme }) => ({ + borderBottom: `1px solid rgba(185, 185, 185, 0.3)`, + margin: '0 24px', + '& .MuiTabs-indicator': { + backgroundColor: theme.palette.secondary.main, + borderRadius: 2, + }, +})); + +const AntTab = styled((props) => )(({ theme }) => ({ + textTransform: 'none', + minWidth: 72, + fontSize: '14px', + fontWeight: theme.typography.fontWeightMedium, + marginRight: theme.spacing(4), + color: theme.palette.text.primary, + fontFamily: ['Roboto', 'sans-serif'].join(','), + '&:hover': { + color: theme.palette.text.primary, + opacity: 1, + }, + '&.Mui-selected': { + color: theme.palette.text.primary, + fontWeight: theme.typography.fontWeightMedium, + }, + '&:focus': { + color: theme.palette.text.primary, + }, +})); + +const styles = (theme) => ({ + root: { + maxHeight: 575, + marginTop: theme.spacing(1), + marginBottom: theme.spacing(1), + + overflow: 'auto', + whiteSpace: 'nowrap', + '&::-webkit-scrollbar': { + width: '3px', + }, + '&::-webkit-scrollbar-track': { + width: '3px', + background: 'transparent', + }, + '&::-webkit-scrollbar-thumb': { + backgroundColor: '#D8D8D8', + borderRadius: 5, + outline: '1px solid #D8D8D8', + }, + flexGrow: 1, + }, + padding: { + padding: theme.spacing(3), + }, + demo1: { + backgroundColor: theme.palette.background.paper, + }, + demo2: { + backgroundColor: '#2e1534', + }, + folderWrapper: { + display: 'flex', + justifyContent: 'space-between' + }, +}) + +const useStyles = makeStyles(styles); + +function CustomizedTabs() { + const classes = useStyles(); + + const [index, setIndex] = React.useState(0); + + const handleChange = (event, index) => { + setIndex(index) + } + + const Todos = [ + { color: '#FFC35F', time: '10.20', title: 'Call conference with a New' }, + { color: '#536DFE', time: '10.30', title: 'Presentation Demo Ecological' }, + { color: '#3CD4A0', time: '10.50', title: 'Call with PR Manager' }, + { color: '#FFC35F', time: '11.10', title: 'Interview with a new UI/UX' }, + { color: '#FF5C93', time: '11.30', title: 'Call conference with a New' }, + { color: '#536DFE', time: '12.00', title: 'Presentation Demo Ecological' }, + { color: '#FFC35F', time: '12.40', title: 'Sales Presentation' }, + { color: '#3CD4A0', time: '13.20', title: 'Call conference in New-York' }, + { color: '#FFC35F', time: '15.20', title: 'Development of the new Widget' }, + { color: '#536DFE', time: '16.00', title: 'Code review and refactoring' }, + { color: '#FFC35F', time: '10.20', title: 'Call conference with a New' }, + { color: '#536DFE', time: '10.30', title: 'Presentation Demo Ecological' }, + { color: '#3CD4A0', time: '10.50', title: 'Call with PR Manager' }, + { color: '#FFC35F', time: '11.10', title: 'Interview with a new UI/UX' }, + { color: '#FF5C93', time: '11.30', title: 'Call conference with a New' }, + { color: '#536DFE', time: '12.00', title: 'Presentation Demo Ecological' }, + { color: '#FFC35F', time: '12.40', title: 'Sales Presentation' }, + { color: '#3CD4A0', time: '13.20', title: 'Call conference in New-York' }, + { color: '#FFC35F', time: '15.20', title: 'Development of the new Widget' }, + { color: '#536DFE', time: '16.00', title: 'Code review and refactoring' }, + ] + + return ( +
+ + + + + + + {Todos.map((item, index) => ( + + ))} + + + {Todos.map((item, index) => ( + + ))} + + + {Todos.map((item, index) => ( + + ))} + +
+ ); +} + +export default CustomizedTabs; diff --git a/src/pages/profile/Components/ToDoItem.js b/src/pages/profile/Components/ToDoItem.js new file mode 100644 index 0000000..0c7e4d1 --- /dev/null +++ b/src/pages/profile/Components/ToDoItem.js @@ -0,0 +1,97 @@ +import { useState } from 'react'; +import { makeStyles } from 'styles/mui'; +import Typography from '@mui/material/Typography'; +import { MenuItem, IconButton, Menu } from '@mui/material'; +import { MoreVert as MoreIcon } from '@mui/icons-material'; +import Dot from '../../../components/Dot/Dot'; + +const styles = (theme) => ({ + todoItemWrap: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + padding: '8px 0px', + cursor: 'pointer', + borderBottom: `1px solid rgba(185, 185, 185, 0.3)`, + margin: '0 24px', + }, + itemIsDone: { + color: theme.palette.text.hint, + textDecoration: 'line-through', + 'div > div': { + background: '#9B9B9B !important' + } + }, + taskText: { + display: 'flex', + alignItems: 'center', + flex: 1, + paddingLeft: 30, + '& p': { + margin: 0, + fontSize: 15, + fontWeight: theme.typography.fontWeightMedium, + width: 210, + overflow: 'hidden', + } + }, + time: { + fontSize: 10, + fontWeight: 500, + }, + menuItem: { + color: theme.palette.text.hint, + } +}) + +const useStyles = makeStyles(styles); + +const ToDoItem = ({ time, title, color, backgroundColor}) => { + const classes = useStyles(); + const [moreButtonRef, setMoreButtonRef] = useState(null); + const [isMoreMenuOpen, setMoreMenuOpen] = useState(false); + const [itemStatus, setItemStatus] = useState(false); + + return ( +
setItemStatus(!itemStatus)} style={{ backgroundColor: backgroundColor }}> + {time} +
+ +

{title}

+
+
+ setMoreMenuOpen(true)} + ref={setMoreButtonRef} + > + + + setMoreMenuOpen(false)} + disableAutoFocusItem + > + + Edit + + + Copy + + + Delete + + + Print + + +
+
+ ) +} + +export default ToDoItem; diff --git a/src/pages/profile/Components/ViewsWidget.js b/src/pages/profile/Components/ViewsWidget.js new file mode 100644 index 0000000..da72102 --- /dev/null +++ b/src/pages/profile/Components/ViewsWidget.js @@ -0,0 +1,194 @@ +import React, { useState } from 'react'; +import { + ResponsiveContainer, + AreaChart, + Area, + Tooltip, + } from 'recharts'; +import PropTypes from 'prop-types'; +import { makeStyles } from 'styles/mui'; +import { Menu, IconButton, MenuItem, Typography, Button } from '@mui/material'; + +import { MoreVert as MoreIcon } from '@mui/icons-material'; +import GrowthIcon from '../../../images/profile/growth.svg'; + +const styles = theme => ({ + widgetBackground: { + transition: 'background .35s ease', + cursor: 'pointer', + }, + contentWrapper: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + widgetTitle: { + fontSize: 18, + color: '#4A4A4A', + fontWeight: 'medium', + margin: 0, + transition: 'color .35s ease', + }, + widgetSubtitle: { + color: '#1ACA95', + fontSize: 12, + lineHeight: '25px', + textTransform: 'uppercase', + transition: 'color .35s ease', + }, + widgetValue: { + fontWeight: 'regular', + fontSize: '24px', + lineHeight: '25px', + margin: 0, + transition: 'color .35s ease', + display: 'flex', + alignItems: 'end', + '& > img': { + marginLeft: 5 + } + }, + textContent: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + marginRight: 20, + marginTop: 15 + }, + titleWrapper: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + seeMoreBtn: { + color: theme.palette.primary.main, + borderColor: theme.palette.primary.main, + textTransform: 'none', + padding: '5px', + marginTop: 10 + }, + menuIcon: { + color: theme.palette.text.hint, + } +}) + +const useStyles = makeStyles(styles); + +const SimpleLine = ({ color, title, subtitle, value }) => { + const classes = useStyles(); + + const [moreButtonRef, setMoreButtonRef] = useState(null); + const [isMoreMenuOpen, setMoreMenuOpen] = useState(false); + + function getRandomData(length, min, max, multiplier = 10, maxDiff = 5) { + var array = new Array(length).fill(); + let lastValue; + + return array.map(() => { + let randomValue = Math.floor(Math.random() * multiplier + 1); + + while ( + randomValue <= min || + randomValue >= max || + (lastValue && randomValue - lastValue > maxDiff) + ) { + randomValue = Math.floor(Math.random() * multiplier + 1); + } + + lastValue = randomValue; + + return { value: randomValue }; + }); + } + const randomData = React.useMemo(() => getRandomData(4), []); + return ( +
+
+ {title} + setMoreMenuOpen(true)} + ref={setMoreButtonRef} + className={classes.menuIcon} + > + + +
+ setMoreMenuOpen(false)} + disableAutoFocusItem + > + + Edit + + + Copy + + + Delete + + + Print + + +
+
+
{value}arrow
+ {subtitle} + +
+ + + + + + +
+
+ ); +} + +SimpleLine.propTypes = { + color: PropTypes.string, + title: PropTypes.string, + subtitle: PropTypes.string, + value: PropTypes.number, +} + +export default SimpleLine; diff --git a/src/pages/profile/Components/mock.js b/src/pages/profile/Components/mock.js new file mode 100644 index 0000000..39a18e1 --- /dev/null +++ b/src/pages/profile/Components/mock.js @@ -0,0 +1,39 @@ +const profileMock = { + donut: { + labels: { + show: true, + }, + series: [44, 15, 41, 55], + options: { + tooltip: { + theme: 'dark', + }, + legend: { + labels: { + colors: ['#27282C'], + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + height: 300, + }, + legend: { + position: 'bottom', + }, + }, + }, + ], + stroke: { + show: false, + width: 0, + }, + colors: ['#4B9FFE', '#FF4D3A', '#FEAA4B', '#1ACA95'], + }, + }, +}; + +export default profileMock; diff --git a/src/pages/profile/Icons/CloudIcon.js b/src/pages/profile/Icons/CloudIcon.js new file mode 100644 index 0000000..89f5698 --- /dev/null +++ b/src/pages/profile/Icons/CloudIcon.js @@ -0,0 +1,26 @@ +import { useTheme } from '@mui/material/styles'; + +function CloudIcon() { + const theme = useTheme(); + + return ( +
+ + + + +
+ ); +} + +export default CloudIcon; diff --git a/src/pages/profile/Icons/DocIcon.js b/src/pages/profile/Icons/DocIcon.js new file mode 100644 index 0000000..eded03f --- /dev/null +++ b/src/pages/profile/Icons/DocIcon.js @@ -0,0 +1,16 @@ + +const DocIcon = () => { + return ( + + + + + + + + + + ) +} + +export default DocIcon; \ No newline at end of file diff --git a/src/pages/profile/Icons/FolderBlue.js b/src/pages/profile/Icons/FolderBlue.js new file mode 100644 index 0000000..7bd3102 --- /dev/null +++ b/src/pages/profile/Icons/FolderBlue.js @@ -0,0 +1,15 @@ +import FolderBlueLight from '../../../images/profile/FolderBlueLight.svg'; +import FolderCard from './FolderCard'; + +function FolderBlue({ title, value, label }) { + return ( + + ); +} + +export default FolderBlue; diff --git a/src/pages/profile/Icons/FolderBlueDark.js b/src/pages/profile/Icons/FolderBlueDark.js new file mode 100644 index 0000000..d9c53b4 --- /dev/null +++ b/src/pages/profile/Icons/FolderBlueDark.js @@ -0,0 +1,15 @@ +import FolderBlueDark from '../../../images/profile/FolderBlueDark.svg'; +import FolderCard from './FolderCard'; + +function FolderBlueDarkIcon({ title, value, label }) { + return ( + + ); +} + +export default FolderBlueDarkIcon; diff --git a/src/pages/profile/Icons/FolderCard.js b/src/pages/profile/Icons/FolderCard.js new file mode 100644 index 0000000..0ea862c --- /dev/null +++ b/src/pages/profile/Icons/FolderCard.js @@ -0,0 +1,21 @@ +function FolderCard({ image, title, value, label }) { + return ( +
+ +
+ {title} +

+ {value}{' '} + {label} +

+
+
+ ); +} + +export default FolderCard; diff --git a/src/pages/profile/Icons/FolderGreen.js b/src/pages/profile/Icons/FolderGreen.js new file mode 100644 index 0000000..c83d2bd --- /dev/null +++ b/src/pages/profile/Icons/FolderGreen.js @@ -0,0 +1,15 @@ +import FolderGreenLight from '../../../images/profile/FolderGreenLight.svg'; +import FolderCard from './FolderCard'; + +function FolderGreen({ title, value, label }) { + return ( + + ); +} + +export default FolderGreen; diff --git a/src/pages/profile/Icons/FolderGreenDark.js b/src/pages/profile/Icons/FolderGreenDark.js new file mode 100644 index 0000000..1fb6ebb --- /dev/null +++ b/src/pages/profile/Icons/FolderGreenDark.js @@ -0,0 +1,15 @@ +import FolderGreenDark from '../../../images/profile/FolderGreenDark.svg'; +import FolderCard from './FolderCard'; + +function FolderGreenDarkIcon({ title, value, label }) { + return ( + + ); +} + +export default FolderGreenDarkIcon; diff --git a/src/pages/profile/Icons/FolderRed.js b/src/pages/profile/Icons/FolderRed.js new file mode 100644 index 0000000..aa760d5 --- /dev/null +++ b/src/pages/profile/Icons/FolderRed.js @@ -0,0 +1,15 @@ +import FolderRedLight from '../../../images/profile/FolderRedLight.svg'; +import FolderCard from './FolderCard'; + +function FolderRed({ title, value, label }) { + return ( + + ); +} + +export default FolderRed; diff --git a/src/pages/profile/Icons/FolderRedDark.js b/src/pages/profile/Icons/FolderRedDark.js new file mode 100644 index 0000000..ff9a750 --- /dev/null +++ b/src/pages/profile/Icons/FolderRedDark.js @@ -0,0 +1,15 @@ +import FolderRedDark from '../../../images/profile/FolderRedDark.svg'; +import FolderCard from './FolderCard'; + +function FolderRedDarkIcon({ title, value, label }) { + return ( + + ); +} + +export default FolderRedDarkIcon; diff --git a/src/pages/profile/Icons/FolderYellow.js b/src/pages/profile/Icons/FolderYellow.js new file mode 100644 index 0000000..5725a73 --- /dev/null +++ b/src/pages/profile/Icons/FolderYellow.js @@ -0,0 +1,15 @@ +import FolderYellowLight from '../../../images/profile/FolderYellowLight.svg'; +import FolderCard from './FolderCard'; + +function FolderYellow({ title, value, label }) { + return ( + + ); +} + +export default FolderYellow; diff --git a/src/pages/profile/Icons/FolderYellowDark.js b/src/pages/profile/Icons/FolderYellowDark.js new file mode 100644 index 0000000..eb7d13e --- /dev/null +++ b/src/pages/profile/Icons/FolderYellowDark.js @@ -0,0 +1,15 @@ +import FolderYellowDark from '../../../images/profile/FolderYellowDark.svg'; +import FolderCard from './FolderCard'; + +function FolderYellowDarkIcon({ title, value, label }) { + return ( + + ); +} + +export default FolderYellowDarkIcon; diff --git a/src/pages/profile/Icons/FollowIcon.js b/src/pages/profile/Icons/FollowIcon.js new file mode 100644 index 0000000..21fad3d --- /dev/null +++ b/src/pages/profile/Icons/FollowIcon.js @@ -0,0 +1,16 @@ + +const FollowIcon = () => { + return ( + + + + + + + + + + ) +} + +export default FollowIcon; \ No newline at end of file diff --git a/src/pages/profile/Icons/ProjectIcon.js b/src/pages/profile/Icons/ProjectIcon.js new file mode 100644 index 0000000..89c338e --- /dev/null +++ b/src/pages/profile/Icons/ProjectIcon.js @@ -0,0 +1,16 @@ + +const ProjectIcon = () => { + return ( + + + + + + + + + + ) +} + +export default ProjectIcon; \ No newline at end of file diff --git a/src/pages/profile/Icons/UsersIcon.js b/src/pages/profile/Icons/UsersIcon.js new file mode 100644 index 0000000..e2c8610 --- /dev/null +++ b/src/pages/profile/Icons/UsersIcon.js @@ -0,0 +1,16 @@ + +const UsersIcon = () => { + return ( + + + + + + + + + + ) +} + +export default UsersIcon; \ No newline at end of file diff --git a/src/pages/profile/Profile.js b/src/pages/profile/Profile.js new file mode 100644 index 0000000..39f9e3b --- /dev/null +++ b/src/pages/profile/Profile.js @@ -0,0 +1,153 @@ +import { Grid, Typography } from "@mui/material"; +import { useTheme } from "styles/mui"; + +import { Badge, Chip, Button } from '../../components/Wrappers'; +import Tabs from './Components/Tabs'; +import Donut from './Components/DonutChart'; +import RNSWidget from './Components/RNSWIdget'; +import ToDo from './Components/ToDo'; +import Calendar from './Components/Calendar/Calendar'; +import MediaBlock from './Components/MediaBlock'; +import ViewsWidget from './Components/ViewsWidget'; +import ProfileIcon from '../../images/profile/profilePhoto.svg'; +import BehanceIcon from '../../images/profile/BehanceIcon.svg'; +import MediumIcon from '../../images/profile/MediumIcon.svg'; +import FacebookIcon from '../../images/profile/FacebookIcon.svg'; +import DribbleIcon from '../../images/profile/DribbleIcon.svg'; +import InstagramIcon from '../../images/profile/InstagramIcon.svg'; +import CloudIcon from './Icons/CloudIcon' + +// styles +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget/Widget"; + +function Profile() { + let classes = useStyles(); + let theme = useTheme(); + + return ( + + + + + +
+
+ profile +
+ +
+
+ +
+ + Julee Cruise + + Product Designer + Flatlogic.com +
+ + + + + +
+
+ { } + FacebookIcon + { } + MediumIcon + { } + DribbleIcon + { } + BehanceIcon + { } + InstagramIcon +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
Updates
+
+ +
+
+
+
+
+
+ ); +} + +// ####################################################################### + +export default Profile; diff --git a/src/pages/profile/package.json b/src/pages/profile/package.json new file mode 100644 index 0000000..ee8722d --- /dev/null +++ b/src/pages/profile/package.json @@ -0,0 +1,7 @@ +{ + "name": "Profile", + "version": "1.0.0", + "private": true, + "main": "Profile.js" +} + diff --git a/src/pages/profile/styles.js b/src/pages/profile/styles.js new file mode 100644 index 0000000..68710c3 --- /dev/null +++ b/src/pages/profile/styles.js @@ -0,0 +1,251 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + root: {}, + visualProfile: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + marginTop: 24 + }, + profileImage: { + padding: 5, + border: `3px dotted ${theme.palette.primary.main}`, + borderRadius: '50%', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + '@media (max-width: 768px)': { + maxWidth: 200 + } + }, + profileDescription: { + marginTop: 24, + paddingLeft: 20 + }, + profileTitle: { + fontSize: 32, + fontFamily: 'Roboto', + fontWeight: 600, + display: 'block' + }, + profileSubtitle: { + color: theme.palette.text.primary, + opacity: 0.5, + fontSize: 12, + marginTop: 20, + display: 'block', + fontWeight: 500, + }, + profileExternalRes: { + fontSize: 16, + margin: '12px 0 25px', + color: theme.palette.primary.main, + display: 'block', + marginTop: 4, + textDecoration: 'none', + }, + chipMargin: { + display: 'flex', + justifyContent: 'end', + alignItems: 'center', + marginTop: 20, + fontWeight: 700, + fontSize: 11, + width: 48, + height: 26, + }, + socials: { + display: 'flex', + justifyContent: 'space-between', + marginTop: 30, + alignItems: 'center', + maxWidth: 180, + }, + mediaBlockPadding: { + padding: '0 24px 12px 24px', + }, + widgetBody: { + padding: 0, + }, + updateWidget: { + background: theme.palette.primary.main, + justifyContent: 'space-between', + alignItems: 'center', + padding: '24px 24px', + height: 90, + color: '#fff', + borderRadius: 4, + }, + updateWidgetFlexContainer: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + }, + updateLabel: { + display: 'inline-block', + fontSize: '20px', + fontWeight: 400, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + }, + spacer: { + flexGrow: 1, + }, + detailsBtn: { + color: '#fff', + borderColor: '#fff', + }, + card: { + minHeight: "100%", + display: "flex", + flexDirection: "column" + }, + progressSection: { + marginBottom: theme.spacing(1) + }, + progressTitle: { + marginBottom: theme.spacing(2) + }, + progress: { + marginBottom: theme.spacing(1), + backgroundColor: 'rgb(236, 236, 236)', + }, + pieChartLegendWrapper: { + height: "100%", + display: "flex", + flexDirection: "column", + justifyContent: "center", + alignItems: "flex-end", + marginRight: theme.spacing(1) + }, + legendItemContainer: { + display: "flex", + alignItems: "center", + marginBottom: theme.spacing(1), + justifyContent: "space-between", + width: "100%" + }, + fullHeightBody: { + display: "flex", + flexGrow: 1, + flexDirection: "column", + justifyContent: "space-between" + }, + alignStandaloneElement: { + display: "flex", + flexGrow: 1, + flexDirection: "column", + justifyContent: "center" + }, + tableWidget: { + overflowX: "auto" + }, + progressBar: { + backgroundColor: theme.palette.warning.main + }, + progressBarPrimary: { + backgroundColor: theme.palette.primary.main, + }, + progressBarWarning: { + backgroundColor: theme.palette.warning.main, + }, + performanceLegendWrapper: { + display: "flex", + flexGrow: 1, + alignItems: "center", + marginBottom: theme.spacing(1) + }, + legendElement: { + display: "flex", + alignItems: "center", + marginRight: theme.spacing(2) + }, + legendElementText: { + marginLeft: theme.spacing(1) + }, + serverOverviewElement: { + display: "flex", + alignItems: "center", + maxWidth: "100%" + }, + serverOverviewElementText: { + minWidth: 149, + paddingRight: theme.spacing(2) + }, + serverOverviewElementChartWrapper: { + width: "100%" + }, + mainChartBody: { + overflowX: "auto" + }, + mainChartHeader: { + width: "100%", + display: "flex", + alignItems: "center", + justifyContent: "space-between", + [theme.breakpoints.only("xs")]: { + flexWrap: "wrap" + } + }, + mainChartHeaderLabels: { + display: "flex", + alignItems: "center", + [theme.breakpoints.only("xs")]: { + order: 3, + width: "100%", + justifyContent: "center", + marginTop: theme.spacing(3), + marginBottom: theme.spacing(2) + } + }, + mainChartHeaderLabel: { + display: "flex", + alignItems: "center", + marginLeft: theme.spacing(3) + }, + mainChartSelectRoot: { + borderColor: theme.palette.text.hint + "80 !important" + }, + mainChartSelect: { + padding: 10, + paddingRight: 25 + }, + mainChartLegentElement: { + fontSize: "14px !important", + marginLeft: theme.spacing(1) + }, + table: { + minWidth: 750 + }, + tableWrapper: { + overflowX: "auto" + }, + visuallyHidden: { + border: 0, + clip: "rect(0 0 0 0)", + height: 1, + margin: -1, + overflow: "hidden", + padding: 0, + position: "absolute", + top: 20, + width: 1 + }, + fixIconRight: { + "& .MuiSelect-icon": { + right: 4 + } + }, + actionsIcon: { + color: "#76767B" + }, + adjustHeight: { + height: '100%', + '@media (max-width: 1280px)': { + height: 'auto' + } + }, +})); diff --git a/src/pages/progress/Progress.js b/src/pages/progress/Progress.js new file mode 100644 index 0000000..c487107 --- /dev/null +++ b/src/pages/progress/Progress.js @@ -0,0 +1,85 @@ +import React from "react"; +import { Grid, Box, LinearProgress } from "@mui/material"; + +// components +import Widget from "../../components/Widget"; +import { CircularProgress } from "../../components/Wrappers"; + +export default function ProgressComp() { + const [completed, setCompleted] = React.useState(0); + React.useEffect(() => { + function progress() { + setCompleted((oldCompleted) => { + if (oldCompleted === 100) { + return 0; + } + const diff = Math.random() * 10; + return Math.min(oldCompleted + diff, 100); + }); + } + const timer = setInterval(progress, 1500); + return () => { + clearInterval(timer); + }; + }, []); + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+
+ ); + +} \ No newline at end of file diff --git a/src/pages/progress/package.json b/src/pages/progress/package.json new file mode 100644 index 0000000..5cb403d --- /dev/null +++ b/src/pages/progress/package.json @@ -0,0 +1,6 @@ +{ + "name": "progress", + "version": "1.0.0", + "main": "Progress.js", + "license": "MIT" +} diff --git a/src/pages/reset/Reset.js b/src/pages/reset/Reset.js new file mode 100644 index 0000000..0f72ff2 --- /dev/null +++ b/src/pages/reset/Reset.js @@ -0,0 +1,144 @@ +import { useState } from 'react'; +import { Grid, CircularProgress, TextField as Input } from '@mui/material'; +import { useLocation, useNavigate } from 'react-router-dom'; + +// styles +import useStyles from './styles'; + +// logo +import logo from './logo.svg'; + +// context +import { + useUserDispatch, + resetPassword, + authError, +} from '../../context/UserContext'; + +//components +import { Button, Typography } from '../../components/Wrappers'; + +function Reset() { + let classes = useStyles(); + const navigate = useNavigate(); + const location = useLocation(); + // global + let userDispatch = useUserDispatch(); + const [passwordValue, setPasswordValue] = useState(''); + const [confirmPasswordValue, setConfirmPasswordValue] = useState(''); + const [isLoading] = useState(false); + const checkPassword = () => { + if (!isPasswordValid()) { + if (!passwordValue) { + authError('Password field is empty')(userDispatch); + } else { + authError('Passwords are not equal')(userDispatch); + } + authError()(userDispatch); + } + }; + + const isPasswordValid = () => { + return passwordValue && passwordValue === confirmPasswordValue; + }; + + const doReset = () => { + const params = new URLSearchParams(location.search); + const token = params.get('token'); + if (!token) { + authError('There are no token')(userDispatch); + } + + if (!isPasswordValid()) { + checkPassword(); + } else { + resetPassword(token, passwordValue, navigate)(userDispatch); + } + }; + + return ( + +
+ logo + + React Material Admin Full + +
+
+
+ setPasswordValue(e.target.value)} + margin='normal' + placeholder='password' + type='password' + fullWidth + /> + setConfirmPasswordValue(e.target.value)} + margin='normal' + placeholder='Confirm Password' + type='password' + fullWidth + /> +
+ {isLoading ? ( + + ) : ( + + )} + +
+
+ + 2014-{new Date().getFullYear()}{' '} + + Flatlogic + + , LLC. All rights reserved. + +
+
+ ); +} + +export default Reset; diff --git a/src/pages/reset/logo.svg b/src/pages/reset/logo.svg new file mode 100644 index 0000000..60006a3 --- /dev/null +++ b/src/pages/reset/logo.svg @@ -0,0 +1,13 @@ + + + + logo_white + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/src/pages/reset/package.json b/src/pages/reset/package.json new file mode 100644 index 0000000..cf123c2 --- /dev/null +++ b/src/pages/reset/package.json @@ -0,0 +1,6 @@ +{ + "name": "reset", + "version": "0.0.0", + "private": true, + "main": "Reset.js" +} diff --git a/src/pages/reset/styles.js b/src/pages/reset/styles.js new file mode 100644 index 0000000..5fdd91a --- /dev/null +++ b/src/pages/reset/styles.js @@ -0,0 +1,161 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles((theme) => ({ + container: { + height: '100vh', + width: '100%', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + position: 'absolute', + top: 0, + left: 0, + }, + logotypeContainer: { + backgroundColor: theme.palette.primary.main, + width: '60%', + height: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + [theme.breakpoints.down('md')]: { + width: '50%', + }, + [theme.breakpoints.down('md')]: { + display: 'none', + }, + }, + logotypeImage: { + width: 165, + marginBottom: theme.spacing(4), + }, + logotypeText: { + color: 'white', + fontWeight: 500, + fontSize: 84, + [theme.breakpoints.down('md')]: { + fontSize: 48, + }, + }, + customFormContainer: { + width: '40%', + height: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + overflow: 'auto', + alignItems: 'center', + [theme.breakpoints.down('md')]: { + width: '50%', + overflow: 'visible', + }, + }, + formContainer: { + width: '40%', + height: '100%', + display: 'flex', + flexDirection: 'column', + overflow: 'auto', + alignItems: 'center', + [theme.breakpoints.down('md')]: { + width: '50%', + overflow: 'visible', + }, + }, + form: { + width: 320, + }, + tab: { + fontWeight: 400, + fontSize: 18, + }, + greeting: { + fontWeight: 500, + textAlign: 'center', + marginTop: theme.spacing(4), + }, + subGreeting: { + fontWeight: 500, + textAlign: 'center', + marginTop: theme.spacing(2), + }, + googleButton: { + marginTop: theme.spacing(6), + boxShadow: theme.customShadows.widget, + backgroundColor: 'white', + width: '100%', + textTransform: 'none', + }, + googleButtonCreating: { + marginTop: 0, + }, + googleIcon: { + width: 30, + marginRight: theme.spacing(2), + }, + creatingButtonContainer: { + marginTop: theme.spacing(2.5), + height: 46, + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + }, + createAccountButton: { + height: 46, + textTransform: 'none', + }, + formDividerContainer: { + marginTop: theme.spacing(4), + marginBottom: theme.spacing(4), + display: 'flex', + alignItems: 'center', + }, + formDividerWord: { + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(2), + }, + formDivider: { + flexGrow: 1, + height: 1, + backgroundColor: theme.palette.text.hint + '40', + }, + errorMessage: { + textAlign: 'center', + }, + textFieldUnderline: { + '&:before': { + borderBottomColor: theme.palette.primary.light, + }, + '&:after': { + borderBottomColor: theme.palette.primary.main, + }, + '&:hover:before': { + borderBottomColor: `${theme.palette.primary.light} !important`, + }, + }, + textField: { + borderBottomColor: theme.palette.background.light, + }, + formButtons: { + width: '100%', + marginTop: theme.spacing(4), + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + forgetButton: { + textTransform: 'none', + fontWeight: 400, + }, + loginLoader: { + marginLeft: theme.spacing(4), + }, + copyright: { + marginTop: theme.spacing(4), + whiteSpace: 'nowrap', + [theme.breakpoints.up('md')]: { + bottom: theme.spacing(2), + }, + }, +})); diff --git a/src/pages/search/Search.js b/src/pages/search/Search.js new file mode 100644 index 0000000..09471be --- /dev/null +++ b/src/pages/search/Search.js @@ -0,0 +1,382 @@ +import React from "react"; +import { + Grid, + Box, + Select, + FormControl, + MenuItem, + List, + ListItem, + ListItemIcon, + ListItemText, + ButtonGroup } from +"@mui/material"; +import Pagination from '@mui/material/Pagination'; + +import { + BorderAll as GridIcon, + FormatAlignJustify as RowIcon } from +"@mui/icons-material"; +import useStyles from "./styles"; + +//images +import img1 from "../../images/search/img1.jpg"; +import img2 from "../../images/search/img2.jpg"; +import img3 from "../../images/search/img3.jpg"; +import img4 from "../../images/search/img4.jpg"; + +//components +import { Typography, Button, Link, Chip } from "../../components/Wrappers"; +import Widget from "../../components/Widget"; + +export default function SearchComp() { + const [select, setSelect] = React.useState({ + row: true, + grid: false + }); + const [popularField, setValues] = React.useState("Popular"); + const [timeField, setTimeField] = React.useState("All Time"); + const handleChange = (event) => { + setValues(event.target.value); + }; + const handleChangeTimeField = (event) => { + setTimeField(event.target.value); + }; + const toggleSelect = () => { + setSelect((prevState) => ({ + row: !prevState.row, + grid: !prevState.grid + })); + }; + const classes = useStyles(); + return ( + <> + + + + + + + + + + + + + + + + + + + + + About 94 700 000 (0.39 sec.) results + + + + + + + + Results{" "} + + Filtering + + + Listed content is categorized by the following groups: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + admin templates + + + + + + + + + Next generation admin template + {" "} + + + New York, NY 2018 + + + Not just usual Metro. But something bigger. Not just + usual widgets, but real widgets. Not just yet another + admin template, but next generation admin template. + + + + + + + + $9700 + + per week + + + + + + + + + + + + admin templates + + + + + + + + + Try. Posted by Okendoken + {" "} + + + + + Los Angeles, NY 20188 + + + You will never know exactly how something will go + until you try it. You can think three hundred times + and still have no precise result. + + + + + + + + $10300 + + per week + + + + + + + + + + + + admin templates + + + + + + + + Vitaut the Great{" "} + + + New York, NY 20188 + + + The Great Prince of the Grand Duchy of Lithuania he + had stopped the invasion to Europe of Timur (Tamerlan) + from Asia heading a big Army of Belarusians, + Lithuanians. + + + + + + + + $3200 + + per week + + + + + + + + + + + + admin templates + + + + + + + + + Can I use CSS3 Radial-Gradient? + {" "} + + + Minsk, NY 20188 + + + Yes you can! Further more, you should! It let's you + create really beautiful images either for elements or + for the entire background. + + + + + + + + $2400 + + per week + + + + + + + + + + + + + + + + ); + +} \ No newline at end of file diff --git a/src/pages/search/package.json b/src/pages/search/package.json new file mode 100644 index 0000000..eb5b3a8 --- /dev/null +++ b/src/pages/search/package.json @@ -0,0 +1,7 @@ +{ + "name": "search", + "version": "1.0.0", + "main": "Search.js", + "author": "", + "license": "MIT" +} diff --git a/src/pages/search/styles.js b/src/pages/search/styles.js new file mode 100644 index 0000000..12f677d --- /dev/null +++ b/src/pages/search/styles.js @@ -0,0 +1,15 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(() => ({ + filter: { + width: 130, + }, + adjustRightBorderRadius: { + borderTopRightRadius: 0, + borderBottomRightRadius: 0, + }, + adjustLeftBorderRadius: { + borderTopLeftRadius: 0, + borderBottomLeftRadius: 0, + }, +})); diff --git a/src/pages/starter/Starter.js b/src/pages/starter/Starter.js new file mode 100644 index 0000000..fd7930c --- /dev/null +++ b/src/pages/starter/Starter.js @@ -0,0 +1,78 @@ +import { Link } from 'react-router-dom'; + +// styles +import useStyles from './styles'; +import reactLogo from '../../images/react-logo.svg'; + +import { Button } from '../../components/Wrappers'; + +function Starter() { + let classes = useStyles(); + + return ( +
+
+ react +

+ Welcome to your React Material Admin Full application! +

+

+ This is a React/Node.JS app generated by the{' '} + + Flatlogic Web App Generator + + . For guides and documentation please check your local README.md and{' '} + + Flatlogic documentation + + . +

+
+ +
+
+
More useful links
+ + + + +
+
+
+ ); +} + +export default Starter; diff --git a/src/pages/starter/package.json b/src/pages/starter/package.json new file mode 100644 index 0000000..98dc4a4 --- /dev/null +++ b/src/pages/starter/package.json @@ -0,0 +1,6 @@ +{ + "name": "Starter", + "version": "0.0.0", + "main": "Starter.js", + "private": true +} diff --git a/src/pages/starter/styles.js b/src/pages/starter/styles.js new file mode 100644 index 0000000..02ce951 --- /dev/null +++ b/src/pages/starter/styles.js @@ -0,0 +1,78 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles(() => ({ + container: { + height: '100vh', + width: '100%', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + position: 'absolute', + top: 0, + left: 0, + }, + root: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + }, + starterBlock: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + margin: '100px auto', + padding: '24px', + width: '720px', + borderRadius: '8px', + h3: { + textAlign: 'center', + }, + p: { + textAlign: 'center', + }, + + '@media (max-width: 767.98px)': { + width: '520px', + img: { + width: '250px', + height: '250px', + }, + }, + '@media (max-width: 575.98px)': { + width: '340px', + img: { + width: '150px', + height: '150px', + }, + }, + }, + + img: { + margin: '20px auto', + width: '350px', + height: '350px', + }, + + buttons: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + width: '100%', + }, + a: { + width: '100%', + }, + leftButton: { + width: '100%', + }, + rightButton: { + width: '100%', + marginLeft: '16px', + }, + links: { + display: 'flex', + flexDirection: 'column', + marginTop: '1rem', + }, +})); diff --git a/src/pages/tables/Tables.js b/src/pages/tables/Tables.js new file mode 100644 index 0000000..73e9a50 --- /dev/null +++ b/src/pages/tables/Tables.js @@ -0,0 +1,77 @@ +import { Grid } from "@mui/material"; +import { DataGrid } from "@mui/x-data-grid"; +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget"; +import Table from "../dashboard/components/Table/Table"; + +// data +import mock from "../dashboard/mock"; + +const datatableData = [ +["Joe James", "Example Inc.", "Yonkers", "NY"], +["John Walsh", "Example Inc.", "Hartford", "CT"], +["Bob Herm", "Example Inc.", "Tampa", "FL"], +["James Houston", "Example Inc.", "Dallas", "TX"], +["Prabhakar Linwood", "Example Inc.", "Hartford", "CT"], +["Kaui Ignace", "Example Inc.", "Yonkers", "NY"], +["Esperanza Susanne", "Example Inc.", "Hartford", "CT"], +["Christian Birgitte", "Example Inc.", "Tampa", "FL"], +["Meral Elias", "Example Inc.", "Hartford", "CT"], +["Deep Pau", "Example Inc.", "Yonkers", "NY"], +["Sebastiana Hani", "Example Inc.", "Dallas", "TX"], +["Marciano Oihana", "Example Inc.", "Yonkers", "NY"], +["Brigid Ankur", "Example Inc.", "Dallas", "TX"], +["Anna Siranush", "Example Inc.", "Yonkers", "NY"], +["Avram Sylva", "Example Inc.", "Hartford", "CT"], +["Serafima Babatunde", "Example Inc.", "Tampa", "FL"], +["Gaston Festus", "Example Inc.", "Tampa", "FL"]]; + + +const columns = [ +{ field: "name", headerName: "Name", flex: 1 }, +{ field: "company", headerName: "Company", flex: 1 }, +{ field: "city", headerName: "City", flex: 1 }, +{ field: "state", headerName: "State", flex: 0.6 }]; + + +const rows = datatableData.map((row, index) => ({ + id: index + 1, + name: row[0], + company: row[1], + city: row[2], + state: row[3] +})); + +export default function Tables() { + const classes = useStyles(); + return ( + <> + + +
+ + +
+
+ + + + + + + + ); + +} \ No newline at end of file diff --git a/src/pages/tables/dynamic/DynamicTables.js b/src/pages/tables/dynamic/DynamicTables.js new file mode 100644 index 0000000..188ed2c --- /dev/null +++ b/src/pages/tables/dynamic/DynamicTables.js @@ -0,0 +1,604 @@ +import React from "react"; +import { makeStyles, useTheme } from "styles/mui"; +import { lighten } from "@mui/material/styles"; +import { + Table, + TableBody, + TableCell, + TableHead, + TablePagination, + TableRow, + TableSortLabel, + Toolbar, + Checkbox, + IconButton, + Grid, + TableFooter } from +"@mui/material"; +import { + Delete as DeleteIcon, + FilterList as FilterListIcon, + LastPage as LastPageIcon, + FirstPage as FirstPageIcon, + KeyboardArrowRight, + KeyboardArrowLeft } from +"@mui/icons-material"; +import cn from "classnames"; + +//components +import Widget from "../../../components/Widget"; +import Code from "../../../components/Code"; +import { Tooltip, Typography } from "../../../components/Wrappers"; + +const useStyles1 = makeStyles((theme) => ({ + root: { + flexShrink: 0, + color: theme.palette.text.secondary, + marginLeft: theme.spacing(2.5) + } +})); + +function TablePaginationActions(props) { + const classes = useStyles1(); + const theme = useTheme(); + const { count, page, rowsPerPage, onPageChange } = props; + + function handleFirstPageButtonClick(event) { + onPageChange(event, 0); + } + + function handleBackButtonClick(event) { + onPageChange(event, page - 1); + } + + function handleNextButtonClick(event) { + onPageChange(event, page + 1); + } + + function handleLastPageButtonClick(event) { + onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1)); + } + + return ( +
+ + + {theme.direction === "rtl" ? : } + + + + {theme.direction === "rtl" ? + : + + + } + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page"> + + {theme.direction === "rtl" ? + : + + + } + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page"> + + {theme.direction === "rtl" ? : } + +
); + +} + +const rows2 = [ +createData("Cupcake", 305, 3.7), +createData("Donut", 452, 25.0), +createData("Eclair", 262, 16.0), +createData("Frozen yoghurt", 159, 6.0), +createData("Gingerbread", 356, 16.0), +createData("Honeycomb", 408, 3.2), +createData("Ice cream sandwich", 237, 9.0), +createData("Jelly Bean", 375, 0.0), +createData("KitKat", 518, 26.0), +createData("Lollipop", 392, 0.2), +createData("Marshmallow", 318, 0), +createData("Nougat", 360, 19.0), +createData("Oreo", 437, 18.0)] +.sort((a, b) => a.calories < b.calories ? -1 : 1); + +function createData(name, calories, fat, carbs, protein) { + return { name, calories, fat, carbs, protein }; +} + +const rows = [ +createData("Cupcake", 305, 3.7, 67, 4.3), +createData("Donut", 452, 25.0, 51, 4.9), +createData("Eclair", 262, 16.0, 24, 6.0), +createData("Frozen yoghurt", 159, 6.0, 24, 4.0), +createData("Gingerbread", 356, 16.0, 49, 3.9), +createData("Honeycomb", 408, 3.2, 87, 6.5), +createData("Ice cream sandwich", 237, 9.0, 37, 4.3), +createData("Jelly Bean", 375, 0.0, 94, 0.0), +createData("KitKat", 518, 26.0, 65, 7.0), +createData("Lollipop", 392, 0.2, 98, 0.0), +createData("Marshmallow", 318, 0, 81, 2.0), +createData("Nougat", 360, 19.0, 9, 37.0), +createData("Oreo", 437, 18.0, 63, 4.0)]; + + +function desc(a, b, orderBy) { + if (b[orderBy] < a[orderBy]) { + return -1; + } + if (b[orderBy] > a[orderBy]) { + return 1; + } + return 0; +} + +function stableSort(array, cmp) { + const stabilizedThis = array.map((el, index) => [el, index]); + stabilizedThis.sort((a, b) => { + const order = cmp(a[0], b[0]); + if (order !== 0) return order; + return a[1] - b[1]; + }); + return stabilizedThis.map((el) => el[0]); +} + +function getSorting(order, orderBy) { + return order === "desc" ? + (a, b) => desc(a, b, orderBy) : + (a, b) => -desc(a, b, orderBy); +} + +const headCells = [ +{ + id: "name", + numeric: false, + disablePadding: true, + label: "Dessert (100g serving)" +}, +{ id: "calories", numeric: true, disablePadding: false, label: "Calories" }, +{ id: "fat", numeric: true, disablePadding: false, label: "Fat (g)" }, +{ id: "carbs", numeric: true, disablePadding: false, label: "Carbs (g)" }, +{ id: "protein", numeric: true, disablePadding: false, label: "Protein (g)" }]; + + +function EnhancedTableHead(props) { + const { + classes, + onSelectAllClick, + order, + orderBy, + numSelected, + rowCount, + onRequestSort + } = props; + const createSortHandler = (property) => (event) => { + onRequestSort(event, property); + }; + + return ( + + + + 0 && numSelected < rowCount} + checked={numSelected === rowCount} + onChange={onSelectAllClick} + inputProps={{ "aria-label": "select all desserts" }} /> + + + {headCells.map((headCell) => + + + + + {headCell.label} + {orderBy === headCell.id ? + + {order === "desc" ? "sorted descending" : "sorted ascending"} + : + null} + + + )} + + ); + +} + +const useToolbarStyles = makeStyles((theme) => ({ + root: { + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(1), + marginTop: theme.spacing(3) + }, + highlight: + theme.palette.mode === "light" ? + { + color: theme.palette.secondary.main, + backgroundColor: lighten(theme.palette.secondary.light, 0.85) + } : + { + color: theme.palette.text.primary, + backgroundColor: theme.palette.secondary.dark + }, + spacer: { + flex: "1 1 100%" + }, + actions: { + color: theme.palette.text.secondary + }, + title: { + flex: "0 0 auto" + } +})); + +const useStyles2 = makeStyles((theme) => ({ + root: { + width: "100%", + marginTop: theme.spacing(3) + }, + table: { + minWidth: 500 + }, + tableWrapper: { + overflowX: "auto", + marginTop: theme.spacing(3) + } +})); + +const EnhancedTableToolbar = (props) => { + const classes = useToolbarStyles(); + const { numSelected } = props; + + return ( + 0 + })}> + +
+ {numSelected > 0 ? + + {numSelected} selected + : + + + Nutrition + + } +
+
+
+ {numSelected > 0 ? + + + + + : + + + + + + + } +
+ ); + +}; + +const useStyles = makeStyles((theme) => ({ + root: { + width: "100%", + marginTop: theme.spacing(3) + }, + paper: { + width: "100%", + marginBottom: theme.spacing(2) + }, + table: { + minWidth: 750 + }, + tableWrapper: { + overflowX: "auto" + }, + visuallyHidden: { + border: 0, + clip: "rect(0 0 0 0)", + height: 1, + margin: -1, + overflow: "hidden", + padding: 0, + position: "absolute", + top: 20, + width: 1 + } +})); + +export default function EnhancedTable() { + const classes2 = useStyles2(); + const [page2, setPage2] = React.useState(0); + const [rowsPerPage2, setRowsPerPage2] = React.useState(5); + + const emptyRows2 = + rowsPerPage2 - Math.min(rowsPerPage2, rows2.length - page2 * rowsPerPage2); + + function handleChangePage2(event, newPage) { + setPage2(newPage); + } + + function handleChangeRowsPerPage2(event) { + setRowsPerPage2(parseInt(event.target.value, 10)); + setPage2(0); + } + const classes = useStyles(); + const [order, setOrder] = React.useState("asc"); + const [orderBy, setOrderBy] = React.useState("calories"); + const [selected, setSelected] = React.useState([]); + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + + function handleRequestSort(event, property) { + const isDesc = orderBy === property && order === "desc"; + setOrder(isDesc ? "asc" : "desc"); + setOrderBy(property); + } + + function handleSelectAllClick(event) { + if (event.target.checked) { + const newSelecteds = rows.map((n) => n.name); + setSelected(newSelecteds); + return; + } + setSelected([]); + } + + function handleClick(event, name) { + const selectedIndex = selected.indexOf(name); + let newSelected = []; + + if (selectedIndex === -1) { + newSelected = newSelected.concat(selected, name); + } else if (selectedIndex === 0) { + newSelected = newSelected.concat(selected.slice(1)); + } else if (selectedIndex === selected.length - 1) { + newSelected = newSelected.concat(selected.slice(0, -1)); + } else if (selectedIndex > 0) { + newSelected = newSelected.concat( + selected.slice(0, selectedIndex), + selected.slice(selectedIndex + 1) + ); + } + + setSelected(newSelected); + } + + function handleChangePage(event, newPage) { + setPage(newPage); + } + + function handleChangeRowsPerPage(event) { + setRowsPerPage(+event.target.value); + setPage(0); + } + + const isSelected = (name) => selected.indexOf(name) !== -1; + + const emptyRows = + rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage); + + return ( + <> + + + + + This example demonstrates the use of{" "} + {`Checkbox`} and clickable rows for + selection, with a custom {`Toolbar`}. It + uses the {`TableSortLabel1`} + component to help style column headings. + + +
+
+ + + + + {stableSort(rows, getSorting(order, orderBy)) + .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + .map((row, index) => { + const isItemSelected = isSelected(row.name); + const labelId = `enhanced-table-checkbox-${index}`; + + return ( + handleClick(event, row.name)} + role="checkbox" + aria-checked={isItemSelected} + tabIndex={-1} + key={row.name} + selected={isItemSelected}> + + + + + + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + ); + + })} + {emptyRows > 0 && + + + + } + +
+
+ + + + + + + + The {`Action`} property of the{" "} + {`TablePagination`} component allows the + implementation of custom actions. + +
+ + + {rows2 + .slice( + page2 * rowsPerPage2, + page2 * rowsPerPage2 + rowsPerPage2 + ) + .map((row) => + + {row.name} + {row.calories} + {row.fat} + + )} + + {emptyRows2 > 0 && +
+
+ + {rows2 + .slice( + page2 * rowsPerPage2, + page2 * rowsPerPage2 + rowsPerPage2 + ) + .map((row) => + + + {row.name} + + + {row.calories} + + {row.fat} + + )} + + {emptyRows2 > 0 && + + + + } + + + + + + + +
+
&& + + + + + } + + + + + + + + +
+ + + + ); + +} \ No newline at end of file diff --git a/src/pages/tables/dynamic/package.json b/src/pages/tables/dynamic/package.json new file mode 100644 index 0000000..283a89a --- /dev/null +++ b/src/pages/tables/dynamic/package.json @@ -0,0 +1,6 @@ +{ + "name": "dynamic", + "version": "1.0.0", + "main": "DynamicTables.js", + "license": "MIT" +} diff --git a/src/pages/tables/package.json b/src/pages/tables/package.json new file mode 100644 index 0000000..f97390f --- /dev/null +++ b/src/pages/tables/package.json @@ -0,0 +1,6 @@ +{ + "name": "Tables", + "version": "0.0.0", + "main": "Tables.js", + "private": true +} diff --git a/src/pages/tables/styles.js b/src/pages/tables/styles.js new file mode 100644 index 0000000..71b2e89 --- /dev/null +++ b/src/pages/tables/styles.js @@ -0,0 +1,7 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(() => ({ + tableWrapper: { + overflowX: "auto" + } +})); diff --git a/src/pages/tabs/Tabs.js b/src/pages/tabs/Tabs.js new file mode 100644 index 0000000..f7ca8ec --- /dev/null +++ b/src/pages/tabs/Tabs.js @@ -0,0 +1,284 @@ +import React from "react"; +import { + Grid, + Box, + Tabs, + Tab, + Accordion, + AccordionSummary, + AccordionDetails, + AppBar } from +"@mui/material"; +import { + Phone as PhoneIcon, + ExpandMore as ExpandMoreIcon } from +"@mui/icons-material"; + +// components +import Widget from "../../components/Widget"; +import { Typography, Button } from "../../components/Wrappers"; +import useStyles from "./styles"; + +function TabPanel(props) { + const { children, value, index, ...other } = props; + + return ( + ); + +} + +function a11yProps(index) { + return { + id: `full-width-tab-${index}`, + "aria-controls": `full-width-tabpanel-${index}` + }; +} + +export default function TabsComp() { + const classes = useStyles(); + const [value, setValue] = React.useState(0); + const [iconValue, setIconValue] = React.useState(0); + + function handleChange(event, newValue) { + setValue(newValue); + } + + function handleChangeIconTab(event, newValue) { + setIconValue(newValue); + } + + return ( +
+ + + + + + + + + + + + + Tabs-enabled widget You will never know exactly how something + will go until you try it. You can think three hundred times and + still have no precise result. If you see attractive girl all you + need to do is to go and ask her to give you her phone. You don’t + need to think about HOW it can turn out. All you have to do is + to GO and DO IT. It should be super-fast and easy. No + hesitation. You ask me: “What to do with these fearful thoughts + preventing me from doing that?” The answer is to ignore them, + because they can’t disappear immediately. The same thing is for + startups and ideas. If you have an idea right away after it + appears in your mind you should go and make a first step to + implement it. + + + + + + + + + + + Why don't use Lore Ipsum? I think if some one says don't use + lore ipsum it's very controversial point. I think the opposite + actually. Everyone knows what is lore ipsum - it is easy to + understand if text is lore ipsum. + + + If you will think too much it will sink in the swamp of never + implemented plans and ideas or will just go away or will be + implemented by someone else. 5 months of doing everything to + achieve nothing. You'll automatically skip - because you know - + it's just non-informative stub. But what if there some text like + this one? + + + + + + + + + + } {...a11yProps(0)} /> + } {...a11yProps(1)} /> + } + {...a11yProps(2)} /> + + + + + Tabs-enabled widget You will never know exactly how something + will go until you try it. You can think three hundred times and + still have no precise result. If you see attractive girl all you + need to do is to go and ask her to give you her phone. You don’t + need to think about HOW it can turn out. All you have to do is + to GO and DO IT. It should be super-fast and easy. No + hesitation. You ask me: “What to do with these fearful thoughts + preventing me from doing that?” The answer is to ignore them, + because they can’t disappear immediately. The same thing is for + startups and ideas. If you have an idea right away after it + appears in your mind you should go and make a first step to + implement it. + + + + + + + + + + + Why don't use Lore Ipsum? I think if some one says don't use + lore ipsum it's very controversial point. I think the opposite + actually. Everyone knows what is lore ipsum - it is easy to + understand if text is lore ipsum. + + + If you will think too much it will sink in the swamp of never + implemented plans and ideas or will just go away or will be + implemented by someone else. 5 months of doing everything to + achieve nothing. You'll automatically skip - because you know - + it's just non-informative stub. But what if there some text like + this one? + + + + + + + + } + aria-controls="panel1a-content" + id="panel1a-header"> + + Expansion Panel 1 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + } + aria-controls="panel2a-content" + id="panel2a-header"> + + Expansion Panel 2 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + } + aria-controls="panel3a-content" + id="panel3a-header"> + + Disabled Expansion Panel + + + + + + + + + } + aria-controls="panel1a-content" + id="panel1a-header"> + + Expansion Panel 1 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + } + aria-controls="panel2a-content" + id="panel2a-header"> + + Expansion Panel 2 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + } + aria-controls="panel3a-content" + id="panel3a-header"> + + Disabled Expansion Panel + + + + + +
); + +} \ No newline at end of file diff --git a/src/pages/tabs/package.json b/src/pages/tabs/package.json new file mode 100644 index 0000000..c6ce0fd --- /dev/null +++ b/src/pages/tabs/package.json @@ -0,0 +1,6 @@ +{ + "name": "Tabs", + "version": "1.0.0", + "main": "Tabs.js", + "license": "MIT" +} diff --git a/src/pages/tabs/styles.js b/src/pages/tabs/styles.js new file mode 100644 index 0000000..e2c4734 --- /dev/null +++ b/src/pages/tabs/styles.js @@ -0,0 +1,10 @@ +import { makeStyles } from 'styles/mui'; + +export default makeStyles(theme => ( + { + expansion: { + backgroundColor: theme.palette.primary.light, + color: 'white ' + } + } +)) \ No newline at end of file diff --git a/src/pages/tabs/yarn.lock b/src/pages/tabs/yarn.lock new file mode 100644 index 0000000..5fca6e8 --- /dev/null +++ b/src/pages/tabs/yarn.lock @@ -0,0 +1,174 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + dependencies: + regenerator-runtime "^0.13.2" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +dom-helpers@^3.2.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + dependencies: + "@babel/runtime" "^7.1.2" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +fbjs@^0.8.4: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + +keycode@^2.1.7: + version "2.2.0" + resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" + +loose-envify@^1.0.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.5.4, prop-types@^15.6.0: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +react-event-listener@^0.6.0: + version "0.6.6" + resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.6.tgz#758f7b991cad9086dd39fd29fad72127e1d8962a" + dependencies: + "@babel/runtime" "^7.2.0" + prop-types "^15.6.0" + warning "^4.0.1" + +react-is@^16.8.1: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" + +react-swipeable-views-core@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.13.1.tgz#8829a922462a8bdd701709cd1b385393d38f1527" + dependencies: + "@babel/runtime" "7.0.0" + warning "^4.0.1" + +react-swipeable-views-utils@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.13.3.tgz#c234d8d836bb085803631a9fef0adb2f9597221f" + dependencies: + "@babel/runtime" "7.0.0" + fbjs "^0.8.4" + keycode "^2.1.7" + prop-types "^15.6.0" + react-event-listener "^0.6.0" + react-swipeable-views-core "^0.13.1" + +react-swipeable-views@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.13.3.tgz#2ad886767c6b2de88000606a14bedde12156e6d0" + dependencies: + "@babel/runtime" "7.0.0" + dom-helpers "^3.2.1" + prop-types "^15.5.4" + react-swipeable-views-core "^0.13.1" + react-swipeable-views-utils "^0.13.3" + warning "^4.0.1" + +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +ua-parser-js@^0.7.18: + version "0.7.20" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" + +warning@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + dependencies: + loose-envify "^1.0.0" + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" diff --git a/src/pages/timeline/Timeline.js b/src/pages/timeline/Timeline.js new file mode 100644 index 0000000..90cd0b5 --- /dev/null +++ b/src/pages/timeline/Timeline.js @@ -0,0 +1,387 @@ +import React from "react"; +import { + Grid, + Box, + IconButton, + Divider, + Collapse, + CardContent, + TextField as Input } from +"@mui/material"; +import { Navigation as NavigationIcon } from "@mui/icons-material"; +import { + Favorite as LikeIcon, + Chat as CommentsIcon, + ChatBubble as ChatIcon, + FreeBreakfast as BreakfastIcon } from +"@mui/icons-material"; +import useStyles from "./styles"; + +//images +import img1 from "../../images/timeline/a2.jpg"; +import img2 from "../../images/timeline/a3.jpg"; +import img3 from "../../images/timeline/profile.jpg"; +import img4 from "../../images/timeline/a4.jpg"; +import img5 from "../../images/timeline/a1.jpg"; +import mountains from "../../images/timeline/mountains.jpeg"; + +//components +import { Typography, Avatar, Link, Button } from "../../components/Wrappers"; +import { Annotation, Timestep, Circle } from "../../components/Timeline"; +import Widget from "../../components/Widget"; + +// const BasicMap = withScriptjs( +// withGoogleMap(() => ( +// +// +// +// )) +// ); + +export default function TimelineComp() { + const classes = useStyles(); + const [expanded, setExpanded] = React.useState(false); + + const handleExpandClick = () => { + setExpanded(!expanded); + }; + return ( + <> + + + + + + + + + + + + + Jessica Nilson @jess + + + 10:12 am - Publicly near Minsk + + + + {/**/} + {/* */} + {/* }*/} + {/* containerElement={*/} + {/* */} + {/* }*/} + {/* mapElement={
}*/} + {/* />*/} + {/**/} + + + + + + + + + + + + + + + + Jessica Nilson + {" "} + + + 7 mins ago + + + + Someone said they were the best people out there just + few years ago. Don't know better options. + + + + + + + + + + + Ignacio Abad + {" "} + + + 6 mins ago + + + + True. Heard absolutely the same. + + + + + + + P + + + + + + + + + + + + + + + + + + + + + + + + + + Bob Nilson + {" "} + @nils + + + February 22, 2014 at 01:59 PM + + + + + There is no such thing as maturity. There is instead an + ever-evolving process of maturing. Because when there is a + maturity, there is ... + + + + + + + + + + + + + + + + + + + + + + Jessica Smith @jess + + + February 22, 2014 at 01:59 PM + + + + Check out this awesome photo I made in Italy last + summer. Seems it was lost somewhere deep inside my + brand new HDD 40TB. Thanks god I found it! + + + + + + mountains + + + + + + + + + + + + + + + + + + + + + + + Ignacio Abad + {" "} + + + 6 mins ago + + + + Hey, have you heard anything about that? + + + + + + + P + + + + + + + + + + + + + + + J + + + + + + + + + Jessica Smith + {" "} + @jess + + + 9:03 am - Publicly near Minsk + + + + + + New Project Launch + + + Let's try something different this time. Hey, do you + wanna join us tonight? We're planning to a launch a new + project soon. Want to discuss with all of you... + + + + + + + + Finished her are its honoured drawings nor. Pretty + see mutual thrown all not edward ten. Particular an + boisterous up he reasonably frequently. Several any + had enjoyed shewing studied two. Up intention + remainder sportsmen behaviour ye happiness. Few + again any alone style added abode ask. Nay + projecting unpleasing boisterous eat discovered + solicitude. Own six moments produce elderly pasture + far arrival. Hold our year they ten upon. Gentleman + contained so intention sweetness in on resolving. + + + Finished her are its honoured drawings nor. Pretty + see mutual thrown all not edward ten. Particular an + boisterous up he reasonably frequently. Several any + had enjoyed shewing studied two. Up intention + remainder sportsmen behaviour ye happiness. Few + again any alone style added abode ask. Nay + projecting unpleasing boisterous eat discovered + solicitude. Own six moments produce elderly pasture + far arrival. Hold our year they ten upon. Gentleman + contained so intention sweetness in on resolving. + + + Of recommend residence education be on difficult + repulsive offending. Judge views had mirth table + seems great him for her. + + + + + + + + + + + + + + + + + + + + ); + +} \ No newline at end of file diff --git a/src/pages/timeline/package.json b/src/pages/timeline/package.json new file mode 100644 index 0000000..cbe96b2 --- /dev/null +++ b/src/pages/timeline/package.json @@ -0,0 +1,6 @@ +{ + "name": "timeline", + "version": "1.0.0", + "main": "Timeline.js", + "license": "MIT" +} diff --git a/src/pages/timeline/styles.js b/src/pages/timeline/styles.js new file mode 100644 index 0000000..e705405 --- /dev/null +++ b/src/pages/timeline/styles.js @@ -0,0 +1,16 @@ +import { makeStyles } from 'styles/mui' + +export default makeStyles(theme => ({ + icon: { + fontSize: theme.spacing(2) + }, + divider: { + margin: `0px -${theme.spacing(3)}px` + }, + wrapper: { + "& > *": { paddingTop: theme.spacing(5) }, + "& > :first-child": { + paddingTop: 0, + }, + } +})) \ No newline at end of file diff --git a/src/pages/tooltips/Tooltips.js b/src/pages/tooltips/Tooltips.js new file mode 100644 index 0000000..7ec3926 --- /dev/null +++ b/src/pages/tooltips/Tooltips.js @@ -0,0 +1,560 @@ +import React from "react"; +import { + Grid, + Box, + ClickAwayListener, + Popover, + Button as ButtonNative } from +"@mui/material"; +import cn from "classnames"; + +// components +import Widget from "../../components/Widget"; +import { Tooltip, Typography } from "../../components/Wrappers"; +import useStyles from "./styles"; + +const reducer = (state, action) => { + switch (action.type) { + case "OPEN_TOOLTIP": + return { + ...state, + tooltipOpened: true + }; + case "CLOSE_TOOLTIP": + return { + ...state, + tooltipOpened: false + }; + case "OPEN_POPOVER": + return { + ...state, + togglePopover: true, + popoverSibling: action.setSibling + }; + case "CLOSE_POPOVER": + return { + ...state, + togglePopover: false, + popoverSibling: null + }; + case "OPEN_HOVER_POPOVER": + return { + ...state, + toggleHoverPopover: true, + hoverPopoverSibling: action.setHoverPopoverSibling + }; + case "CLOSE_HOVER_POPOVER": + return { + ...state, + toggleHoverPopover: false, + hoverPopoverSibling: null + }; + case "OPEN_TOP_TOOLTIP": + return { + ...state, + toggleTopTooltip: true + }; + case "CLOSE_TOP_TOOLTIP": + return { + ...state, + toggleTopTooltip: false + }; + case "OPEN_RIGHT_TOOLTIP": + return { + ...state, + toggleRightTooltip: true + }; + case "CLOSE_RIGHT_TOOLTIP": + return { + ...state, + toggleRightTooltip: false + }; + case "OPEN_BOTTOM_TOOLTIP": + return { + ...state, + toggleBottomTooltip: true + }; + case "CLOSE_BOTTOM_TOOLTIP": + return { + ...state, + toggleBottomTooltip: false + }; + case "OPEN_LEFT_TOOLTIP": + return { + ...state, + toggleLeftTooltip: true + }; + case "CLOSE_LEFT_TOOLTIP": + return { + ...state, + toggleLeftTooltip: false + }; + case "OPEN_TOP_POPOVER": + return { + ...state, + toggleTopPopover: true, + topPopoverSibling: action.setTopPopoverSibling + }; + case "CLOSE_TOP_POPOVER": + return { + ...state, + toggleTopPopover: false, + topPopoverSibling: null + }; + case "OPEN_RIGHT_POPOVER": + return { + ...state, + toggleRightPopover: true, + rightPopoverSibling: action.setRightPopoverSibling + }; + case "CLOSE_RIGHT_POPOVER": + return { + ...state, + toggleRightPopover: false, + rightPopoverSibling: null + }; + case "OPEN_BOTTOM_POPOVER": + return { + ...state, + toggleBottomPopover: true, + bottomPopoverSibling: action.setBottomPopoverSibling + }; + case "CLOSE_BOTTOM_POPOVER": + return { + ...state, + toggleBottomPopover: false, + bottomPopoverSibling: null + }; + case "OPEN_LEFT_POPOVER": + return { + ...state, + toggleLeftPopover: true, + leftPopoverSibling: action.setLeftPopoverSibling + }; + case "CLOSE_LEFT_POPOVER": + return { + ...state, + toggleLeftPopover: false, + leftPopoverSibling: null + }; + default: + return {}; + } +}; + +export default function TooltipsComp() { + const classes = useStyles(); + const [state, dispatch] = React.useReducer(reducer, false); + + return ( +
+ + + + + + dispatch({ type: "CLOSE_TOOLTIP" })}> + +
+ dispatch({ type: "CLOSE_TOOLTIP" })} + open={state.tooltipOpened || false} + disableFocusListener + disableHoverListener + disableTouchListener + title="Add"> + + dispatch({ type: "OPEN_TOOLTIP" })} + className={cn(classes.button, classes.buttonWhite)}> + + Click to toggle a tooltip + + +
+
+ + + + + Hover to toggle a tooltip + + +
+
+
+
+ + + + + {" "} + + + + dispatch({ + type: "OPEN_POPOVER", + setSibling: e.currentTarget + }) + }> + + Open Popover + + dispatch({ type: "CLOSE_POPOVER" })} + anchorOrigin={{ + vertical: "bottom", + horizontal: "center" + }} + transformOrigin={{ + vertical: "top", + horizontal: "center" + }}> + + + The content of the Popover. + + + + + + dispatch({ + type: "OPEN_HOVER_POPOVER", + setHoverPopoverSibling: e.currentTarget + }) + } + onMouseLeave={() => + dispatch({ type: "CLOSE_HOVER_POPOVER" }) + }> + + Hover with a Popover. + + dispatch({ type: "CLOSE_HOVER_POPOVER" })} + disableRestoreFocus> + + + I use Popover. + + + + + + + + + + + dispatch({ type: "CLOSE_TOP_TOOLTIP" })}> + +
+ dispatch({ type: "CLOSE_TOP_TOOLTIP" })} + open={state.toggleTopTooltip || false} + disableFocusListener + disableHoverListener + disableTouchListener + title="Add"> + + dispatch({ type: "OPEN_TOP_TOOLTIP" })} + className={cn(classes.button, classes.buttonWhite)}> + + Tooltip on top + + +
+
+ dispatch({ type: "CLOSE_RIGHT_TOOLTIP" })}> + +
+ dispatch({ type: "CLOSE_RIGHT_TOOLTIP" })} + open={state.toggleRightTooltip || false} + disableFocusListener + disableHoverListener + disableTouchListener + title="Add"> + + dispatch({ type: "OPEN_RIGHT_TOOLTIP" })} + className={cn(classes.button, classes.buttonWhite)}> + + Tooltip on right + + +
+
+ dispatch({ type: "CLOSE_BOTTOM_TOOLTIP" })}> + +
+ dispatch({ type: "CLOSE_BOTTOM_TOOLTIP" })} + open={state.toggleBottomTooltip || false} + disableFocusListener + disableHoverListener + disableTouchListener + title="Add"> + + dispatch({ type: "OPEN_BOTTOM_TOOLTIP" })} + className={cn(classes.button, classes.buttonWhite)}> + + Tooltip on bottom + + +
+
+ dispatch({ type: "CLOSE_LEFT_TOOLTIP" })}> + +
+ dispatch({ type: "CLOSE_LEFT_TOOLTIP" })} + open={state.toggleLeftTooltip || false} + disableFocusListener + disableHoverListener + disableTouchListener + title="Add"> + + dispatch({ type: "OPEN_LEFT_TOOLTIP" })} + className={cn(classes.button, classes.buttonWhite)}> + + Tooltip on left + + +
+
+
+
+
+ + + + {" "} + + + + dispatch({ + type: "OPEN_TOP_POPOVER", + setTopPopoverSibling: e.currentTarget + }) + }> + + Popover on top + + dispatch({ type: "CLOSE_TOP_POPOVER" })} + anchorOrigin={{ + vertical: "top", + horizontal: "center" + }} + transformOrigin={{ + vertical: "bottom", + horizontal: "center" + }}> + + + The content of the Popover. + + + + + + dispatch({ + type: "OPEN_RIGHT_POPOVER", + setRightPopoverSibling: e.currentTarget + }) + }> + + Popover on right + + dispatch({ type: "CLOSE_RIGHT_POPOVER" })} + anchorOrigin={{ + vertical: "center", + horizontal: "right" + }} + transformOrigin={{ + vertical: "center", + horizontal: "left" + }}> + + + The content of the Popover. + + + + + + dispatch({ + type: "OPEN_BOTTOM_POPOVER", + setBottomPopoverSibling: e.currentTarget + }) + }> + + Popover on bottom + + dispatch({ type: "CLOSE_BOTTOM_POPOVER" })} + anchorOrigin={{ + vertical: "bottom", + horizontal: "center" + }} + transformOrigin={{ + vertical: "top", + horizontal: "center" + }}> + + + The content of the Popover. + + + + + + dispatch({ + type: "OPEN_LEFT_POPOVER", + setLeftPopoverSibling: e.currentTarget + }) + }> + + Popover on left + + dispatch({ type: "CLOSE_LEFT_POPOVER" })} + anchorOrigin={{ + vertical: "center", + horizontal: "left" + }} + transformOrigin={{ + vertical: "center", + horizontal: "right" + }}> + + + The content of the Popover. + + + + + + + +
+
); + +} \ No newline at end of file diff --git a/src/pages/tooltips/package.json b/src/pages/tooltips/package.json new file mode 100644 index 0000000..f349440 --- /dev/null +++ b/src/pages/tooltips/package.json @@ -0,0 +1,6 @@ +{ + "name": "Tooltips", + "version": "1.0.0", + "main": "Tooltips.js", + "license": "MIT" +} diff --git a/src/pages/tooltips/styles.js b/src/pages/tooltips/styles.js new file mode 100644 index 0000000..a9d9b3c --- /dev/null +++ b/src/pages/tooltips/styles.js @@ -0,0 +1,18 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + button: { + boxShadow: theme.customShadows.widget, + color: theme.palette.text.primary, + margin: theme.spacing(1), + "&:hover": { + boxShadow: theme.customShadows.widgetWide + } + }, + buttonWhite: { + color: "white" + }, + typography: { + padding: theme.spacing(2) + } +})); diff --git a/src/pages/typography/Typography.js b/src/pages/typography/Typography.js new file mode 100644 index 0000000..15e2c41 --- /dev/null +++ b/src/pages/typography/Typography.js @@ -0,0 +1,125 @@ +import { Grid } from "@mui/material"; + +// styles +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget"; +import { Typography } from "../../components/Wrappers"; + +export default function TypographyPage() { + let classes = useStyles(); + + return ( + <> + + + +
+ + h1. Heading + + + h2. Heading + + + h3. Heading + + + h4. Heading + + + h5. Heading + + h6. Heading +
+
+
+ + +
+ + h1. Heading + + + h2. Heading + + + + h3. Heading + + + h4. Heading + + + + h5. Heading + + + h6. Heading + +
+
+
+ + +
+ Basic text + + Basic light text + + + Basic medium text + + + Basic bold text + + + BASIC UPPERCASE TEXT + + + basic lowercase text + + + Basic Capitalized Text + + + Basic Cursive Text + +
+
+
+ + +
+ + Heading Typography SM Font Size + + + Heading Typography Regular Font Size + + + Heading Typography MD Font Size + + + Heading Typography XL Font Size + + + Heading Typography XXL Font Size + +
+
+
+
+ ); + +} + +export { useStyles }; \ No newline at end of file diff --git a/src/pages/typography/package.json b/src/pages/typography/package.json new file mode 100644 index 0000000..4c3c7d1 --- /dev/null +++ b/src/pages/typography/package.json @@ -0,0 +1,6 @@ +{ + "name": "Typography", + "version": "0.0.0", + "main": "Typography.js", + "private": true +} diff --git a/src/pages/typography/styles.js b/src/pages/typography/styles.js new file mode 100644 index 0000000..e1b3835 --- /dev/null +++ b/src/pages/typography/styles.js @@ -0,0 +1,15 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + dashedBorder: { + border: "1px dashed", + borderColor: theme.palette.primary.main, + padding: theme.spacing(2), + paddingTop: theme.spacing(4), + paddingBottom: theme.spacing(4), + marginTop: theme.spacing(1), + }, + text: { + marginBottom: theme.spacing(2), + }, +})); diff --git a/src/pages/user/AddUser.js b/src/pages/user/AddUser.js new file mode 100644 index 0000000..bbc30f7 --- /dev/null +++ b/src/pages/user/AddUser.js @@ -0,0 +1,601 @@ +import React from 'react'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import TextField from '@mui/material/TextField'; +import FormControl from '@mui/material/FormControl'; +import InputLabel from '@mui/material/InputLabel'; +import Select from '@mui/material/Select'; +import MenuItem from '@mui/material/MenuItem'; +import FormHelperText from '@mui/material/FormHelperText'; +import { useNavigate } from 'react-router-dom'; +import useStyles from './styles'; +import { toast } from 'react-toastify'; +import Axios from 'axios'; +import config from '../../config'; +import uuid from 'uuid/v4'; + +import Notification from "../../components/Notification"; + +import { Button, Typography } from '../../components/Wrappers'; +import Widget from '../../components/Widget'; + +import { actions } from '../../context/ManagementContext'; +import { + useManagementDispatch } from +'../../context/ManagementContext'; + + +function getSteps() { + return ['Create Account', 'User Details', 'Business Details', 'Social']; +} + +function getStepContent(step) { + switch (step) { + case 0: + return 'Create New Account'; + case 1: + return 'Create User Details'; + case 2: + return 'Business Details'; + case 3: + return 'Social'; + default: + return ''; + } +} + +const AddUser = () => { + const [activeStep, setActiveStep] = React.useState(0); + const [skipped, setSkipped] = React.useState(new Set()); + const [newUser, setNewUser] = React.useState({ + avatars: [], + disabled: null, + email: '', + emailVerificationToken: null, + emailVerificationTokenExpiresAt: null, + emailVerified: true, + firstName: '', + fullName: '', + lastName: '', + password: null, + passwordResetToken: null, + passwordResetTokenExpiresAt: null, + phoneNumber: '', + role: 'user' + }); + function handleChange(e) { + setNewUser({ + ...newUser, + [e.target.name]: e.target.value + }); + } + const fileInput = React.useRef(null); + const steps = getSteps(); + const classes = useStyles(); + + function extractExtensionFrom(filename) { + if (!filename) { + return null; + } + + const regex = /(?:\.([^.]+))?$/; + return regex.exec(filename)[1]; + } + + const uploadToServer = async (file, path, filename) => { + const formData = new FormData(); + formData.append('file', file); + formData.append('filename', filename); + const uri = `${config.baseURLApi}/file/upload/${path}`; + await Axios.post(uri, formData, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + + const privateUrl = `${path}/${filename}`; + + return `${config.baseURLApi}/file/download?privateUrl=${privateUrl}`; + }; + + const handleFile = async (event) => { + const file = event.target.files[0]; + + const extension = extractExtensionFrom(file.name); + const id = uuid(); + const filename = `${id}.${extension}`; + const privateUrl = `users/avatar/${filename}`; + + const publicUrl = await uploadToServer( + file, + 'users/avatar', + filename + ); + let avatarObj = { + id: id, + name: file.name, + sizeInBytes: file.size, + privateUrl, + publicUrl, + new: true + }; + + setNewUser({ + ...newUser, + avatars: [...newUser.avatars, avatarObj] + }); + + return; + }; + const isStepSkipped = (step) => { + return skipped.has(step); + }; + + var managementDispatch = useManagementDispatch(); + const navigate = useNavigate(); + const doSubmit = (id, data) => { + actions.doCreate(data, navigate)(managementDispatch); + + }; + + const handleNext = () => { + let newSkipped = skipped; + if (isStepSkipped(activeStep)) { + newSkipped = new Set(newSkipped.values()); + newSkipped.delete(activeStep); + } + + setActiveStep((prevActiveStep) => prevActiveStep + 1); + setSkipped(newSkipped); + + if (activeStep === 3) { + doSubmit(null, newUser); + sendNotification(); + } + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const deleteOneImage = (id) => { + setNewUser({ + ...newUser, + avatars: newUser.avatars.filter((avatar) => avatar.id !== id) + }); + }; + + function sendNotification() { + const componentProps = { + type: "feedback", + message: "User added!", + variant: "contained", + color: "success" + }; + const options = { + type: "info", + position: toast.POSITION.TOP_RIGHT, + progressClassName: classes.progress, + className: classes.notification, + timeOut: 1000 + }; + return toast( + , + + options + ); + } + return ( + + + + + {steps.map((label, index) => { + const stepProps = {}; + const labelProps = {}; + if (isStepSkipped(index)) { + stepProps.completed = false; + } + return ( + + + {label} + + ); + + })} + + + + + + + + + + + {getStepContent(activeStep)} + + {activeStep === 0 ? + <> + + + + + + + + + + Role + + + + + Please choose the role + + + : + activeStep === 1 ? + <> + + Photo: + +
+ {newUser && newUser.avatars && newUser.avatars.length !== 0 ? + newUser.avatars.map((avatar) => +
+ deleteOneImage(avatar.id)}>× + avatar + +
+ ) : + null} +
+ + + + .PNG, .JPG, .JPEG + + + + + + + + + + + + + Country + + + + + Choose your role + + + + + + State + + + + + Choose your state + + + + + + City + + + + + Choose your city + + + + + : + activeStep === 2 ? + <> + + + + + + + + + : + + <> + + + + + + + + + + + + + + } +
+
+ {activeStep === 0 ? + + + + : + + + + + + + } +
+
+
+
+
+
+
); + +}; + +export default AddUser; diff --git a/src/pages/user/EditUser.js b/src/pages/user/EditUser.js new file mode 100644 index 0000000..4659995 --- /dev/null +++ b/src/pages/user/EditUser.js @@ -0,0 +1,440 @@ +import React, { useEffect } from 'react'; +import { Grid, Box, TextField } from '@mui/material'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import { useLocation, useNavigate, useParams } from 'react-router-dom'; +import Checkbox from '@mui/material/Checkbox'; +import Switch from '@mui/material/Switch'; +import useStyles from './styles'; + +import { + PersonOutline as PersonOutlineIcon, + Lock as LockIcon } from +'@mui/icons-material'; +import { v4 as uuid } from 'uuid'; + +import Widget from '../../components/Widget'; +import { Typography, Button } from '@mui/material'; +import Select from '@mui/material/Select'; +import MenuItem from '@mui/material/MenuItem'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import InputLabel from '@mui/material/InputLabel'; + +import { + useManagementDispatch, + useManagementState } from +'../../context/ManagementContext'; +import config from '../../config'; +import Axios from 'axios'; + +import { actions } from '../../context/ManagementContext'; +import { showSnackbar } from '../../components/Snackbar'; + +const EditUser = () => { + const classes = useStyles(); + const [tab, setTab] = React.useState(0); + const [password, setPassword] = React.useState({ + newPassword: '', + confirmPassword: '', + currentPassword: '' + }); + const [data, setData] = React.useState(null); + const [editable, setEditable] = React.useState(false); + let { id } = useParams(); + const fileInput = React.useRef(null); + const handleChangeTab = (event, newValue) => { + setTab(newValue); + }; + const location = useLocation(); + const managementDispatch = useManagementDispatch(); + const managementValue = useManagementState(); + + function extractExtensionFrom(filename) { + if (!filename) { + return null; + } + + const regex = /(?:\.([^.]+))?$/; + return regex.exec(filename)[1]; + } + + const uploadToServer = async (file, path, filename) => { + const formData = new FormData(); + formData.append('file', file); + formData.append('filename', filename); + const uri = `/file/upload/${path}`; + await Axios.post(uri, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); + + const privateUrl = `${path}/${filename}`; + + return `${config.baseURLApi}/file/download?privateUrl=${privateUrl}`; + }; + + const handleFile = async (event) => { + const file = event.target.files[0]; + + const extension = extractExtensionFrom(file.name); + const id = uuid(); + const filename = `${id}.${extension}`; + const privateUrl = `users/avatar/${filename}`; + + const publicUrl = await uploadToServer(file, 'users/avatar', filename); + let avatarObj = { + id: id, + name: file.name, + sizeInBytes: file.size, + privateUrl, + publicUrl, + new: true + }; + + setData({ + ...data, + avatar: [...data.avatar, avatarObj] + }); + + return null; + }; + const navigate = useNavigate(); + + useEffect(() => { + actions.doFind(sessionStorage.getItem('user_id'))(managementDispatch); + }, []); + + useEffect(() => { + if (location.pathname.includes('edit')) { + setEditable(true); + } + }, [location.pathname]); + + useEffect(() => { + setData(managementValue.currentUser); + }, [managementDispatch, managementValue, id]); + + const deleteOneImage = (id) => { + setData({ + ...data, + avatar: data.avatar.filter((avatar) => avatar.id !== id) + }); + }; + + function handleSubmit() { + actions.doUpdate( + sessionStorage.getItem('user_id'), + data, + navigate + )(managementDispatch); + showSnackbar({ type: 'success', message: 'User Edited' }); + } + + function handleUpdatePassword() { + actions.doChangePassword(password)(managementDispatch); + } + + function handleChangePassword(e) { + setPassword({ + ...password, + [e.target.name]: e.target.value + }); + } + + function handleChange(e) { + setData({ + ...data, + [e.target.name]: e.target.value + }); + } + + return ( + + + + + + + } + classes={{ wrapper: classes.icon }} /> + + } + classes={{ wrapper: classes.icon }} /> + + } + classes={{ wrapper: classes.icon }} /> + + + + + + + + + + {tab === 0 ? + <> + + + Account + + + + + + + + Role + + + + : + tab === 1 ? + <> + + + Personal Information + + Photo: +
+ {data && data.avatar && data.avatar.length !== 0 ? + data.avatar.map((avatar) => +
+ deleteOneImage(avatar.id)}> + + avatar + +
+ ) : + null} +
+ + + + .PNG, .JPG, .JPEG + + + + + + + + + + : + tab === 2 ? + <> + + + Password + + + + + + + + : + + <> + + + Settings + + + + + Communication: + + + } + label='Email' /> + + } + label='Messages' /> + + } + label='Phone' /> + + + + + Email notification + + + + + + Send copy to personal email + + + + + } + {editable && + + {tab !== 2 ? + <> + + + : + + <> + + + + } + + } +
+
+
+
+
); + +}; + +export default EditUser; diff --git a/src/pages/user/UserList.js b/src/pages/user/UserList.js new file mode 100644 index 0000000..c07df55 --- /dev/null +++ b/src/pages/user/UserList.js @@ -0,0 +1,552 @@ +import React from 'react'; +import { + Grid, + Box, + InputAdornment, + Dialog, + DialogActions, + DialogContent, + DialogContentText, + DialogTitle, + TextField as Input } from +'@mui/material'; +import dayjs from 'utils/dayjs'; +import Widget from '../../components/Widget'; +import { Button } from '../../components/Wrappers'; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TablePagination from '@mui/material/TablePagination'; +import TableRow from '@mui/material/TableRow'; +import TableSortLabel from '@mui/material/TableSortLabel'; +import Checkbox from '@mui/material/Checkbox'; +import IconButton from '@mui/material/IconButton'; +import DeleteIcon from '@mui/icons-material/DeleteOutlined'; +import Notification from '../../components/Notification/Notification'; +import { toast } from 'react-toastify'; + +import { Typography, Chip, Avatar, Link } from '../../components/Wrappers'; +import { + useManagementDispatch, + useManagementState } from +'../../context/ManagementContext'; + +import useStyles from './styles'; +// Icons +import { + Add as AddIcon, + GetApp as DownloadIcon, + Search as SearchIcon, + CreateOutlined as CreateIcon, + HelpOutline as HelpIcon } from +'@mui/icons-material'; + +import { actions } from '../../context/ManagementContext'; + + + +function descendingComparator(a, b, orderBy) { + if (b[orderBy] < a[orderBy]) { + return -1; + } + if (b[orderBy] > a[orderBy]) { + return 1; + } + return 0; +} + +function getComparator(order, orderBy) { + return order === 'desc' ? + (a, b) => descendingComparator(a, b, orderBy) : + (a, b) => -descendingComparator(a, b, orderBy); +} + +function stableSort(array, comparator) { + const stabilizedThis = array.map((el, index) => [el, index]); + stabilizedThis.sort((a, b) => { + const order = comparator(a[0], b[0]); + if (order !== 0) return order; + return a[1] - b[1]; + }); + return stabilizedThis.map((el) => el[0]); +} + +const headCells = [ +{ id: 'id', numeric: true, disablePadding: true, label: 'ID' }, +{ id: 'name', numeric: true, disablePadding: false, label: 'NAME' }, +{ id: 'role', numeric: true, disablePadding: false, label: 'ROLE' }, +{ + id: 'companyName', + numeric: true, + disablePadding: false, + label: 'COMPANY NAME' +}, +{ id: 'email', numeric: true, disablePadding: false, label: 'EMAIL' }, +{ id: 'status', numeric: true, disablePadding: false, label: 'STATUS' }, +{ + id: 'created', + numeric: false, + disablePadding: false, + label: 'CREATED AT' +}, +{ id: 'actions', numeric: true, disablePadding: false, label: 'ACTIONS' }]; + + +function EnhancedTableHead(props) { + const { + onSelectAllClick, + order, + orderBy, + numSelected, + rowCount, + onRequestSort + } = props; + const createSortHandler = (property) => (event) => { + onRequestSort(event, property); + }; + + return ( + + + + 0 && numSelected < rowCount + } + checked={rowCount > 0 && numSelected === rowCount} + onChange={onSelectAllClick} + inputProps={{ 'aria-label': 'select all desserts' }} /> + + + {headCells.map((headCell) => + + + + + + + {headCell.label} + + + + )} + + ); + +} + +const UserList = () => { + const [order, setOrder] = React.useState('asc'); + const [orderBy, setOrderBy] = React.useState('calories'); + const [selected, setSelected] = React.useState([]); + const [page, setPage] = React.useState(0); + // eslint-disable-next-line no-unused-vars + const [dense, setDense] = React.useState(false); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + const [usersRows, setUsersRows] = React.useState([]); + + var managementDispatch = useManagementDispatch(); + var managementValue = useManagementState(); + const openModal = (cell) => { + actions.doOpenConfirm(cell)(managementDispatch); + }; + + const closeModal = () => { + actions.doCloseConfirm()(managementDispatch); + }; + + const handleDelete = () => { + actions.doDelete(managementValue.idToDelete)(managementDispatch); + sendNotification('User deleted'); + }; + + React.useEffect(() => { + sendNotification('This page is only available in React Material Admin Full with Node.js integration!'); + async function fetchAPI() { + try { + await actions.doFetch({}, false)(managementDispatch); + setUsersRows(managementValue.rows); + } catch (e) { + console.log(e); + } + } + fetchAPI(); + }, []); + + const classes = useStyles(); + + function sendNotification(text) { + const componentProps = { + type: "feedback", + message: text, + variant: "contained", + color: "success" + }; + const options = { + type: "info", + position: toast.POSITION.TOP_RIGHT, + progressClassName: classes.progress, + className: classes.notification, + timeOut: 1000 + }; + return toast( + , + + options + ); + } + + React.useEffect(() => { + setUsersRows(managementValue.rows); + }, [managementValue.rows]); + + const handleRequestSort = (event, property) => { + const isAsc = orderBy === property && order === 'asc'; + setOrder(isAsc ? 'desc' : 'asc'); + setOrderBy(property); + }; + + const handleSelectAllClick = (event) => { + if (event.target.checked) { + const newSelecteds = managementValue.rows.map((n) => n.id); + setSelected(newSelecteds); + return; + } + setSelected([]); + }; + + const handleClick = (event, name) => { + const selectedIndex = selected.indexOf(name); + let newSelected = []; + + if (selectedIndex === -1) { + newSelected = newSelected.concat(selected, name); + } else if (selectedIndex === 0) { + newSelected = newSelected.concat(selected.slice(1)); + } else if (selectedIndex === selected.length - 1) { + newSelected = newSelected.concat(selected.slice(0, -1)); + } else if (selectedIndex > 0) { + newSelected = newSelected.concat( + selected.slice(0, selectedIndex), + selected.slice(selectedIndex + 1) + ); + } + + setSelected(newSelected); + }; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + const isSelected = (name) => selected.indexOf(name) !== -1; + + const emptyRows = + rowsPerPage - Math.min(rowsPerPage, usersRows.length - page * rowsPerPage); + + const handleSearch = (e) => { + const newArr = usersRows.filter((c) => { + return c.name + .toLowerCase() + .includes(e.currentTarget.value.toLowerCase()); + }); + setUsersRows(newArr); + }; + + return ( + + + + + Are you sure that you want to delete user? + + + + User will be deleted. + + + + + + + + + + + + + + + + + + + + handleSearch(e)} + InputProps={{ + startAdornment: + + + + + }} /> + + + + + + + + + + + + + + {stableSort( + usersRows, + getComparator(order, orderBy) + ) + .slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + .map((row, index) => { + const isItemSelected = isSelected( + row.id + ); + const labelId = `enhanced-table-checkbox-${index}`; + return ( + + handleClick(event, row.id) + } + role="checkbox" + aria-checked={isItemSelected} + tabIndex={-1} + key={row.id} + selected={isItemSelected}> + + + + + + + + + + {index + 1} + + + + + + {!row.avatars.length ? + + + {row.email.charAt(0).toUpperCase()} + : + + + + } + + + {row.name} + + + + + + + {row.role} + + + + + + Flatlogic + + + + + + {row.email} + + + + + + + + + + {dayjs(row.createdAt).format('YYYY-DD-MM')} + + + + + + + + + + + + + + + + + + openModal(row.id)} + color={'primary'}> + + + + + + ); + + })} + {emptyRows > 0 && + + + + + } + +
+
+ + +
+
+
); + +}; + +export default UserList; diff --git a/src/pages/user/package.json b/src/pages/user/package.json new file mode 100644 index 0000000..36182d5 --- /dev/null +++ b/src/pages/user/package.json @@ -0,0 +1,6 @@ +{ + "name": "user", + "version": "1.0.0", + "main": "UserList.js", + "license": "MIT" +} diff --git a/src/pages/user/styles.js b/src/pages/user/styles.js new file mode 100644 index 0000000..cf82b63 --- /dev/null +++ b/src/pages/user/styles.js @@ -0,0 +1,119 @@ +import { makeStyles } from 'styles/mui'; +import tinycolor from 'tinycolor2'; + +export default makeStyles((theme) => ({ + icon: { + flexDirection: 'row', + alignItems: 'flex-start', + '& .MuiSvgIcon-root': { + marginRight: 5, + }, + }, + stepCompleted: { + root: { + color: 'green', + }, + }, + layoutContainer: { + height: 200, + display: 'flex', + flexDirection: 'column', + justifyContent: 'space-between', + alignItems: 'center', + marginTop: theme.spacing(2), + border: '1px dashed', + borderColor: theme.palette.primary.main, + position: 'relative', + }, + layoutText: { + color: tinycolor(theme.palette.background.light).darken().toHexString(), + }, + layoutButtonsRow: { + width: '100%', + display: 'flex', + justifyContent: 'space-between', + }, + layoutButton: { + backgroundColor: theme.palette.background.light, + width: 125, + height: 50, + outline: 'none', + border: 'none', + }, + layoutButtonActive: { + backgroundColor: tinycolor(theme.palette.background.light) + .darken() + .toHexString(), + }, + buttonsContainer: { + display: 'flex', + flexDirection: 'column', + alignItems: 'flex-start', + marginTop: theme.spacing(2), + }, + notificationCallButton: { + color: 'white', + marginBottom: theme.spacing(1), + textTransform: 'none', + }, + codeContainer: { + display: 'flex', + flexDirection: 'column', + marginTop: theme.spacing(2), + }, + codeComponent: { + flexGrow: 1, + }, + notificationItem: { + marginTop: theme.spacing(2), + }, + toastsContainer: { + width: 'auto', + marginTop: theme.spacing(6), + right: 0, + }, + progress: { + visibility: 'hidden', + }, + notification: { + display: 'flex', + alignItems: 'center', + background: 'transparent', + boxShadow: 'none', + overflow: 'visible', + }, + searchIcon: { + color: 'rgba(0, 0, 0, 0.23)', + }, + imgWrap: { + height: 100, + overflow: 'hidden', + borderRadius: 8, + boxShadow: '0 0 10px 0px #ccc', + marginRight: 20, + marginBottom: 20, + maxWidth: 125, + position: 'relative', + }, + galleryWrap: { + display: 'flex', + }, + uploadLabel: { + backgroundColor: tinycolor(theme.palette.primary.main), + color: '#f4f4f4', + maxWidth: 220, + display: 'inline-block', + borderRadius: 8, + textAlign: 'center', + padding: '8px 12px', + margin: '20px 0', + }, + deleteImageX: { + fontSize: 20, + position: 'absolute', + top: 5, + left: 5, + cursor: 'pointer', + lineHeight: 0.5, + }, +})); diff --git a/src/pages/user/usersField.js b/src/pages/user/usersField.js new file mode 100644 index 0000000..8c414d5 --- /dev/null +++ b/src/pages/user/usersField.js @@ -0,0 +1,56 @@ + + +const usersFields = { + id: { type: 'id', label: 'ID' }, +fullName: { type: 'string', label: 'Full Name', + + }, +firstName: { type: 'string', label: 'First Name', + + }, +lastName: { type: 'string', label: 'Last Name', + + }, +phoneNumber: { type: 'string', label: 'Phone Number', + + }, +email: { type: 'string', label: 'E-mail', + + }, +disabled: { type: 'boolean', label: 'Disabled', + + }, +role: { type: 'enum', label: 'Role', + + options: [ + + { value: 'admin', label: 'Admin' }, + { value: 'user', label: 'User' }, + ], + + }, +avatar: { type: 'images', label: 'Avatar', + + }, +password: { type: 'string', label: 'Password', + + }, +emailVerified: { type: 'boolean', label: 'emailVerified', + + }, +emailVerificationToken: { type: 'string', label: 'emailVerificationToken', + + }, +emailVerificationTokenExpiresAt: { type: 'datetime', label: 'emailVerificationTokenExpiresAt', + + }, +passwordResetToken: { type: 'string', label: 'passwordResetToken', + + }, +passwordResetTokenExpiresAt: { type: 'datetime', label: 'passwordResetTokenExpiresAt', + + }, + +} + +export default usersFields; diff --git a/src/pages/verify/Verify.js b/src/pages/verify/Verify.js new file mode 100644 index 0000000..e673dc0 --- /dev/null +++ b/src/pages/verify/Verify.js @@ -0,0 +1,20 @@ +import { useEffect } from 'react'; +import { useUserDispatch, verifyEmail } from '../../context/UserContext'; +import { useLocation, useNavigate } from 'react-router-dom'; +const Verify = () => { + const userDispatch = useUserDispatch(); + const location = useLocation(); + const navigate = useNavigate(); + + useEffect(() => { + const params = new URLSearchParams(location.search); + const token = params.get('token'); + if (token) { + verifyEmail(token, navigate)(userDispatch); + } + }, []); + + return <>; +}; + +export default Verify; diff --git a/src/pages/verify/package.json b/src/pages/verify/package.json new file mode 100644 index 0000000..24cce31 --- /dev/null +++ b/src/pages/verify/package.json @@ -0,0 +1,6 @@ +{ + "name": "verify", + "version": "0.0.0", + "private": true, + "main": "Verify.js" +} diff --git a/src/pages/widget/Widget.js b/src/pages/widget/Widget.js new file mode 100644 index 0000000..42c4b04 --- /dev/null +++ b/src/pages/widget/Widget.js @@ -0,0 +1,59 @@ +import { Grid, Box } from "@mui/material"; +import useStyles from "./styles"; + +// components +import Widget from "../../components/Widget"; +import Code from "../../components/Code"; +import { Typography } from "../../components/Wrappers"; + +export default function WidgetComp() { + const classes = useStyles(); + return ( + <> + + + + + It appears in the top of the page container. It have to be the + first component after {`return`}{" "} + statement. + + + + Lorem ipsum dolor sit amet consectetur, adipisicing elit. A, + rem? + + {` + + Lorem ipsum dolor sit amet consectetur, adipisicing elit. A, + rem? + + `} + + + + + + + + It appears in the top of the page container. It have to be the + first component after {`return`}{" "} + statement. + + + + {` + + `} + + + + + + ); + +} \ No newline at end of file diff --git a/src/pages/widget/package.json b/src/pages/widget/package.json new file mode 100644 index 0000000..ce54e0e --- /dev/null +++ b/src/pages/widget/package.json @@ -0,0 +1,6 @@ +{ + "name": "widget", + "version": "1.0.0", + "main": "Widget.js", + "license": "MIT" +} diff --git a/src/pages/widget/styles.js b/src/pages/widget/styles.js new file mode 100644 index 0000000..2f5bc45 --- /dev/null +++ b/src/pages/widget/styles.js @@ -0,0 +1,8 @@ +import { makeStyles } from "styles/mui"; + +export default makeStyles(theme => ({ + paper: { + margin: theme.spacing(4), + backgroundColor: "#f3f3f3" + }, +})); diff --git a/src/repositories/usersMockRepository.js b/src/repositories/usersMockRepository.js new file mode 100644 index 0000000..7de6ad3 --- /dev/null +++ b/src/repositories/usersMockRepository.js @@ -0,0 +1,469 @@ +const INITIAL_USERS = [ + { + id: '1', + firstName: 'Admin', + lastName: 'User', + phoneNumber: '+1 202 555 0101', + email: 'admin@flatlogic.com', + role: 'admin', + disabled: false, + avatar: [], + password: 'password', + emailVerified: true, + provider: 'local', + }, + { + id: '2', + firstName: 'Olivia', + lastName: 'Parker', + phoneNumber: '+1 202 555 0102', + email: 'olivia.parker@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '3', + firstName: 'Noah', + lastName: 'Cooper', + phoneNumber: '+1 202 555 0103', + email: 'noah.cooper@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '4', + firstName: 'Emma', + lastName: 'Stone', + phoneNumber: '+1 202 555 0104', + email: 'emma.stone@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '5', + firstName: 'Liam', + lastName: 'Turner', + phoneNumber: '+1 202 555 0105', + email: 'liam.turner@example.com', + role: 'user', + disabled: true, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '6', + firstName: 'Sophia', + lastName: 'Morgan', + phoneNumber: '+1 202 555 0106', + email: 'sophia.morgan@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '7', + firstName: 'Mason', + lastName: 'Reed', + phoneNumber: '+1 202 555 0107', + email: 'mason.reed@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '8', + firstName: 'Isabella', + lastName: 'Ward', + phoneNumber: '+1 202 555 0108', + email: 'isabella.ward@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '9', + firstName: 'James', + lastName: 'Brooks', + phoneNumber: '+1 202 555 0109', + email: 'james.brooks@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '10', + firstName: 'Mia', + lastName: 'Hayes', + phoneNumber: '+1 202 555 0110', + email: 'mia.hayes@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '11', + firstName: 'Benjamin', + lastName: 'Cole', + phoneNumber: '+1 202 555 0111', + email: 'benjamin.cole@example.com', + role: 'user', + disabled: true, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, + { + id: '12', + firstName: 'Charlotte', + lastName: 'Price', + phoneNumber: '+1 202 555 0112', + email: 'charlotte.price@example.com', + role: 'user', + disabled: false, + avatar: [], + password: '', + emailVerified: true, + provider: 'local', + }, +]; + +const RESERVED_QUERY_KEYS = new Set(['page', 'limit', 'field', 'sort', 'users']); +const SEARCHABLE_FIELDS = ['firstName', 'lastName', 'phoneNumber', 'email', 'role']; + +let usersStore = INITIAL_USERS.map((user) => normalizeUser(user)); +let idSequence = INITIAL_USERS.length; + +function pickQueryValue(value) { + if (Array.isArray(value)) { + return value[value.length - 1]; + } + return value; +} + +function toTrimmedString(value) { + if (value === null || value === undefined) { + return ''; + } + return String(value).trim(); +} + +function toPositiveInteger(value, fallback) { + const parsed = Number.parseInt(toTrimmedString(value), 10); + return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; +} + +function toNonNegativeInteger(value, fallback) { + const parsed = Number.parseInt(toTrimmedString(value), 10); + return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback; +} + +function parseRequestQuery(request) { + const normalized = toTrimmedString(request) + .replace(/^(\?|&)+/, '') + .replace(/&+$/, ''); + + if (!normalized) { + return {}; + } + + const result = {}; + const params = new URLSearchParams(normalized); + + params.forEach((value, key) => { + const currentValue = result[key]; + + if (currentValue === undefined) { + result[key] = value; + return; + } + + if (Array.isArray(currentValue)) { + result[key] = [...currentValue, value]; + return; + } + + result[key] = [currentValue, value]; + }); + + return result; +} + +function toComparableValue(value) { + if (value === null || value === undefined) { + return ''; + } + + if (typeof value === 'boolean') { + return value ? 1 : 0; + } + + if (typeof value === 'number') { + return value; + } + + const stringValue = toTrimmedString(value); + const numericValue = Number(stringValue); + + if (stringValue && Number.isFinite(numericValue)) { + return numericValue; + } + + return stringValue.toLowerCase(); +} + +function compareValues(left, right) { + const leftComparable = toComparableValue(left); + const rightComparable = toComparableValue(right); + + if (leftComparable < rightComparable) { + return -1; + } + if (leftComparable > rightComparable) { + return 1; + } + return 0; +} + +function normalizeRole(role) { + return role === 'admin' ? 'admin' : 'user'; +} + +function normalizeAvatar(avatar) { + if (Array.isArray(avatar)) { + return avatar; + } + + if (avatar && typeof avatar === 'object') { + return [avatar]; + } + + return []; +} + +function normalizeUser(user = {}, fallback = {}) { + const source = { + ...fallback, + ...user, + }; + + return { + ...source, + id: toTrimmedString(source.id), + firstName: toTrimmedString(source.firstName), + lastName: toTrimmedString(source.lastName), + phoneNumber: toTrimmedString(source.phoneNumber), + email: toTrimmedString(source.email), + role: normalizeRole(source.role), + disabled: Boolean(source.disabled), + avatar: normalizeAvatar(source.avatar), + password: toTrimmedString(source.password), + emailVerified: + typeof source.emailVerified === 'boolean' ? source.emailVerified : true, + emailVerificationToken: source.emailVerificationToken ?? null, + emailVerificationTokenExpiresAt: + source.emailVerificationTokenExpiresAt ?? null, + passwordResetToken: source.passwordResetToken ?? null, + passwordResetTokenExpiresAt: source.passwordResetTokenExpiresAt ?? null, + provider: toTrimmedString(source.provider) || 'local', + }; +} + +function cloneUsers(users) { + return users.map((user) => ({ + ...user, + avatar: Array.isArray(user.avatar) ? [...user.avatar] : [], + })); +} + +function getOrderBy(filterOrderBy, requestQuery) { + const orderBy = filterOrderBy || {}; + const field = toTrimmedString(orderBy.field || pickQueryValue(requestQuery.field)); + const sort = toTrimmedString(orderBy.sort || pickQueryValue(requestQuery.sort)).toLowerCase(); + + if (!field || (sort !== 'asc' && sort !== 'desc')) { + return null; + } + + return { field, sort }; +} + +function applyFilters(users, filter, requestQuery) { + let result = [...users]; + + const globalSearch = toTrimmedString( + filter.users || pickQueryValue(requestQuery.users), + ).toLowerCase(); + + if (globalSearch) { + result = result.filter((user) => + SEARCHABLE_FIELDS.some((field) => + toTrimmedString(user[field]).toLowerCase().includes(globalSearch), + ), + ); + } + + Object.entries(requestQuery).forEach(([key, rawValue]) => { + if (RESERVED_QUERY_KEYS.has(key) || key.endsWith('Range')) { + return; + } + + const filterValue = toTrimmedString(pickQueryValue(rawValue)).toLowerCase(); + + if (!filterValue) { + return; + } + + result = result.filter((user) => + toTrimmedString(user[key]).toLowerCase().includes(filterValue), + ); + }); + + return result; +} + +function applySorting(users, orderBy) { + if (!orderBy) { + return users; + } + + return [...users].sort((left, right) => { + const direction = orderBy.sort === 'asc' ? 1 : -1; + return compareValues(left[orderBy.field], right[orderBy.field]) * direction; + }); +} + +function applyPagination(users, filter, requestQuery) { + const limit = toPositiveInteger(filter.limit ?? pickQueryValue(requestQuery.limit), 10); + const page = toNonNegativeInteger(filter.page ?? pickQueryValue(requestQuery.page), 0); + const offset = page * limit; + + return users.slice(offset, offset + limit); +} + +function nextId() { + idSequence += 1; + return String(idSequence); +} + +export function listMockUsers(filter = {}, request = '') { + const requestQuery = parseRequestQuery(request || filter.request); + const filteredUsers = applyFilters(usersStore, filter, requestQuery); + const sortedUsers = applySorting(filteredUsers, getOrderBy(filter.orderBy, requestQuery)); + const rows = applyPagination(sortedUsers, filter, requestQuery); + + return { + rows: cloneUsers(rows), + count: filteredUsers.length, + }; +} + +export function findMockUser(id) { + const targetId = toTrimmedString(id); + const found = usersStore.find((user) => { + if (!targetId) { + return true; + } + return toTrimmedString(user.id) === targetId; + }); + + if (!found) { + return null; + } + + return { + ...found, + avatar: Array.isArray(found.avatar) ? [...found.avatar] : [], + }; +} + +export function createMockUser(data = {}) { + const newUser = normalizeUser( + { + id: nextId(), + ...data, + }, + { + role: 'user', + disabled: false, + avatar: [], + emailVerified: true, + provider: 'local', + }, + ); + + usersStore = [newUser, ...usersStore]; + + return { + ...newUser, + avatar: Array.isArray(newUser.avatar) ? [...newUser.avatar] : [], + }; +} + +export function updateMockUser(id, data = {}) { + const targetId = toTrimmedString(id); + let updatedUser = null; + + usersStore = usersStore.map((user) => { + if (toTrimmedString(user.id) !== targetId) { + return user; + } + + updatedUser = normalizeUser( + { + ...user, + ...data, + id: user.id, + }, + user, + ); + + return updatedUser; + }); + + if (!updatedUser) { + return null; + } + + return { + ...updatedUser, + avatar: Array.isArray(updatedUser.avatar) ? [...updatedUser.avatar] : [], + }; +} + +export function deleteMockUser(id) { + const targetId = toTrimmedString(id); + const previousLength = usersStore.length; + usersStore = usersStore.filter((user) => toTrimmedString(user.id) !== targetId); + + return usersStore.length < previousLength; +} diff --git a/src/router/navigation.js b/src/router/navigation.js new file mode 100644 index 0000000..1553edb --- /dev/null +++ b/src/router/navigation.js @@ -0,0 +1,18 @@ +let navigator = null; + +function setNavigator(nextNavigator) { + navigator = nextNavigator; +} + +function navigateTo(path, options = {}) { + if (navigator) { + navigator(path, options); + return; + } + + if (typeof window !== 'undefined') { + window.location.assign(path); + } +} + +export { setNavigator, navigateTo }; diff --git a/src/styles/mui.js b/src/styles/mui.js new file mode 100644 index 0000000..bc459d6 --- /dev/null +++ b/src/styles/mui.js @@ -0,0 +1,50 @@ +import { makeStyles as tssMakeStyles } from 'tss-react/mui'; +import { useTheme as useMuiTheme } from '@mui/material/styles'; + +const isPlainObject = (value) => + value !== null && typeof value === 'object' && !Array.isArray(value); + +const replaceClassRefsInSelector = (selector, classes) => + selector.replace(/\$([a-zA-Z0-9_-]+)/g, (_, className) => + classes[className] ? `.${classes[className]}` : `$${className}`, + ); + +const resolveDynamicValues = (value, params, theme, classes) => { + if (typeof value === 'function') { + return value(params, theme, classes); + } + + if (Array.isArray(value)) { + return value.map((item) => resolveDynamicValues(item, params, theme, classes)); + } + + if (!isPlainObject(value)) { + return value; + } + + return Object.entries(value).reduce((acc, [key, val]) => { + const resolvedKey = typeof key === 'string' ? replaceClassRefsInSelector(key, classes) : key; + acc[resolvedKey] = resolveDynamicValues(val, params, theme, classes); + return acc; + }, {}); +}; + +const resolveStyleObject = (stylesOrCreator, theme, params, classes) => { + const rawStyles = + typeof stylesOrCreator === 'function' + ? stylesOrCreator(theme, params, classes) + : stylesOrCreator; + + return resolveDynamicValues(rawStyles, params, theme, classes); +}; + +export const makeStyles = (stylesOrCreator, options) => { + const useTssStyles = tssMakeStyles(options)( + (theme, params, classes) => + resolveStyleObject(stylesOrCreator, theme, params, classes), + ); + + return (params = {}) => useTssStyles(params).classes; +}; + +export const useTheme = useMuiTheme; diff --git a/src/test/setup.js b/src/test/setup.js new file mode 100644 index 0000000..5930c95 --- /dev/null +++ b/src/test/setup.js @@ -0,0 +1,48 @@ +import '@testing-library/jest-dom/vitest'; +import { afterEach, vi } from 'vitest'; +import { cleanup } from '@testing-library/react'; + +afterEach(() => { + cleanup(); + vi.restoreAllMocks(); +}); + +vi.mock('uuid', () => ({ + v4: () => 'test-uuid', + default: { + v4: () => 'test-uuid', + }, +})); + +if (!window.matchMedia) { + window.matchMedia = vi.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: vi.fn(), + removeListener: vi.fn(), + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + dispatchEvent: vi.fn(), + })); +} + +if (!window.ResizeObserver) { + window.ResizeObserver = class { + observe() {} + unobserve() {} + disconnect() {} + }; +} + +if (!window.IntersectionObserver) { + window.IntersectionObserver = class { + observe() {} + unobserve() {} + disconnect() {} + }; +} + +if (!window.HTMLElement.prototype.scrollTo) { + window.HTMLElement.prototype.scrollTo = () => {}; +} diff --git a/src/test/smoke/dashboard.smoke.test.jsx b/src/test/smoke/dashboard.smoke.test.jsx new file mode 100644 index 0000000..21496b8 --- /dev/null +++ b/src/test/smoke/dashboard.smoke.test.jsx @@ -0,0 +1,31 @@ +import { screen } from '@testing-library/react'; +import { vi } from 'vitest'; +import Dashboard from '../../pages/dashboard/Dashboard'; +import { renderWithProviders } from '../utils/renderWithProviders'; + +vi.mock('@mui/icons-material', () => + new Proxy( + { __esModule: true }, + { + get: (_target, prop) => { + if (prop === '__esModule') { + return true; + } + if (prop === 'then') { + return undefined; + } + return () => null; + }, + has: (_target, prop) => prop !== 'then', + }, + ), +); + +describe('Dashboard Smoke', () => { + it('renders key dashboard widgets', () => { + renderWithProviders(, { route: '/app/dashboard' }); + + expect(screen.getByText(/support tracker/i)).toBeInTheDocument(); + expect(screen.getByText(/revenue breakdown/i)).toBeInTheDocument(); + }); +}); diff --git a/src/test/smoke/login.smoke.test.jsx b/src/test/smoke/login.smoke.test.jsx new file mode 100644 index 0000000..7034c3d --- /dev/null +++ b/src/test/smoke/login.smoke.test.jsx @@ -0,0 +1,16 @@ +import { screen } from '@testing-library/react'; + +import Login from '../../pages/login/Login'; +import { renderWithProviders } from '../utils/renderWithProviders'; + +describe('Login Smoke', () => { + it('renders login screen with main controls', () => { + renderWithProviders(, { route: '/login' }); + + expect(screen.getByRole('tab', { name: /login/i })).toBeInTheDocument(); + expect(screen.getByPlaceholderText(/email adress/i)).toBeInTheDocument(); + expect( + screen.getByRole('button', { name: /forgot password/i }), + ).toBeInTheDocument(); + }); +}); diff --git a/src/test/smoke/users.smoke.test.jsx b/src/test/smoke/users.smoke.test.jsx new file mode 100644 index 0000000..cdbe96f --- /dev/null +++ b/src/test/smoke/users.smoke.test.jsx @@ -0,0 +1,31 @@ +import { screen } from '@testing-library/react'; +import { Route, Routes } from 'react-router-dom'; + +import UsersTable from '../../pages/CRUD/Users/table/UsersTable.js'; +import UsersFormPage from '../../pages/CRUD/Users/form/UsersFormPage.js'; +import { renderWithProviders } from '../utils/renderWithProviders'; + +describe('Users Smoke', () => { + it('renders users table and mock data', async () => { + renderWithProviders(, { route: '/app/users' }); + + expect(screen.getByRole('button', { name: /^new$/i })).toBeInTheDocument(); + expect(await screen.findByText('Admin')).toBeInTheDocument(); + }); + + it('renders users edit form route', async () => { + const editRoute = ( + + } /> + + ); + + renderWithProviders( + editRoute, + { route: '/app/users/1/edit' }, + ); + + expect(await screen.findByText(/edit users/i)).toBeInTheDocument(); + expect(await screen.findByDisplayValue('Admin')).toBeInTheDocument(); + }); +}); diff --git a/src/test/utils/renderWithProviders.jsx b/src/test/utils/renderWithProviders.jsx new file mode 100644 index 0000000..213fc99 --- /dev/null +++ b/src/test/utils/renderWithProviders.jsx @@ -0,0 +1,46 @@ +import { render } from '@testing-library/react'; +import { MemoryRouter } from 'react-router-dom'; +import { ThemeProvider as ThemeProviderV5 } from '@mui/material/styles'; +import { StyledEngineProvider } from '@mui/material/styles'; + +import { LayoutProvider } from '../../context/LayoutContext'; +import { UserProvider } from '../../context/UserContext'; +import { ManagementProvider } from '../../context/ManagementContext'; +import { + ThemeProvider as ThemeChangeProvider, + ThemeStateContext, +} from '../../context/ThemeContext'; + +function Providers({ children, route = '/' }) { + localStorage.setItem('theme', 'default'); + + return ( + + + + + + + {(theme) => ( + + {children} + + )} + + + + + + + ); +} + +function renderWithProviders(ui, options = {}) { + const { route = '/', ...rest } = options; + return render(ui, { + wrapper: ({ children }) => {children}, + ...rest, + }); +} + +export { Providers, renderWithProviders }; diff --git a/src/themes/dark.js b/src/themes/dark.js new file mode 100644 index 0000000..3755364 --- /dev/null +++ b/src/themes/dark.js @@ -0,0 +1,58 @@ +import tinycolor from 'tinycolor2'; + +const primary = '#536DFE'; +const secondary = '#EE266D'; +const warning = '#E9B55F'; +const success = '#63C5B5'; +const info = '#AE1ECC'; + +const lightenRate = 7.5; +const darkenRate = 15; + +const darkTheme = { + palette: { + contrastText: '#fff', + mode: 'dark', + primary: { + main: primary, + light: tinycolor(primary).lighten(lightenRate).toHexString(), + dark: tinycolor(primary).darken(darkenRate).toHexString(), + }, + secondary: { + main: secondary, + light: tinycolor(secondary).lighten(lightenRate).toHexString(), + dark: tinycolor(secondary).darken(darkenRate).toHexString(), + contrastText: '#fff', + }, + warning: { + main: warning, + light: tinycolor(warning).lighten(lightenRate).toHexString(), + dark: tinycolor(warning).darken(darkenRate).toHexString(), + }, + success: { + main: success, + light: tinycolor(success).lighten(lightenRate).toHexString(), + dark: tinycolor(success).darken(darkenRate).toHexString(), + }, + info: { + main: info, + light: tinycolor(info).lighten(lightenRate).toHexString(), + dark: tinycolor(info).darken(darkenRate).toHexString(), + }, + text: { + primary: '#fff', + secondary: '#D6D6D6', + hint: '#76767B', + }, + background: { + default: '#13131A', + light: '#23232D', + }, + }, + customShadows: { + widget: + '0px 1px 8px rgba(0, 0, 0, 0.103475), 0px 3px 3px rgba(0, 0, 0, 0.0988309), 0px 3px 4px rgba(0, 0, 0, 0.10301)', + }, +}; + +export default darkTheme; diff --git a/src/themes/default.js b/src/themes/default.js new file mode 100644 index 0000000..4346bce --- /dev/null +++ b/src/themes/default.js @@ -0,0 +1,56 @@ +import tinycolor from 'tinycolor2'; + +const primary = '#536DFE'; +const secondary = '#FF5C93'; +const warning = '#FFC260'; +const success = '#3CD4A0'; +const info = '#9013FE'; + +const lightenRate = 7.5; +const darkenRate = 15; + +const defaultThemeConfig = { + palette: { + primary: { + main: primary, + light: tinycolor(primary).lighten(lightenRate).toHexString(), + dark: tinycolor(primary).darken(darkenRate).toHexString(), + }, + secondary: { + main: secondary, + light: tinycolor(secondary).lighten(lightenRate).toHexString(), + dark: tinycolor(secondary).darken(darkenRate).toHexString(), + contrastText: '#ccc', + }, + warning: { + main: warning, + light: tinycolor(warning).lighten(lightenRate).toHexString(), + dark: tinycolor(warning).darken(darkenRate).toHexString(), + }, + success: { + main: success, + light: tinycolor(success).lighten(lightenRate).toHexString(), + dark: tinycolor(success).darken(darkenRate).toHexString(), + }, + info: { + main: info, + light: tinycolor(info).lighten(lightenRate).toHexString(), + dark: tinycolor(info).darken(darkenRate).toHexString(), + }, + text: { + primary: '#4A4A4A', + secondary: '#6E6E6E', + hint: '#B9B9B9', + }, + background: { + default: '#F6F7FF', + light: '#F3F5FF', + }, + }, + customShadows: { + widget: + '0px 12px 33px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + }, +}; + +export default defaultThemeConfig; diff --git a/src/themes/index.js b/src/themes/index.js new file mode 100644 index 0000000..3b86280 --- /dev/null +++ b/src/themes/index.js @@ -0,0 +1,208 @@ +import defaultTheme from './default'; +import successTheme from './success'; +import secondaryTheme from './secondary'; +import darkTheme from './dark'; + +import { createTheme } from '@mui/material/styles'; + +const overrides = { + typography: { + h1: { + fontSize: '3rem', + }, + h2: { + fontSize: '2rem', + }, + h3: { + fontSize: '1.64rem', + }, + h4: { + fontSize: '1.5rem', + }, + h5: { + fontSize: '1.285rem', + }, + h6: { + fontSize: '1.142rem', + }, + }, + overrides: { + MuiCard: { + root: { + boxShadow: + '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + }, + }, + MUIDataTable: { + paper: { + boxShadow: + '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + }, + }, + MuiBackdrop: { + root: { + backgroundColor: '#4A4A4A1A', + }, + }, + MuiMenu: { + paper: { + boxShadow: + '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + }, + }, + MuiSelect: { + icon: { + color: '#B9B9B9', + }, + }, + MuiListItem: { + root: { + '&$selected': { + backgroundColor: '#F3F5FF !important', + '&:focus': { + backgroundColor: '#F3F5FF', + }, + }, + }, + button: { + '&:hover, &:focus': { + backgroundColor: '#F3F5FF', + }, + }, + }, + MuiTouchRipple: { + child: { + backgroundColor: 'white', + }, + }, + MuiTableRow: { + root: { + height: 56, + }, + }, + MuiTableCell: { + root: { + borderBottom: '1px solid rgba(224, 224, 224, .5)', + padding: '14px 40px 14px 24px', + }, + head: { + fontSize: '0.95rem', + }, + body: { + fontSize: '0.95rem', + }, + paddingCheckbox: { + padding: '0 0 0 15px', + }, + }, + }, +}; + +const darkModeOverrides = { + components: { + MuiCssBaseline: { + '@global': { + // '*': { + // 'scrollbar-width': 'thin', + // }, + '*::-webkit-scrollbar': { + width: '0.4em', + }, + '&::-webkit-scrollbar-thumb': { + backgroundColor: '#12121A', + }, + }, + }, + MuiPaper: { + styleOverrides: { + root: { + backgroundColor: '#23232D', + boxShadow: + '0px 1px 8px rgba(0, 0, 0, 0.103475), 0px 3px 3px rgba(0, 0, 0, 0.0988309), 0px 3px 4px rgba(0, 0, 0, 0.10301) !important', + '&::-webkit-scrollbar': { + width: '0.4em', + }, + '&::-webkit-scrollbar-thumb': { + backgroundColor: '#12121A', + }, + }, + }, + }, + MuiAppBar: { + root: { + backgroundColor: '#23232D !important', + }, + }, + MuiButton: { + root: { + boxShadow: 'none !important', + }, + }, + typography: { + root: { + color: 'white !important', + }, + }, + MuiCheckbox: { + root: { + color: '#76767B', + }, + }, + MuiTable: { + root: { + '&::-webkit-scrollbar': { + width: '0.4em', + }, + '&::-webkit-scrollbar-thumb': { + backgroundColor: '#12121A', + }, + }, + }, + MuiTableCell: { + head: { + color: '#76767B', + }, + }, + MuiTableBody: { + root: { + '&::-webkit-scrollbar': { + width: '0.4em', + }, + '&::-webkit-scrollbar-thumb': { + backgroundColor: '#12121A', + }, + }, + }, + MuiTableSortLabel: { + icon: { + color: '#76767B', + }, + active: { + color: '#76767B !important', + }, + iconDirectionDesc: { + color: '#76767B !important', + }, + iconDirectionAsc: { + color: '#76767B !important', + }, + }, + MuiTablePagination: { + toolbar: { + color: '#76767B', + }, + selectIcon: { + color: '#76767B', + }, + }, + }, +}; + +const themes = { + default: createTheme({ ...defaultTheme, ...overrides }), + secondary: createTheme({ ...secondaryTheme, ...overrides }), + success: createTheme({ ...successTheme, ...overrides }), + dark: createTheme({ ...darkTheme, ...overrides, ...darkModeOverrides }), +}; + +export default themes; diff --git a/src/themes/secondary.js b/src/themes/secondary.js new file mode 100644 index 0000000..2393d35 --- /dev/null +++ b/src/themes/secondary.js @@ -0,0 +1,60 @@ +import tinycolor from 'tinycolor2'; + +const primary = '#FF5C93'; +const secondary = '#536DFE'; +const warning = '#FFC260'; +const success = '#3CD4A0'; +const info = '#9013FE'; + +const lightenRate = 7.5; +const darkenRate = 15; + +const secondaryTheme = { + palette: { + primary: { + main: primary, + light: tinycolor(primary).lighten(lightenRate).toHexString(), + dark: tinycolor(primary).darken(darkenRate).toHexString(), + contrastText: '#fff', + }, + secondary: { + main: secondary, + light: tinycolor(secondary).lighten(lightenRate).toHexString(), + dark: tinycolor(secondary).darken(darkenRate).toHexString(), + }, + warning: { + main: warning, + light: tinycolor(warning).lighten(lightenRate).toHexString(), + dark: tinycolor(warning).darken(darkenRate).toHexString(), + }, + success: { + main: success, + light: tinycolor(success).lighten(lightenRate).toHexString(), + dark: tinycolor(success).darken(darkenRate).toHexString(), + }, + info: { + main: info, + light: tinycolor(info).lighten(lightenRate).toHexString(), + dark: tinycolor(info).darken(darkenRate).toHexString(), + }, + text: { + primary: '#4A4A4A', + secondary: '#6E6E6E', + hint: '#B9B9B9', + }, + background: { + default: '#F6F7FF', + light: '#F3F5FF', + }, + }, + customShadows: { + widget: + '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + widgetDark: + '0px 3px 18px 0px #4558A3B3, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + widgetWide: + '0px 12px 33px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + }, +}; + +export default secondaryTheme; diff --git a/src/themes/success.js b/src/themes/success.js new file mode 100644 index 0000000..ce8b186 --- /dev/null +++ b/src/themes/success.js @@ -0,0 +1,63 @@ +import tinycolor from 'tinycolor2'; + +const lightenRate = 7.5; +const darkenRate = 15; + +const primary = '#3CD4A0'; +// const primary = tinycolor("3CD4A0") +// .darken(darkenRate) +// .toHexString(); +const secondary = '#FF5C93'; +const warning = '#FFC260'; +const success = '#3CD4A0'; +const info = '#9013FE'; + +const successTheme = { + palette: { + primary: { + main: primary, + light: tinycolor(primary).lighten(lightenRate).toHexString(), + dark: tinycolor(primary).darken(darkenRate).toHexString(), + }, + secondary: { + main: secondary, + light: tinycolor(secondary).lighten(lightenRate).toHexString(), + dark: tinycolor(secondary).darken(darkenRate).toHexString(), + contrastText: '#FFFFFF', + }, + warning: { + main: warning, + light: tinycolor(warning).lighten(lightenRate).toHexString(), + dark: tinycolor(warning).darken(darkenRate).toHexString(), + }, + success: { + main: success, + light: tinycolor(success).lighten(lightenRate).toHexString(), + dark: tinycolor(success).darken(darkenRate).toHexString(), + }, + info: { + main: info, + light: tinycolor(info).lighten(lightenRate).toHexString(), + dark: tinycolor(info).darken(darkenRate).toHexString(), + }, + text: { + primary: '#4A4A4A', + secondary: '#6E6E6E', + hint: '#B9B9B9', + }, + background: { + default: '#F6F7FF', + light: '#F3F5FF', + }, + }, + customShadows: { + widget: + '0px 3px 11px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + widgetDark: + '0px 3px 18px 0px #4558A3B3, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + widgetWide: + '0px 12px 33px 0px #E8EAFC, 0 3px 3px -2px #B2B2B21A, 0 1px 8px 0 #9A9A9A1A', + }, +}; + +export default successTheme; diff --git a/src/utils/dayjs.js b/src/utils/dayjs.js new file mode 100644 index 0000000..aa040de --- /dev/null +++ b/src/utils/dayjs.js @@ -0,0 +1,6 @@ +import dayjs from 'dayjs'; +import customParseFormat from 'dayjs/plugin/customParseFormat'; + +dayjs.extend(customParseFormat); + +export default dayjs; diff --git a/src/utils/jwt.js b/src/utils/jwt.js new file mode 100644 index 0000000..6adb44e --- /dev/null +++ b/src/utils/jwt.js @@ -0,0 +1,33 @@ +function decodeBase64Url(value) { + const base64 = value.replace(/-/g, '+').replace(/_/g, '/'); + const padded = base64 + '==='.slice((base64.length + 3) % 4); + const ascii = atob(padded); + + try { + return decodeURIComponent( + ascii + .split('') + .map((char) => `%${(`00${char.charCodeAt(0).toString(16)}`).slice(-2)}`) + .join(''), + ); + } catch { + return ascii; + } +} + +export function decodeJwtPayload(token) { + if (!token || typeof token !== 'string') { + return null; + } + + const parts = token.split('.'); + if (parts.length < 2) { + return null; + } + + try { + return JSON.parse(decodeBase64Url(parts[1])); + } catch { + return null; + } +} diff --git a/tailwind.config.cjs b/tailwind.config.cjs new file mode 100644 index 0000000..854adfb --- /dev/null +++ b/tailwind.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + content: ['./index.html', './src/**/*.{js,jsx,ts,tsx}'], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/vite.config.mjs b/vite.config.mjs new file mode 100644 index 0000000..5c0569f --- /dev/null +++ b/vite.config.mjs @@ -0,0 +1,80 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import react from '@vitejs/plugin-react-swc'; +import { defineConfig } from 'vite'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const srcRoot = path.resolve(__dirname, 'src'); + +const srcDirectoryAliases = fs + .readdirSync(srcRoot, { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => ({ + find: entry.name, + replacement: path.resolve(srcRoot, entry.name), + })); + +export default defineConfig(({ mode }) => ({ + base: mode === 'production' ? '/react-material-admin/' : '/', + plugins: [ + react({ + parserConfig: (id) => { + if (id.endsWith('.ts')) { + return { syntax: 'typescript', tsx: false }; + } + if (id.endsWith('.tsx')) { + return { syntax: 'typescript', tsx: true }; + } + if (id.endsWith('.js') || id.endsWith('.jsx')) { + return { syntax: 'ecmascript', jsx: true }; + } + + return undefined; + }, + }), + ], + build: { + outDir: 'build', + }, + css: { + preprocessorOptions: {}, + }, + esbuild: { + loader: 'jsx', + include: /src\/.*\.[jt]sx?$/, + exclude: [], + }, + resolve: { + alias: [ + { find: '@', replacement: srcRoot }, + ...srcDirectoryAliases, + ], + }, + define: { + global: 'globalThis', + 'process.env': '{}', + 'process.env.NODE_ENV': JSON.stringify(mode), + }, + optimizeDeps: { + esbuildOptions: { + loader: { + '.js': 'jsx', + }, + define: { + global: 'globalThis', + }, + }, + }, + server: { + port: 3000, + }, + test: { + globals: true, + environment: 'jsdom', + setupFiles: './src/test/setup.js', + css: true, + fileParallelism: false, + }, +}));