diff --git a/Client/IP-P2/.firebase/hosting.ZGlzdA.cache b/Client/IP-P2/.firebase/hosting.ZGlzdA.cache new file mode 100644 index 0000000..b80d37f --- /dev/null +++ b/Client/IP-P2/.firebase/hosting.ZGlzdA.cache @@ -0,0 +1,16 @@ +vite.svg,1730199448522,699a02e0e68a579f687d364bbbe7633161244f35af068220aee37b1b33dfb3c7 +assets/index-D0eM6ugt.css,1730425080931,a81754a585961ad32b5d05e685b53251198d78a4fb05b8bc5e12f455d2abf131 +index.html,1730425080931,18a40afee26926e677ba7ec1648df07cd93fd098d8850588a1de266cccf90636 +assets/pokemon-caught!-(pokemon-go-jingle)-made-with-Voicemod-cM1i-sd9.mp3,1730425080931,260a9b91c42e931b15ce37f64b1398ffaffb676a31c26e91f7bcc691335e2622 +assets/sound-effects-pokemon-anime-7-pokemon-out-C2xPmKIw.mp3,1730425080931,dca569babca6869c45d457adf19e53fc21ae24c8d8c6a83d2ad4fecc9b0ee8bf +assets/clipart1298306-7zSEeGC5.png,1730425080930,1faf7783d82242a178dd750158857fd47bbc2ae70e3b8715aecfee5a4f961e4b +assets/image-removebg-preview-TKwxnxtB.png,1730425080929,38d6203281455c33d2e8428ae279ea74fa0401169f1f91fce3601da1c753b5a2 +assets/mixkit-winning-a-coin-video-game-2069-tk8dF5Ds.wav,1730425080931,407968697d30c6eb16b53a8ad733b623ee1d21b70c8fdb5d2d67754caf83bd0f +assets/mixkit-unlock-game-notification-253-D0EQSH2R.wav,1730425080931,efa5049235acb3ab95ee9341c054e7e97bb8854e157e34fa71d46b14e8d6b0f0 +assets/mixkit-gaming-lock-2848-DU5fKKP2.wav,1730425080931,cd5b2011c1ae0deac28a1e86b0b0465ac6a27ba4b93f326b45989326dd9c9ec0 +assets/mixkit-bonus-earned-in-video-game-2058-0K3WAWXx.wav,1730425080931,6eb6f37d6449145b2bd625e616d1b4fb92cb01bc4c2d4f54174a981c6ec873d6 +assets/mixkit-arcade-retro-game-over-213-B4UCIDkq.wav,1730425080931,35a52603a11605bb85e498268a4ea15c4455a3edb1e7260c6a6c382c2a2a27ec +assets/mixkit-wrong-answer-fail-notification-946-CBv4tsTo.wav,1730425080931,79894bf3de137a9335dc59cf208efb14ade0cd7ca2cf46d0b71df20200e8b1f2 +assets/mixkit-unlock-new-item-game-notification-254-BDGFfpqW.wav,1730425080931,e81bf94e05d50b33dc951a8e80fd2872ab98ba67bc476a76af1c6a9141f6d136 +assets/mixkit-player-jumping-in-a-video-game-2043-a0v3mjFw.wav,1730425080931,249322212c19edfed6e337e8c394ca20c7e5f6e64dd588ecbf1cd93df79fac48 +assets/index-CgkBmZcL.js,1730425080931,501fa5c3c49ee2ecacc94998fdd2e9c3508649dda49be1e93b6d785c586f21e9 diff --git a/Client/IP-P2/.firebaserc b/Client/IP-P2/.firebaserc new file mode 100644 index 0000000..e34800b --- /dev/null +++ b/Client/IP-P2/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "ip-p2-58e76" + } +} diff --git a/Client/IP-P2/.gitignore b/Client/IP-P2/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/Client/IP-P2/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Client/IP-P2/README.md b/Client/IP-P2/README.md new file mode 100644 index 0000000..f768e33 --- /dev/null +++ b/Client/IP-P2/README.md @@ -0,0 +1,8 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/Client/IP-P2/eslint.config.js b/Client/IP-P2/eslint.config.js new file mode 100644 index 0000000..238d2e4 --- /dev/null +++ b/Client/IP-P2/eslint.config.js @@ -0,0 +1,38 @@ +import js from '@eslint/js' +import globals from 'globals' +import react from 'eslint-plugin-react' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + settings: { react: { version: '18.3' } }, + plugins: { + react, + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + ...reactHooks.configs.recommended.rules, + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/Client/IP-P2/firebase.json b/Client/IP-P2/firebase.json new file mode 100644 index 0000000..2c33c29 --- /dev/null +++ b/Client/IP-P2/firebase.json @@ -0,0 +1,16 @@ +{ + "hosting": { + "public": "dist", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + } +} diff --git a/Client/IP-P2/index.html b/Client/IP-P2/index.html new file mode 100644 index 0000000..4bd1ba9 --- /dev/null +++ b/Client/IP-P2/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + PokeDex + + +
+ + + + diff --git a/Client/IP-P2/package-lock.json b/Client/IP-P2/package-lock.json new file mode 100644 index 0000000..c2e2868 --- /dev/null +++ b/Client/IP-P2/package-lock.json @@ -0,0 +1,4662 @@ +{ + "name": "ip-p2", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ip-p2", + "version": "0.0.0", + "dependencies": { + "@google/generative-ai": "^0.21.0", + "@reduxjs/toolkit": "^2.3.0", + "axios": "^1.7.7", + "openai": "^4.68.4", + "react": "^18.3.1", + "react-bootstrap": "^2.10.5", + "react-dom": "^18.3.1", + "react-redux": "^9.1.2", + "react-router-dom": "^6.27.0", + "redux-thunk": "^3.1.0", + "sweetalert2": "^11.14.4", + "tone": "^15.0.4" + }, + "devDependencies": { + "@eslint/js": "^9.13.0", + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "@vitejs/plugin-react": "^4.3.3", + "eslint": "^9.13.0", + "eslint-plugin-react": "^7.37.1", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.13", + "globals": "^15.11.0", + "react-howler": "^5.2.0", + "vite": "^5.4.10" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", + "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", + "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.26.0", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", + "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", + "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", + "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", + "dev": true, + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@google/generative-ai": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.21.0.tgz", + "integrity": "sha512-7XhUbtnlkSEZK15kN3t+tzIMxsbKm/dSkKBFalj+20NvPKe1kBY7mR2P7vuijEn+f06z5+A8bVGKO0v39cr6Wg==", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.6.tgz", + "integrity": "sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", + "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@remix-run/router": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.16.tgz", + "integrity": "sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w==", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.8.0.tgz", + "integrity": "sha512-xJEOXUOTmT4FngTmhdjKFRrVVF0hwCLNPdatLCHkyS4dkiSK12cEu1Y0fjxktjJrdst9jJIc5J6ihMJCoWEN/g==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.2.tgz", + "integrity": "sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.2.tgz", + "integrity": "sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.2.tgz", + "integrity": "sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.2.tgz", + "integrity": "sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.2.tgz", + "integrity": "sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.2.tgz", + "integrity": "sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.2.tgz", + "integrity": "sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.2.tgz", + "integrity": "sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.2.tgz", + "integrity": "sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.2.tgz", + "integrity": "sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.2.tgz", + "integrity": "sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.2.tgz", + "integrity": "sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.2.tgz", + "integrity": "sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.2.tgz", + "integrity": "sha512-jOG/0nXb3z+EM6SioY8RofqqmZ+9NKYvJ6QQaa9Mvd3RQxlH68/jcB/lpyVt4lCiqr04IyaC34NzhUqcXbB5FQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.2.tgz", + "integrity": "sha512-XAo7cJec80NWx9LlZFEJQxqKOMz/lX3geWs2iNT5CHIERLFfd90f3RYLLjiCBm1IMaQ4VOX/lTC9lWfzzQm14Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.2.tgz", + "integrity": "sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.2.tgz", + "integrity": "sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.2.tgz", + "integrity": "sha512-2mLH46K1u3r6uwc95hU+OR9q/ggYMpnS7pSp83Ece1HUQgF9Nh/QwTK5rcgbFnV9j+08yBrU5sA/P0RK2MSBNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/helpers": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, + "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 + }, + "node_modules/@types/node": { + "version": "18.19.61", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.61.tgz", + "integrity": "sha512-z8fH66NcVkDzBItOao+Nyh0fiy7CYdxIyxnNCcZ60aY0I+EA/y4TSi/S/W9i8DIQvwVo7a0pgzAxmDeNnqrpkw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, + "node_modules/@types/warning": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz", + "integrity": "sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "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, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/automation-events": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-7.1.3.tgz", + "integrity": "sha512-3XJ7LyW48VFiytPi2Pgl1t0VTYh3+2pEcJu4f6ysZxNkqbdl1kif3EiDLnJhdR7lSRTdr0n3uAzHWJeJHUdmVw==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=18.2.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001674", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001674.tgz", + "integrity": "sha512-jOsKlZVRnzfhLojb+Ykb+gyUSp9Xb57So+fAiFlLzzTKpqg8xxSav0e40c8/4F/v9N8QSvrRRaLeVzQbLqomYw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.49", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.49.tgz", + "integrity": "sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.4", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.3", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", + "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.7.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.13.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", + "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.1.0", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", + "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", + "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "dev": true, + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "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, + "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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "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 + }, + "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 + }, + "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 + }, + "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, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "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, + "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, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "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, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/howler": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.4.tgz", + "integrity": "sha512-iARIBPgcQrwtEr+tALF+rapJ8qSc+Set2GJQl7xT1MQzWaVkFebdJhR3alVlSiUf5U7nAANKuj3aWpwerocD5w==", + "dev": true + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "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, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "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 + }, + "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 + }, + "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 + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "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==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "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 + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/openai": { + "version": "4.68.4", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.68.4.tgz", + "integrity": "sha512-LRinV8iU9VQplkr25oZlyrsYGPGasIwYN8KFMAAFTHHLHjHhejtJ5BALuLFrkGzY4wfbKhOhuT+7lcHZ+F3iEA==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "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, + "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, + "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==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "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, + "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==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.10.5", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.5.tgz", + "integrity": "sha512-XueAOEn64RRkZ0s6yzUTdpFtdUXs5L5491QU//8ZcODKJNDLt/r01tNyriZccjgRImH1REynUc9pqjiRMpDLWQ==", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.9", + "@types/react-transition-group": "^4.4.6", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-howler": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-howler/-/react-howler-5.2.0.tgz", + "integrity": "sha512-oDK+zML0MHf3nVNM4lMxh+re87NDa7fHowea2WK8197yqnMiZfPVHoMXtfb/PtuoOsWLO06vmEAtovwTRWpTFg==", + "dev": true, + "dependencies": { + "howler": "^2.2.0", + "prop-types": "^15.5.6" + } + }, + "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==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", + "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", + "dependencies": { + "@remix-run/router": "1.20.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", + "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", + "dependencies": { + "@remix-run/router": "1.20.0", + "react-router": "6.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "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/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, + "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==", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==" + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.2.tgz", + "integrity": "sha512-do/DFGq5g6rdDhdpPq5qb2ecoczeK6y+2UAjdJ5trjQJj5f1AiVdLRWRc9A9/fFukfvJRgM0UXzxBIYMovm5ww==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.2", + "@rollup/rollup-android-arm64": "4.24.2", + "@rollup/rollup-darwin-arm64": "4.24.2", + "@rollup/rollup-darwin-x64": "4.24.2", + "@rollup/rollup-freebsd-arm64": "4.24.2", + "@rollup/rollup-freebsd-x64": "4.24.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.2", + "@rollup/rollup-linux-arm-musleabihf": "4.24.2", + "@rollup/rollup-linux-arm64-gnu": "4.24.2", + "@rollup/rollup-linux-arm64-musl": "4.24.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.2", + "@rollup/rollup-linux-riscv64-gnu": "4.24.2", + "@rollup/rollup-linux-s390x-gnu": "4.24.2", + "@rollup/rollup-linux-x64-gnu": "4.24.2", + "@rollup/rollup-linux-x64-musl": "4.24.2", + "@rollup/rollup-win32-arm64-msvc": "4.24.2", + "@rollup/rollup-win32-ia32-msvc": "4.24.2", + "@rollup/rollup-win32-x64-msvc": "4.24.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standardized-audio-context": { + "version": "25.3.77", + "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.77.tgz", + "integrity": "sha512-Ki9zNz6pKcC5Pi+QPjPyVsD9GwJIJWgryji0XL9cAJXMGyn+dPOf6Qik1AHei0+UNVcc4BOCa0hWLBzlwqsW/A==", + "dependencies": { + "@babel/runtime": "^7.25.6", + "automation-events": "^7.0.9", + "tslib": "^2.7.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sweetalert2": { + "version": "11.14.4", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.14.4.tgz", + "integrity": "sha512-8QMzjxCuinwm18EK5AtYvuhP+lRMRxTWVXy8om9wGlULsXSI4TD29kyih3VYrSXMMBlD4EShFvNC7slhTC7j0w==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tone": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/tone/-/tone-15.0.4.tgz", + "integrity": "sha512-Fr2xATgdkNhzwMZhrU0DXpkXQyambq73hjHRrBiC0Wkc6aPYRdmkySE9kRFAW878zgMiD+Lqvn/uNHt/7hbdnQ==", + "dependencies": { + "standardized-audio-context": "^25.3.70", + "tslib": "^2.3.1" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" + }, + "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, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/vite": { + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/Client/IP-P2/package.json b/Client/IP-P2/package.json new file mode 100644 index 0000000..ab5453e --- /dev/null +++ b/Client/IP-P2/package.json @@ -0,0 +1,39 @@ +{ + "name": "ip-p2", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@google/generative-ai": "^0.21.0", + "@reduxjs/toolkit": "^2.3.0", + "axios": "^1.7.7", + "openai": "^4.68.4", + "react": "^18.3.1", + "react-bootstrap": "^2.10.5", + "react-dom": "^18.3.1", + "react-redux": "^9.1.2", + "react-router-dom": "^6.27.0", + "redux-thunk": "^3.1.0", + "sweetalert2": "^11.14.4", + "tone": "^15.0.4" + }, + "devDependencies": { + "@eslint/js": "^9.13.0", + "@types/react": "^18.3.11", + "@types/react-dom": "^18.3.1", + "@vitejs/plugin-react": "^4.3.3", + "eslint": "^9.13.0", + "eslint-plugin-react": "^7.37.1", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.13", + "globals": "^15.11.0", + "react-howler": "^5.2.0", + "vite": "^5.4.10" + } +} diff --git a/Client/IP-P2/public/vite.svg b/Client/IP-P2/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/Client/IP-P2/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Client/IP-P2/src/App.css b/Client/IP-P2/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/Client/IP-P2/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/Client/IP-P2/src/App.jsx b/Client/IP-P2/src/App.jsx new file mode 100644 index 0000000..d1ceb8e --- /dev/null +++ b/Client/IP-P2/src/App.jsx @@ -0,0 +1,55 @@ +import { Login } from "./pages/LoginPage"; +import { RouterProvider, createBrowserRouter, redirect } from "react-router-dom"; +import { Register } from "./pages/RegisterPage"; +import { Home } from "./pages/Home"; +import { Layout } from "./layouts/layouts"; +import { Profile } from "./pages/Profile"; + +const loginRegister = ()=>{ + const token = localStorage.getItem('access_token') + if (token) { + return redirect ("/") + }else{ + return null + } +} + +function App() { + + const router = createBrowserRouter([ + { + path: "/login", + element: , + loader:loginRegister + }, + { + path: "/register", + element: , + loader:loginRegister + }, + { + element: , + loader: () => { + const token = localStorage.getItem("access_token"); + if (!token) { + throw redirect("/login"); + } else { + return null; + } + }, + children: [ + { + path: "/", + element: , + }, + { + path: "/profile", + element: , + }, + ], + }, + ]); + return ; +} + +export default App; diff --git a/Client/IP-P2/src/assets/react.svg b/Client/IP-P2/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/Client/IP-P2/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Client/IP-P2/src/components/GoogleLogin.jsx b/Client/IP-P2/src/components/GoogleLogin.jsx new file mode 100644 index 0000000..55bcc0d --- /dev/null +++ b/Client/IP-P2/src/components/GoogleLogin.jsx @@ -0,0 +1,61 @@ +import axios from "axios"; +import { useNavigate } from "react-router-dom"; +import loginSfx from "../sounds/mixkit-bonus-earned-in-video-game-2058.wav"; +import { errorSound, sounds } from "../helpers/sound"; +import { useEffect } from "react"; +import Swal from "sweetalert2"; + + +export function GoogleLogin() { + const navigate = useNavigate() + const loginSound = sounds(loginSfx); + + async function handleCredentialResponse(response) { + try { + + console.log("Encoded JWT ID token: " + response.credential); + const { data } = await axios.post( + "https://ip-p2.brandon-hash268.online/googleLogin", + null, + { + headers: { + token: response.credential, + }, + } + ); + localStorage.setItem("access_token", data.access_token); + loginSound.start(); + navigate("/"); + } catch (error) { + errorSound.start(); + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + } + } + + useEffect(() => { + window.google.accounts.id.initialize({ + client_id: + "697357985271-l1afcf7tksdvfcn75hb7qu0rktsie7fg.apps.googleusercontent.com", + callback: handleCredentialResponse, + }); + window.google.accounts.id.renderButton( + document.getElementById("buttonDiv"), + { theme: "outline", size: "large" } // customization attributes + ); + window.google.accounts.id.prompt(); // also display the One Tap dialog + }, []); + return ( +
+ + +
+ ); + +} \ No newline at end of file diff --git a/Client/IP-P2/src/components/ModalUploadImg.jsx b/Client/IP-P2/src/components/ModalUploadImg.jsx new file mode 100644 index 0000000..8867008 --- /dev/null +++ b/Client/IP-P2/src/components/ModalUploadImg.jsx @@ -0,0 +1,81 @@ +import { Modal, Button, Form } from "react-bootstrap"; +import { useState } from "react"; +import axios from "axios"; +import Swal from "sweetalert2"; +import { errorSound, successSound } from "../helpers/sound"; + +// eslint-disable-next-line react/prop-types +export function ImageUploadModal({ show, handleClose, fetchProfile }) { + const [selectedImage, setSelectedImage] = useState(null); + + const handleFileChange = (e) => { + setSelectedImage(e.target.files[0]); + }; + + const handleSubmit = async (e) => { + e.preventDefault(); + let formData = new FormData(); + formData.append("imgUrl", selectedImage); + + try { + if (selectedImage) { + await axios.post( + "https://ip-p2.brandon-hash268.online/profiles", + formData, + { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + } + ); + successSound.start() + fetchProfile(); + } else { + errorSound.start(); + + Swal.fire({ + icon: "error", + title: "Error", + text: "Please Select an Image to Upload", + }); + } + handleClose(); + } catch (error) { + console.log(error); + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.error, + }); + } + }; + + return ( + <> + + + Upload Image + + +
+ + Select Image + + + +
+
+
+ + ); +} diff --git a/Client/IP-P2/src/components/Navbar.jsx b/Client/IP-P2/src/components/Navbar.jsx new file mode 100644 index 0000000..4b5f1d2 --- /dev/null +++ b/Client/IP-P2/src/components/Navbar.jsx @@ -0,0 +1,68 @@ +import { Link, useNavigate } from "react-router-dom"; +import pokeball from "../images/image-removebg-preview.png"; +import logoutSfx from "../sounds/mixkit-arcade-retro-game-over-213.wav"; +import { globalSound, sounds } from "../helpers/sound"; + +export function Navbar() { + const navigate = useNavigate(); + const logout = () => { + localStorage.removeItem("access_token"); + logoutSound.start(); + navigate("/login"); + }; + const logoutSound = sounds(logoutSfx); + + + return ( + <> + + + ); +} diff --git a/Client/IP-P2/src/components/PokemonCard.css b/Client/IP-P2/src/components/PokemonCard.css new file mode 100644 index 0000000..59dda23 --- /dev/null +++ b/Client/IP-P2/src/components/PokemonCard.css @@ -0,0 +1,58 @@ +.container { + position: relative; + display: flex; + justify-content: end; + margin-right: 20px; +} + +::-webkit-scrollbar { + width: 7px; + background-color: #910305; +} + +::-webkit-scrollbar-thumb { + background-color: #fb7248; +} + +.right { + display: flex; + align-items: center; + width: 38%; + height: 55px; + margin: 10px 0; + padding: 5px 20px; + font-size: 24px; + font-weight: 700; +} + +.right:hover { + background: linear-gradient(135deg, #f0501d 40%, black 40%); + border-radius: 50px; + cursor: pointer; +} + +.right:hover > :nth-child(3) { + color: white; +} + +.right:hover > :nth-child(3) { + filter: invert(1); +} + +.shows { + position: fixed; + display: flex; + align-items: center; + justify-content: space-around; + flex-direction: column; + width: 450px; + height: 75vh; + left: 250px; + bottom: 1%; + z-index: 2; +} + +.shows { + filter: drop-shadow(2px 4px 12x black); + max-width: 300px; +} diff --git a/Client/IP-P2/src/components/PokemonCard.jsx b/Client/IP-P2/src/components/PokemonCard.jsx new file mode 100644 index 0000000..4315167 --- /dev/null +++ b/Client/IP-P2/src/components/PokemonCard.jsx @@ -0,0 +1,132 @@ +/* eslint-disable react/prop-types */ +import "./PokemonCard.css"; +import pokeball from "../images/image-removebg-preview.png"; +import { useEffect, useState } from "react"; +import axios from "axios"; +import { useNavigate } from "react-router-dom"; +import Swal from "sweetalert2"; +import { gemini } from "../helpers/Gemini"; +import hoverSound from "../sounds/mixkit-player-jumping-in-a-video-game-2043.wav"; +import { errorSound, sounds } from "../helpers/sound"; +import funFactSound from "../sounds/mixkit-winning-a-coin-video-game-2069.wav" +import pokeballCatchSfx from "../sounds/pokemon-caught!-(pokemon-go-jingle)-made-with-Voicemod.mp3" + + +export function PokemonCard({ id, name, img, type, weight, height }) { + const [isShown, setIsShown] = useState(false); + + const sound = sounds(hoverSound) + const ffSound = sounds(funFactSound) + const pokeballCatchSound = sounds(pokeballCatchSfx); + + const navigate = useNavigate(); + + const handleFavorite = async () => { + try { + // pokeballCatchSound.start(); + await axios.post( + "https://ip-p2.brandon-hash268.online/favorites", + { + pokemonName: name, + }, + { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + } + ); + if (pokeballCatchSound.loaded) { + pokeballCatchSound.start(); + } else { + pokeballCatchSound.onload = () => { + pokeballCatchSound.start(); + }; + } + navigate("/profile"); + } catch (error) { + console.log("🚀 ~ handleFavorite ~ error:", error) + errorSound.start(); + Swal.fire({ + icon: "error", + title: "Error", + text: "You already have this Pokemon on favorited", + }); + } + }; + + const FunFact = async (pokemon) => { + const response = await gemini(pokemon); + ffSound.start() + Swal.fire({ + icon: "info", + title: `Fun Fact about ${pokemon}`, + text: response, + }); + }; + + + const onMouse = async () => { + setIsShown(true); + sound.start(); + }; + + const onMouseLeave = () => { + setIsShown(false); + sound.stop(); + }; + + useEffect(() => { + pokeballCatchSound.load(); + }, []); + + return ( +
+ {isShown && ( +
+ {name} + + + + + + + + + + + + + + + +
TypeHeightWeight
{type.replace(/^./, (str) => str.toUpperCase())}{height * 10} cm{weight} lbs
+
+ )} +
{ + FunFact(name); + }} + > + {name} +

No. {id}

+

{name}

+ pokeball { + e.stopPropagation(); + handleFavorite(); + }} + /> +
+
+ ); +} diff --git a/Client/IP-P2/src/components/ProfileEdit.jsx b/Client/IP-P2/src/components/ProfileEdit.jsx new file mode 100644 index 0000000..ae8e043 --- /dev/null +++ b/Client/IP-P2/src/components/ProfileEdit.jsx @@ -0,0 +1,104 @@ +import { Modal, Button, Form, Image } from "react-bootstrap"; +import { useEffect, useState } from "react"; +import axios from "axios"; +import Swal from "sweetalert2"; +import { errorSound, sounds, successSound } from "../helpers/sound"; +import selectSfx from "../sounds/mixkit-player-jumping-in-a-video-game-2043.wav" + +// eslint-disable-next-line react/prop-types +export function ProfileEditModal({ show, handleClose, fetchData, name, profiles }) { + const [selectedImage, setSelectedImage] = useState([]); + const [userName, setUserName] = useState(""); + + const selectSound = sounds(selectSfx) + // Handle image selection + + // Handle form submission + useEffect(() => { + setUserName(name); + }, [name]); + + const handleSubmit = async (e) => { + e.preventDefault(); + try { + await axios.patch( + "https://ip-p2.brandon-hash268.online/users", + { userName, ProfileId: selectedImage }, + { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + } + ); + successSound.start() + Swal.fire({ + icon: "success", + title: "Success", + text: "Profile updated successfully!", + }); + fetchData(); + handleClose(); + } catch (error) { + console.log(error); + errorSound.start(); + Swal.fire({ + icon: "error", + title: "Error", + text: + error.response.data.message == + "ProfileId cannot be an array or an object" + ? "You must select an Image first" + : error.response.data.message, + }); + } + }; + + const handleChangeImg=(id)=>{ + setSelectedImage(id); + selectSound.start() + } + + return ( + + {/* {console.log(userName)} */} + + + Edit Profile Picture + + +
+
+ {profiles.map((e) => ( + handleChangeImg(e.id)} + key={e.id} + /> + ))} +
+ + setUserName(e.target.value)} + value={userName} + type="text" + placeholder="User Name" + className="mb-2" + /> + + +
+
+
+ ); +} diff --git a/Client/IP-P2/src/helpers/Gemini.js b/Client/IP-P2/src/helpers/Gemini.js new file mode 100644 index 0000000..2d6bca2 --- /dev/null +++ b/Client/IP-P2/src/helpers/Gemini.js @@ -0,0 +1,13 @@ +import { GoogleGenerativeAI } from"@google/generative-ai" + + +export const gemini = async(pokemon)=>{ + const genAI = new GoogleGenerativeAI("AIzaSyDqXCiuqBixYQxmOuanMEkShpeWsqWLVhg"); + const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" }); + + const prompt = `Give me only 1 fun fact about ${pokemon} pokemon`; + + const result = await model.generateContent(prompt); + return result.response.text() + +} \ No newline at end of file diff --git a/Client/IP-P2/src/helpers/sound.jsx b/Client/IP-P2/src/helpers/sound.jsx new file mode 100644 index 0000000..5c81eb4 --- /dev/null +++ b/Client/IP-P2/src/helpers/sound.jsx @@ -0,0 +1,30 @@ +import * as Tone from "tone"; +import errorSfx from "../sounds/mixkit-wrong-answer-fail-notification-946.wav" +import navbarSfx from "../sounds/mixkit-gaming-lock-2848.wav"; +import releaseSfx from "../sounds/sound-effects-pokemon-anime-7-pokemon-out.mp3" +import successSfx from "../sounds/mixkit-unlock-game-notification-253.wav"; + +export function sounds(src, volume = -12) { + // default volume is 0 dB + const player = new Tone.Player(src).toDestination(); + player.volume.value = volume; // set the volume in dB + return player; +} +export function loopSounds(src) { + return new Tone.Player({ + url:src, + loop: true, + }).toDestination(); +} + + + +export const errorSound = sounds(errorSfx) +export const globalSound = sounds(navbarSfx); +export const releaseSound = sounds(releaseSfx); +export const successSound = sounds(successSfx); + + + + + diff --git a/Client/IP-P2/src/images/clipart1298306.png b/Client/IP-P2/src/images/clipart1298306.png new file mode 100644 index 0000000..a2e4502 Binary files /dev/null and b/Client/IP-P2/src/images/clipart1298306.png differ diff --git a/Client/IP-P2/src/images/image-removebg-preview.png b/Client/IP-P2/src/images/image-removebg-preview.png new file mode 100644 index 0000000..7580c22 Binary files /dev/null and b/Client/IP-P2/src/images/image-removebg-preview.png differ diff --git a/Client/IP-P2/src/images/image.png b/Client/IP-P2/src/images/image.png new file mode 100644 index 0000000..08ece7b Binary files /dev/null and b/Client/IP-P2/src/images/image.png differ diff --git a/Client/IP-P2/src/index.css b/Client/IP-P2/src/index.css new file mode 100644 index 0000000..6119ad9 --- /dev/null +++ b/Client/IP-P2/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/Client/IP-P2/src/layouts/layouts.jsx b/Client/IP-P2/src/layouts/layouts.jsx new file mode 100644 index 0000000..61ddd32 --- /dev/null +++ b/Client/IP-P2/src/layouts/layouts.jsx @@ -0,0 +1,11 @@ +import { Outlet } from "react-router-dom"; +import { Navbar } from "../components/Navbar"; + +export function Layout() { + return ( + <> + + + + ); +} diff --git a/Client/IP-P2/src/main.jsx b/Client/IP-P2/src/main.jsx new file mode 100644 index 0000000..dcac49d --- /dev/null +++ b/Client/IP-P2/src/main.jsx @@ -0,0 +1,14 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import {Provider} from "react-redux" +import stores from "./stores/index.js" +// import './index.css' +import App from "./App.jsx"; + +createRoot(document.getElementById("root")).render( + + + + + +); diff --git a/Client/IP-P2/src/pages/Home.css b/Client/IP-P2/src/pages/Home.css new file mode 100644 index 0000000..6a9dd12 --- /dev/null +++ b/Client/IP-P2/src/pages/Home.css @@ -0,0 +1,14 @@ +.app-container{ + width: 100%; + height: 100vh; + background: linear-gradient(115deg,#fff1ff 48%),#f3553f 48% 55%, #fb7248 55%; +} + +.all-container{ + height: 86vh; + position: absolute; + top: 120px; + right: 30px; + overflow-y: scroll; + width: 100%; +} \ No newline at end of file diff --git a/Client/IP-P2/src/pages/Home.jsx b/Client/IP-P2/src/pages/Home.jsx new file mode 100644 index 0000000..0ba2fcf --- /dev/null +++ b/Client/IP-P2/src/pages/Home.jsx @@ -0,0 +1,129 @@ +import { useState, useEffect } from "react"; +import { useDispatch, useSelector } from "react-redux"; +import { fetchPokemon } from "../stores/PokemonSlice"; +import { PokemonCard } from "../components/PokemonCard"; +import sortSfx from "../sounds/mixkit-unlock-new-item-game-notification-254.wav"; +import { sounds } from "../helpers/sound"; +import "./Home.css"; + +export function Home() { + const [displayed, setDisplayedPokemon] = useState([]); + const dispatch = useDispatch(); + const pokemonList = useSelector((state) => state.pokemon.list); + const loading = useSelector((state) => state.pokemon.loading); + + const sortSound = sounds(sortSfx); + + useEffect(() => { + if (!pokemonList.length) { + dispatch(fetchPokemon()); + } else { + setDisplayedPokemon(pokemonList); + } + }, [dispatch, pokemonList]); + + // Filter Pokémon by selected type + const handleTypeFilter = (type) => { + sortSound.start(); + const filtered = + type === "All" + ? pokemonList + : pokemonList.filter((p) => + p.types.some((t) => t.type.name === type.toLowerCase()) + ); + setDisplayedPokemon(filtered); + }; + + if (loading) return
Loading...
; + + return ( +
+
+ {/* Buttons for filtering Pokémon types */} +
+ + + + + + + + + +
+
+ {displayed.map((e) => ( + str.toUpperCase())} + type={e.types[0].type.name} + weight={e.weight} + height={e.height} + stats={e.stats.map((stat) => stat.base_stat).slice(0, 3)} + statsName={e.stats.map((stat) => stat.stat.name).slice(0, 3)} + /> + ))} +
+
+
+ ); +} diff --git a/Client/IP-P2/src/pages/LoginPage.jsx b/Client/IP-P2/src/pages/LoginPage.jsx new file mode 100644 index 0000000..c0b0d10 --- /dev/null +++ b/Client/IP-P2/src/pages/LoginPage.jsx @@ -0,0 +1,142 @@ +import { useState } from "react"; +import { Link, useNavigate } from "react-router-dom"; +import Swal from "sweetalert2"; +import axios from "axios"; +import loginSfx from "../sounds/mixkit-bonus-earned-in-video-game-2058.wav" +import { errorSound, sounds } from "../helpers/sound"; +import { GoogleLogin } from "../components/GoogleLogin"; + +// import "bootstrap/dist/css/bootstrap.min.css"; + +export function Login() { + const [user, setUser] = useState({ + email: "", + password: "", + }); + + const loginSound = sounds(loginSfx) + + const handleChange = (e) => { + const { name, value } = e.target; + setUser((prev) => ({ + ...prev, + [name]: value, + })); + console.log(user); + }; + + const navigate = useNavigate(); + const handleSubmit = async (e) => { + e.preventDefault(); + try { + const { data } = await axios.post( + "https://ip-p2.brandon-hash268.online/login", + user + ); + localStorage.setItem("access_token", data.access_token); + loginSound.start() + navigate("/"); + } catch (error) { + console.log("🚀 ~ handleSubmit ~ error:", error); + errorSound.start() + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + } + }; + + return ( +
+
+ {/* Left Image */} + Pokémon Logo + + {/* Form Container */} +
+
+

Pokémon Trainer Login

+
+
+ +
+
+ +
+ + + +

+ Don't have an Account? Register +

+
+
+
+
+
+ ); +} diff --git a/Client/IP-P2/src/pages/Profile.jsx b/Client/IP-P2/src/pages/Profile.jsx new file mode 100644 index 0000000..fd81e40 --- /dev/null +++ b/Client/IP-P2/src/pages/Profile.jsx @@ -0,0 +1,244 @@ +import axios from "axios"; +import { useEffect, useState } from "react"; +import openBall from "../images/clipart1298306.png"; +import { ImageUploadModal } from "../components/ModalUploadImg"; +import { ProfileEditModal } from "../components/ProfileEdit"; +import { errorSound, globalSound, releaseSound } from "../helpers/sound"; +import { useDispatch, useSelector } from "react-redux"; +import { fetchPokemon } from "../stores/PokemonSlice"; +import Swal from "sweetalert2"; + +export function Profile() { + const [user, setUser] = useState({}); + const [show, setShow] = useState(false); + const [showEditModal, setShowEditModal] = useState(false); + const [favorites, setFavorites] = useState([]); + const [profiles,setProfiles] = useState([]) + + const dispatch = useDispatch(); + const pokemonList = useSelector((state) => state.pokemon.list); + + const handleClose = () => { + setShow(false); + }; + + const handleOpen = () => { + globalSound.start(); + setShow(true); + }; + + const fetchFavorite = async () => { + try { + const { data } = await axios.get("https://ip-p2.brandon-hash268.online/favorites", { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + }); + // console.log(data,"<<<<<<<"); + + setFavorites(data); + } catch (error) { + console.log("🚀 ~ fetchFavorite ~ error:", error) + errorSound.start(); + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + } + }; + + const fetchUser = async () => { + try { + const { data } = await axios.get("https://ip-p2.brandon-hash268.online/users", { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + }); + // console.log(data); + setUser(data); + } catch (error) { + console.log("🚀 ~ fetchUser ~ error:", error) + errorSound.start(); + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + } + }; + + const fetchProfile = async () => { + try { + const { data } = await axios.get( + "https://ip-p2.brandon-hash268.online/profiles", + { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + } + ); + // console.log(data, "<<<<<"); + + setProfiles (data) + } catch (error) { + errorSound.start(); + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + } + }; + const handleUnfavorited = async (pokemonName) => { + try { + releaseSound.start(); + await axios.delete("https://ip-p2.brandon-hash268.online/favorites/" + pokemonName, { + headers: { + Authorization: `Bearer ${localStorage.getItem("access_token")}`, + }, + }); + fetchFavorite(); + Swal.fire({ + icon:"success", + title:"Success!", + text:`Pokemon ${pokemonName} is released!` + }) + } catch (error) { + console.log("🚀 ~ handleUnfavorited ~ error:", error) + errorSound.start(); + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + } + }; + + useEffect(() => { + fetchUser(); + fetchFavorite(); + fetchProfile() + dispatch(fetchPokemon()); + // releaseSound.load() + }, [dispatch]); + + + return ( + <> +
+
+
+
+
+
+
+ Generic placeholder image +
+
+
{user.userName}
+

{user.email}

+ +
+ + setShowEditModal(false)} + fetchData={fetchUser} + name={user.userName} + profiles={profiles} + /> + + {user.role == "admin" && ( + + )} +
+
+
+
+
+
+
+
+ +
+ {pokemonList + .filter((pokemon) => + favorites.some( + (fav) => fav.pokemonName.toLowerCase() == pokemon.name + ) + ) + .map((match, i) => ( +
+ {console.log(match)} +
+ {match.name} +
+
+
+ {match.name.replace(/^./, (str) => str.toUpperCase())} +
+

+ + handleUnfavorited( + match.name.replace(/^./, (str) => str.toUpperCase()) + ) + } + /> +
+
+ ))} +
+ + ); +} diff --git a/Client/IP-P2/src/pages/RegisterPage.jsx b/Client/IP-P2/src/pages/RegisterPage.jsx new file mode 100644 index 0000000..f73e026 --- /dev/null +++ b/Client/IP-P2/src/pages/RegisterPage.jsx @@ -0,0 +1,143 @@ +import { useState } from "react"; +import { Link, useNavigate } from "react-router-dom"; +import Swal from "sweetalert2"; +import axios from "axios"; +import { GoogleLogin } from "../components/GoogleLogin"; + +// import "bootstrap/dist/css/bootstrap.min.css"; + +export function Register() { + const [user, setUser] = useState({ + userName:"", + email: "", + password: "", + }); + + const handleChange = (e) => { + const { name, value } = e.target; + setUser((prev) => ({ + ...prev, + [name]: value, + })); + console.log(user); + }; + + const navigate = useNavigate(); + + const handleSubmit = async (e) => { + e.preventDefault(); + try { + await axios.post("https://ip-p2.brandon-hash268.online/register", user); + navigate("/login"); + } catch (error) { + console.log("🚀 ~ handleSubmit ~ error:", error); + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + } + }; + return ( +
+
+ {/* Left Image */} + Pokémon Logo + + {/* Form Container */} +
+
+

Pokémon Trainer Register

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

+ have an Account? Login +

+
+
+
+
+
+ ); +} diff --git a/Client/IP-P2/src/sounds/1-04. Oak's Laboratory.mp3 b/Client/IP-P2/src/sounds/1-04. Oak's Laboratory.mp3 new file mode 100644 index 0000000..33b06c7 Binary files /dev/null and b/Client/IP-P2/src/sounds/1-04. Oak's Laboratory.mp3 differ diff --git a/Client/IP-P2/src/sounds/1-04. Oak's Laboratory.wav b/Client/IP-P2/src/sounds/1-04. Oak's Laboratory.wav new file mode 100644 index 0000000..e768125 Binary files /dev/null and b/Client/IP-P2/src/sounds/1-04. Oak's Laboratory.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-arcade-retro-game-over-213.wav b/Client/IP-P2/src/sounds/mixkit-arcade-retro-game-over-213.wav new file mode 100644 index 0000000..57c8275 Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-arcade-retro-game-over-213.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-arcade-space-shooter-dead-notification-272.wav b/Client/IP-P2/src/sounds/mixkit-arcade-space-shooter-dead-notification-272.wav new file mode 100644 index 0000000..3394d88 Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-arcade-space-shooter-dead-notification-272.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-bonus-earned-in-video-game-2058.wav b/Client/IP-P2/src/sounds/mixkit-bonus-earned-in-video-game-2058.wav new file mode 100644 index 0000000..9dfcb70 Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-bonus-earned-in-video-game-2058.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-completion-of-a-level-2063.wav b/Client/IP-P2/src/sounds/mixkit-completion-of-a-level-2063.wav new file mode 100644 index 0000000..d4dc5ac Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-completion-of-a-level-2063.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-gaming-lock-2848.wav b/Client/IP-P2/src/sounds/mixkit-gaming-lock-2848.wav new file mode 100644 index 0000000..d079479 Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-gaming-lock-2848.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-player-jumping-in-a-video-game-2043.wav b/Client/IP-P2/src/sounds/mixkit-player-jumping-in-a-video-game-2043.wav new file mode 100644 index 0000000..3291c10 Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-player-jumping-in-a-video-game-2043.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-unlock-game-notification-253.wav b/Client/IP-P2/src/sounds/mixkit-unlock-game-notification-253.wav new file mode 100644 index 0000000..bf38f0c Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-unlock-game-notification-253.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-unlock-new-item-game-notification-254.wav b/Client/IP-P2/src/sounds/mixkit-unlock-new-item-game-notification-254.wav new file mode 100644 index 0000000..a7c7dbb Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-unlock-new-item-game-notification-254.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-winning-a-coin-video-game-2069.wav b/Client/IP-P2/src/sounds/mixkit-winning-a-coin-video-game-2069.wav new file mode 100644 index 0000000..d8941f5 Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-winning-a-coin-video-game-2069.wav differ diff --git a/Client/IP-P2/src/sounds/mixkit-wrong-answer-fail-notification-946.wav b/Client/IP-P2/src/sounds/mixkit-wrong-answer-fail-notification-946.wav new file mode 100644 index 0000000..87b6e1e Binary files /dev/null and b/Client/IP-P2/src/sounds/mixkit-wrong-answer-fail-notification-946.wav differ diff --git a/Client/IP-P2/src/sounds/pokeball opening sound FX (online-audio-converter.com).wav b/Client/IP-P2/src/sounds/pokeball opening sound FX (online-audio-converter.com).wav new file mode 100644 index 0000000..a9c16ef Binary files /dev/null and b/Client/IP-P2/src/sounds/pokeball opening sound FX (online-audio-converter.com).wav differ diff --git a/Client/IP-P2/src/sounds/pokemon-caught!-(pokemon-go-jingle)-made-with-Voicemod.mp3 b/Client/IP-P2/src/sounds/pokemon-caught!-(pokemon-go-jingle)-made-with-Voicemod.mp3 new file mode 100644 index 0000000..31c5891 Binary files /dev/null and b/Client/IP-P2/src/sounds/pokemon-caught!-(pokemon-go-jingle)-made-with-Voicemod.mp3 differ diff --git a/Client/IP-P2/src/sounds/sound-effects-pokemon-anime-7-pokemon-out.mp3 b/Client/IP-P2/src/sounds/sound-effects-pokemon-anime-7-pokemon-out.mp3 new file mode 100644 index 0000000..1f3ec26 Binary files /dev/null and b/Client/IP-P2/src/sounds/sound-effects-pokemon-anime-7-pokemon-out.mp3 differ diff --git a/Client/IP-P2/src/stores/PokemonSlice.js b/Client/IP-P2/src/stores/PokemonSlice.js new file mode 100644 index 0000000..eca6d72 --- /dev/null +++ b/Client/IP-P2/src/stores/PokemonSlice.js @@ -0,0 +1,56 @@ +// redux/pokemonSlice.js +import { createSlice } from "@reduxjs/toolkit"; +import axios from "axios"; +import Swal from "sweetalert2"; + +// Async thunk to fetch Pokémon +export const fetchPokemon = () => { + return async (dispacth) => { + try { + // fetchPokemonName + const { data } = await axios.get( + "https://pokeapi.co/api/v2/pokemon?limit=200" + ); + const results = data.results; + + // fetchDetail + const pokemonPromises = results.map((e) => + axios + .get(`https://pokeapi.co/api/v2/pokemon/${e.name}`) + .then((res) => res.data) + ); + + const allPokemonData = await Promise.all(pokemonPromises); + // console.log(allPokemonData); + + dispacth(fetchSuccess(allPokemonData)); + } catch (error) { + Swal.fire({ + icon: "error", + title: "Error", + text: error.response.data.message, + }); + }finally{ + dispacth(fetchLoading(false)) + } + }; +}; + +const pokemonSlice = createSlice({ + name: "pokemon", + initialState: { + list: [], + loading: false, + }, + reducers: { + fetchSuccess: (state, action) => { + state.list = action.payload; + }, + fetchLoading: (state, action) => { + state.loading = action.payload; + } + }, +}); +export const { fetchSuccess, fetchLoading } = pokemonSlice.actions; + +export default pokemonSlice.reducer; diff --git a/Client/IP-P2/src/stores/index.js b/Client/IP-P2/src/stores/index.js new file mode 100644 index 0000000..0e4e1ec --- /dev/null +++ b/Client/IP-P2/src/stores/index.js @@ -0,0 +1,12 @@ +import { configureStore } from "@reduxjs/toolkit"; +import pokemonReducer from "./pokemonSlice"; + +export default configureStore({ + reducer: { + pokemon: pokemonReducer, + }, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({ + serializableCheck: false, + }), +}); diff --git a/Client/IP-P2/vite.config.js b/Client/IP-P2/vite.config.js new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/Client/IP-P2/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/Server/.env example b/Server/.env example new file mode 100644 index 0000000..2e28f1d --- /dev/null +++ b/Server/.env example @@ -0,0 +1,9 @@ +NODE_ENV = development +PORT = +secretKey = +CloudinaryName = +CloudinaryKey = +CloudinarySecret = +GoogleClientId= +DATABASE_URL = + diff --git a/Server/.gitignore b/Server/.gitignore new file mode 100644 index 0000000..37d7e73 --- /dev/null +++ b/Server/.gitignore @@ -0,0 +1,2 @@ +node_modules +.env diff --git a/README.md b/Server/README.md similarity index 100% rename from README.md rename to Server/README.md diff --git a/Server/__test__/All.test.js b/Server/__test__/All.test.js new file mode 100644 index 0000000..c8f4504 --- /dev/null +++ b/Server/__test__/All.test.js @@ -0,0 +1,204 @@ +const request = require("supertest"); +const app = require("../app"); +const { User, Favorite, Profile } = require("../models"); +const bcrypt = require("bcrypt"); + +let token = ""; +let token2 = ""; +beforeAll(async () => { + let data = [ + { + userName: "admin123", + email: "admin123@email.com", + password: await bcrypt.hash("admin123", 10), + }, + { + userName: "admin1234", + email: "admin1234@email.com", + password: await bcrypt.hash("admin123", 10), + }, + ]; + await User.bulkCreate(data); + // console.log(user); + + const response = await request(app).post("/login").send({ + email: "admin123@email.com", + password: "admin123", + }); + + const response2 = await request(app).post("/login").send({ + email: "admin1234@email.com", + password: "admin123", + }); + + token = response.body.access_token; + token2 = response2.body.access_token; + // console.log(response.body,"<<<<<<<<<<<<<<<<<<<<<<<<<"); + // console.log(token, "<<<<<<<<<<"); + + let favorite = [ + { + UserId: 1, + pokemonName: "Pikachu", + }, + { + UserId: 2, + pokemonName: "Bulbasaur", + }, + ]; + await Favorite.bulkCreate(favorite); + + let pictures = [ + { + imgUrl: "pict1", + }, + { + imgUrl: "pict2", + }, + ]; + await Profile.bulkCreate(pictures); +}); + +afterAll(async () => { + await User.destroy({ + where: {}, + restartIdentity: true, + cascade: true, + truncate: true, + }); + await Favorite.destroy({ + where: {}, + restartIdentity: true, + cascade: true, + truncate: true, + }); + await Profile.destroy({ + where: {}, + restartIdentity: true, + cascade: true, + truncate: true, + }); +}); + +describe("Favorite: Let's check the status and response when", () => { + test("Add Favorite is successful", async () => { + const response = await request(app) + .post("/favorites") + .set("Authorization", `Bearer ${token}`) + .send({ + UserId: 1, + pokemonName: "Bulbasaur", + }); + // console.log("🚀 ~ test ~ response:", response.body); + expect(response.status).toBe(201); + expect(response.body).toEqual( + expect.objectContaining({ + UserId: 1, + pokemonName: "Bulbasaur", + }) + ); + }); + + test("Add Favorite is failed because Token is not sended/wrong", async () => { + const response = await request(app).post("/favorites").send({ + UserId: 1, + pokemonName: "Bulbasaur", + }); + // console.log("🚀 ~ response ~ response:", response.body); + expect(response.status).toBe(401); + expect(response.body.message).toBe("Invalid Token"); + }); + + test("Delete Favorite is successful", async () => { + const response = await request(app) + .delete("/favorites/Pikachu") + .set("Authorization", `Bearer ${token}`); + // console.log("🚀 ~ response ~ response:<<<<<<<<<<<<<<", response.body); + expect(response.status).toBe(200); + expect(response.body).toEqual( + expect.objectContaining({ + pokemonName: "Pikachu", + UserId: 1, + }) + ); + }); + + test("Delete Favorite is failed because Token is not sended/wrong", async () => { + const response = await request(app).delete("/favorites/Bulbasaur"); + // console.log("🚀 ~ response ~ response:", response.body); + expect(response.status).toBe(401); + expect(response.body.message).toBe("Invalid Token"); + }); +}); + +describe("User: Let's check the status and response when", () => { + test("Get user successful", async () => { + const response = await request(app) + .get("/users") + .set("Authorization", `Bearer ${token}`); + // console.log("🚀 ~ response ~ response:", response.body); + expect(response.status).toBe(200); + expect(response.body).toEqual( + expect.objectContaining({ + id: 1, + userName: "admin123", + }) + ); + }); + + test("Get user failed because Token is not sended/wrong", async () => { + const response = await request(app).get("/users"); + // console.log("🚀 ~ response ~ response:", response.body); + expect(response.status).toBe(401); + expect(response.body.message).toBe("Invalid Token"); + }); + + test("Patch user successful", async () => { + const response = await request(app) + .patch("/users") + .set("Authorization", `Bearer ${token}`) + .send({ + userName: "admin2", + ProfileId: 1, + }); + // console.log("🚀 ~ response ~ response:<<<<<<<<<<<<<<<", response.body); + + expect(response.status).toBe(200); + expect(response.body).toEqual( + expect.objectContaining({ + id: 1, + userName: "admin2", + ProfileId: 1, + }) + ); + }); + + test("Patch user failed because Token is not sended/wrong", async () => { + const response = await request(app).patch("/users").send({ + userName: "admin2", + }); + // console.log("🚀 ~ response ~ response:", response.body); + expect(response.status).toBe(401); + expect(response.body.message).toBe("Invalid Token"); + }); +}); + + +describe("Profile: Let's check the status and response when", () => { + test("Get Profile is successful", async () => { + const response = await request(app) + .get("/profiles") + .set("Authorization", `Bearer ${token}`); + // console.log("🚀 ~ response ~ response:>>>>>>>>>", response.body); + expect(response.status).toBe(200); + expect(response.body.length).toBeGreaterThan(0); + }); + + test("Get Profile failed because Token is not sended/wrong", async () => { + const response = await request(app) + .get("/profiles") + // console.log("🚀 ~ response ~ response:>>>>>>>>>", response.body); + expect(response.status).toBe(401); + expect(response.body.message).toBe("Invalid Token"); + }); +}); diff --git a/Server/__test__/UserLoginRegister.test.js b/Server/__test__/UserLoginRegister.test.js new file mode 100644 index 0000000..ee7365b --- /dev/null +++ b/Server/__test__/UserLoginRegister.test.js @@ -0,0 +1,145 @@ +const request = require("supertest"); +const app = require("../app"); +const { User } = require("../models"); + +beforeAll(async () => { + let data = { + userName:"admin123", + email: "admin123@email.com", + password: "admin123", + }; + await User.create(data); +}); + +afterAll(async () => { + await User.destroy({ + where: {}, + restartIdentity: true, + cascade: true, + truncate: true, + }); +}); + +describe("Login: Let's check the status and response when", () => { + test("Login is successful and an access token is returned", async () => { + const response = await request(app).post("/login").send({ + email: "admin123@email.com", + password: "admin123", + }); + // console.log("🚀 ~ response ~ response:", response.body); + expect(response.status).toBe(200); + expect(response.body).toHaveProperty("access_token"); + }); + + test("No email is provided", async () => { + const response = await request(app).post("/login").send({ + email: "", + password: "admin123", + }); + // console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(409); + expect(response.body.message).toBe("Email is required"); + }); + + test("No password is provided", async () => { + const response = await request(app).post("/login").send({ + email: "admin123@email.com", + password: "", + }); + // console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(409); + expect(response.body.message).toBe("Password is required"); + }); + + test("The provided email is invalid or not registered", async () => { + const response = await request(app).post("/login").send({ + email: "admin1234@email.com", + password: "admin123", + }); + // console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(401); + expect(response.body.message).toBe("Invalid email or password"); + }); + + test("The password provided is incorrect or does not match", async () => { + const response = await request(app).post("/login").send({ + email: "admin123@email.com", + password: "admin12", + }); + // console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(401); + expect(response.body.message).toBe("Invalid email or password"); + }); +}); + +describe("Registration: Let's check the status and response when", () => { + test("Registration is successful and a user is created", async () => { + const response = await request(app).post("/register").send({ + userName:"new", + email: "newuser@email.com", + password: "newpassword", + }); + console.log("🚀 ~ response ~ response:", response.body); + expect(response.status).toBe(201); + expect(response.body).toEqual( + expect.objectContaining({ + email: `newuser@email.com`, + }) + ); + }); + + test("Email is not provided", async () => { + const response = await request(app).post("/register").send({ + userName:"new", + email: "", + password: "newpassword", + }); + // console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(400); + expect(response.body.message[0]).toBe("Email is required"); + }); + + test("Password is not provided", async () => { + const response = await request(app).post("/register").send({ + userName: "new", + email: "newuser@email.com", + password: "", + }); + console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(400); + expect(response.body.message[0]).toBe("Password is required"); + }); + + test("User Name is not provided", async () => { + const response = await request(app).post("/register").send({ + userName: "", + email: "newuser@email.com", + password: "new", + }); + console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(400); + expect(response.body.message[0]).toBe("User Name is required"); + }); + + test("Email is already in use", async () => { + const response = await request(app).post("/register").send({ + userName: "new", + email: "admin123@email.com", + password: "admin123", + }); + // console.log("🚀 ~ response ~ response:", response.body); + + expect(response.status).toBe(409); + expect(response.body.message).toBe( + "Email has already been used by another User" + ); + }); +}); + diff --git a/Server/api.docs.md b/Server/api.docs.md new file mode 100644 index 0000000..39ebaa7 --- /dev/null +++ b/Server/api.docs.md @@ -0,0 +1,428 @@ +# Hacktiv PokeDex Documentation + +## Models + +### Base Url +- https://ip-p2.brandon-hash268.online/ +### User + +- email: string, required, unique +- userName: string, required +- password: string, required +- role: string, defaults to "user" + +### Favorite + +- pokemonName: string, required +- UserId: integer, required + +### Profile + +- imgUrl: string, required, associated with User + +--- + +## Endpoints + +### Public Endpoints + +- `POST /register` - Register a new user +- `POST /login` - Login an existing user +- `POST /googleLogin` - Login using Google OAuth + +### Authentication Required + +- `GET /favorites` - Get all favorites of the authenticated user +- `POST /favorites` - Add a new favorite for the authenticated user +- `GET /users` - Get details of the authenticated user +- `PATCH /users` - Update authenticated user's details +- `GET /profiles` - Retrieve all profiles +- `DELETE /favorites/:pokemonName` - Delete a favorite by pokemonName + +### Admin Authentication Required + +- `POST /profiles` - Create a new profile with an image + +--- + +## Endpoints + +### 1. Login + +- **URL**: `/login` +- **Method**: `POST` +- **Description**: Logs in a user with their credentials. +- **Success Response**: + +**Request Body** + +```json +{ + "email": "string", + "userName": "string", + "password": "string" +} +``` + +- **Success Response**: + - **Status**: `200 OK` + ```json + { + "access_token": "string" + } + ``` +- **Error Response**: + - **Status**: `400 Bad Request` + Missing email: + ```json + { + "message": "Email is required" + } + ``` + Missing password: + ```json + { + "message": "Password is required" + } + ``` + - **Status**: `401 Unauthorized` + Invalid login: + ```json + { + "message": "Invalid email or password" + } + ``` + +--- + +### 2. Add User + +- **URL**: `/register` +- **Method**: `POST` +- **Description**: Allows an admin to add a new user. +- **Success Response**: + - **Status**: `201 Created` + - **Response**: + ```json + { + "id": "integer", + "username": "string", + "email": "string", + "address": "string", + "phoneNumber": "string" + } + ``` +- **Error Response**: + - **Status**: `400 Bad Request` + - **Response**: + ```json + { + "message": "User with that Email already Exist" + } + OR + { + "message": "Password is required" + } + OR + { + "message": "Email cant be empty" + } + ``` + +--- + +### 3. Google Login + +- **URL**: `/login` +- **Method**: `POST` +- **Description**: Logs in a user with their credentials. + +**Request Body** + +```json +{ + "token": "string" +} +``` + +- **Success Response**: + - **Status**: `200 OK` + ```json + { + "access_token": "string" + } + ``` + +--- + +### 4. GET /favorites + +- **URL**: `/favorites` +- **Method**: `GET` +- **Description**: Retrieves all favorites of the authenticated user. + +**Request Headers** + +```json +{ + "Authorization": "Bearer " +} +``` + +- **Success Response**: + + - **Status**: `200 OK` + + ```json + [ + { + "pokemonName": "string", + "UserId": "integer" + } + ] + ``` + +--- + +### 5. POST /favorites + +- **URL**: `/favorites` +- **Method**: `POST` +- **Description**: Adds a new favorite for the authenticated user. + +**Request Headers** + +```json +{ + "Authorization": "Bearer " +} +``` + +**Request Body** + +```json +{ + "pokemonName": "string" +} +``` + +- **Success Response**: + + - **Status**: `201 Created` + + ```json + [ + { + "pokemonName": "string", + "UserId": "integer" + } + ] + ``` + +--- + +### 6. GET /users + +- **URL**: `/users` +- **Method**: `GET` +- **Description**: Retrieves details of the authenticated user. + +**Request Headers** + +```json +{ + "Authorization": "Bearer " +} +``` + +- **Success Response**: + + - **Status**: `200 OK` + + ```json + [ + { + "id": "integer", + "userName": "string", + "email": "string", + "role": "string" + } + ] + ``` + +--- + +### 7. PATCH /users + +- **URL**: `/users` +- **Method**: `PATCH` +- **Description**: Updates the authenticated user's details. + +**Request Headers** + +```json +{ + "Authorization": "Bearer " +} +``` + +**Request Body** + +```json +{ + "userName": "string", + "ProfileId": "integer" +} +``` + +- **Success Response**: + + - **Status**: `200 OK` + + ```json + [ + { + "id": "integer", + "userName": "string", + "email": "string", + "role": "string" + } + ] + ``` + +--- + +### 8. GET /profiles + +- **URL**: `/profiles` +- **Method**: `GET` +- **Description**: Retrieves all profiles. + +**Request Headers** + +```json +{ + "Authorization": "Bearer " +} +``` + +- **Success Response**: + + - **Status**: `200 OK` + + ```json + [ + { + "imgUrl": "string", + "UserId": "integer" + } + ] + ``` + +--- + +### 9. DELETE /favorites/:pokemonName + +- **URL**: `/favorites/:pokemonName` +- **Method**: `DELETE` +- **Description**: Deletes a favorite by pokemonName + +**Request Headers** + +```json +{ + "Authorization": "Bearer " +} +``` + +- **Success Response**: + + - **Status**: `200 OK` + + ```json + { + "id": "integer", + "pokemonName": "string" + } + ``` + + - **Error Response**: + + - **Status**: `404 Not Found` + Missing email: + ```json + { + "message": "Pokemon not found" + } + ``` + +--- + +### 10. POST /profiles + +- **URL**: `/profiles` +- **Method**: `POST` +- **Description**: Creates a new profile with an image (Admin only). + +**Request Headers** + +```json +{ + "Authorization": "Bearer " +} +``` + +**Request Body** + +```json +{ + "imgUrl": "string" +} +``` + +- **Success Response**: + + - **Status**: `201 Created` + + ```json + [ + { + "pokemonName": "string", + "UserId": "integer" + } + ] + ``` + + - **Error Response**: + + - **Status**: `400 Bad Request` + Missing email: + ```json + { + "message": "Image URL is required" + } + ``` + +--- + +### GLOBAL ERROR + +- **Error Response**: + - **Status**: `500 Internal Server Error` + - **Response**: + ```json + { + "message": "Internal server error" + } + ``` +- **Status**: "401 Unauthorized/403 Forbidden" + - **Response**: + ```json + { + "message": "Invalid Token" + } + OR + { + "message": "You are not authorized" + } + ``` diff --git a/Server/app.js b/Server/app.js new file mode 100644 index 0000000..822629f --- /dev/null +++ b/Server/app.js @@ -0,0 +1,42 @@ +const express = require("express"); +const Controller = require("./controllers/controller"); +const errorHandler = require("./middlewares/errorHandler"); +const authentication = require("./middlewares/authentication"); +const { updateDelete, admin } = require("./middlewares/authorization"); +const cors = require("cors"); +const app = express(); +if (process.env.NODE_ENV !== "production") { + require("dotenv").config(); +} + +app.use(cors()); +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); + +app.post("/register", Controller.register); +app.post("/login", Controller.login); +app.post("/googleLogin", Controller.googleLogin); + +app.get("/favorites", authentication, Controller.getFavorite); +app.post("/favorites", authentication, Controller.addFavorite); + +app.delete( + "/favorites/:pokemonName", + authentication, + updateDelete, + Controller.deleteFavorite +); + +app.get("/users",authentication, Controller.getUser); +app.patch("/users",authentication, Controller.updateUser); + +app.get("/profiles", authentication, Controller.getProfile); + +const multer = require("multer") +const storage = multer.memoryStorage() +const upload = multer({storage:storage}) +app.post("/profiles", authentication,admin,upload.single('imgUrl'), Controller.addProfile); + +app.use(errorHandler); + +module.exports = app; diff --git a/Server/bin/www b/Server/bin/www new file mode 100644 index 0000000..30e8461 --- /dev/null +++ b/Server/bin/www @@ -0,0 +1,6 @@ +const app = require("../app"); +const port = process.env.PORT || 3000; + +app.listen(port, () => { + console.log(`Example app listening on port ${port}`); +}); diff --git a/Server/config/config.json b/Server/config/config.json new file mode 100644 index 0000000..86eec72 --- /dev/null +++ b/Server/config/config.json @@ -0,0 +1,19 @@ +{ + "development": { + "username": "postgres", + "password": "postgres", + "database": "PokeDex", + "host": "127.0.0.1", + "dialect": "postgres" + }, + "test": { + "username": "postgres", + "password": "postgres", + "database": "PokeDex_test", + "host": "127.0.0.1", + "dialect": "postgres" + }, + "production": { + "use_env_variable":"DATABASE_URL" + } +} diff --git a/Server/controllers/controller.js b/Server/controllers/controller.js new file mode 100644 index 0000000..a02a010 --- /dev/null +++ b/Server/controllers/controller.js @@ -0,0 +1,232 @@ +const { compareSync } = require("bcrypt"); +const { User, Favorite, Profile } = require("../models"); +const { signToken } = require("../helpers/jwt"); +const { OAuth2Client } = require("google-auth-library"); + +class Controller { + static async register(req, res, next) { + const { email, password, userName } = req.body; + try { + const user = await User.create({ + email, + password, + userName, + role: "user", + }); + + const userResponse = user.get({ plain: true }); + delete userResponse.password; + + res.status(201).json(userResponse); + } catch (error) { + console.log("🚀 ~ Controller ~ register ~ error:", error); + next(error); + } + } + static async login(req, res, next) { + const { email, password } = req.body; + try { + if (!email) { + next({ name: "BadReq", message: `Email is required` }); + return; + } + if (!password) { + next({ name: "BadReq", message: `Password is required` }); + return; + } + + const user = await User.findOne({ where: { email } }); + + if (!user) { + return next({ + name: `NotAuthorized`, + message: `Invalid email or password`, + }); + } + + const isValid = compareSync(password, user.password); + + if (!isValid) { + return next({ + name: `NotAuthorized`, + message: `Invalid email or password`, + }); + } + + const access_token = signToken({ UserId: user.id }); + + return res.status(200).json({ access_token: access_token }); + } catch (error) { + console.log("🚀 ~ Controller ~ login ~ error:", error); + next(error); + } + } + + static async googleLogin(req, res, next) { + try { + const { token } = req.headers; + + const client = new OAuth2Client(); + const ticket = await client.verifyIdToken({ + idToken: token, + audience: process.env.GoogleClientId, // Specify the CLIENT_ID of the app that accesses the backend + // Or, if multiple clients access the backend: + //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3] + }); + const payload = ticket.getPayload(); + + const [user, created] = await User.findOrCreate({ + where: { + email: payload.email, + }, + defaults: { + userName: payload.name, + email: payload.email, + password: "password-google", + }, + hooks: false, + }); + + const access_token = signToken({ UserId: user.id }); + + return res.status(200).json({ access_token: access_token }); + } catch (error) { + console.log("🚀 ~ Controller ~ googleLogin ~ error:", error); + next(error); + } + } + + static async addFavorite(req, res, next) { + const { pokemonName } = req.body; + try { + const { id } = req.user; + const pokemonFav = await Favorite.create({ + pokemonName, + UserId: id, + }); + + res.status(201).json(pokemonFav); + } catch (error) { + console.log("🚀 ~ Controller ~ addFavorite ~ error:", error); + next(error); + } + } + + static async deleteFavorite(req, res, next) { + const { pokemonName } = req.params; + try { + console.log(pokemonName,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + const {id:UserId} = req.user + + const pokemonFav = await Favorite.findOne({where:{pokemonName,UserId},}); + if (!pokemonFav) { + return next({ + name: `NotFound`, + message: `Pokemon not found`, + }); + } + + await Favorite.destroy({ where: { pokemonName, UserId } }); + + res.status(200).json(pokemonFav); + } catch (error) { + console.log("🚀 ~ Controller ~ deleteFavorite ~ error:", error); + next(error); + } + } + + static async getFavorite(req, res, next) { + try { + const user = req.user; + const pokemonFav = await Favorite.findAll({ where: { UserId: user.id } }); + if (!pokemonFav) { + return next({ + name: `NotFound`, + message: `Pokemon not found`, + }); + } + + res.status(200).json(pokemonFav); + } catch (error) { + console.log("🚀 ~ Controller ~ getFavorite ~ error:", error); + next(error); + } + } + + + static async getUser(req, res, next) { + try { + const { id } = req.user; + const user = await User.findByPk(id, { + include: Profile, + attributes: { + exclude: ["password"], + }, + }); + + return res.status(200).json(user); + } catch (error) { + console.log("🚀 ~ Controller ~ getUser ~ error:", error); + next(error); + } + } + + static async updateUser(req, res, next) { + const { ProfileId, userName } = req.body; + try { + const { id } = req.user; + await User.update({ ProfileId, userName }, { where: { id } }); + const user = await User.findByPk(id, { + include: Profile, + attributes: { + exclude: ["password"], + }, + }); + + return res.status(200).json(user); + } catch (error) { + console.log("🚀 ~ Controller ~ getUser ~ error:", error); + next(error); + } + } + + static async addProfile(req, res, next) { + try { + // console.log("🚀 ~ Controller ~ addProfile ~ file:", file) + const cloudinary = require("cloudinary").v2; + cloudinary.config({ + cloud_name: process.env.CloudinaryName, + api_key: process.env.CloudinaryKey, + api_secret: process.env.CloudinarySecret, + }); + + let mimeType = req.file.mimetype; + let data = req.file.buffer.toString("base64"); + + let response = await cloudinary.uploader.upload( + `data:${mimeType};base64,${data}` + ); + // console.log(response,"<<<<<<<<<<<<"); + let imgUrl = response.secure_url; + + await Profile.create({ imgUrl }); + + res.status(201).json("Added image succesfully!"); + } catch (error) { + console.log("🚀 ~ Controller ~ addFavorite ~ error:", error); + next(error); + } + } + + static async getProfile(req, res, next) { + try { + const profile = await Profile.findAll() + + return res.status(200).json(profile); + } catch (error) { + console.log("🚀 ~ Controller ~ getUser ~ error:", error); + next(error); + } + } +} +module.exports = Controller; diff --git a/Server/coverage/clover.xml b/Server/coverage/clover.xml new file mode 100644 index 0000000..f326729 --- /dev/null +++ b/Server/coverage/clover.xml @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Server/coverage/coverage-final.json b/Server/coverage/coverage-final.json new file mode 100644 index 0000000..5893204 --- /dev/null +++ b/Server/coverage/coverage-final.json @@ -0,0 +1,11 @@ +{"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\app.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\app.js","statementMap":{"0":{"start":{"line":1,"column":16},"end":{"line":1,"column":34}},"1":{"start":{"line":2,"column":19},"end":{"line":2,"column":54}},"2":{"start":{"line":3,"column":21},"end":{"line":3,"column":58}},"3":{"start":{"line":4,"column":23},"end":{"line":4,"column":62}},"4":{"start":{"line":5,"column":32},"end":{"line":5,"column":70}},"5":{"start":{"line":6,"column":13},"end":{"line":6,"column":28}},"6":{"start":{"line":7,"column":12},"end":{"line":7,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":10,"column":1}},"8":{"start":{"line":9,"column":2},"end":{"line":9,"column":29}},"9":{"start":{"line":12,"column":0},"end":{"line":12,"column":16}},"10":{"start":{"line":13,"column":0},"end":{"line":13,"column":24}},"11":{"start":{"line":14,"column":0},"end":{"line":14,"column":48}},"12":{"start":{"line":16,"column":0},"end":{"line":16,"column":43}},"13":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"14":{"start":{"line":18,"column":0},"end":{"line":18,"column":49}},"15":{"start":{"line":20,"column":0},"end":{"line":20,"column":62}},"16":{"start":{"line":21,"column":0},"end":{"line":21,"column":63}},"17":{"start":{"line":23,"column":0},"end":{"line":28,"column":2}},"18":{"start":{"line":30,"column":0},"end":{"line":30,"column":53}},"19":{"start":{"line":31,"column":0},"end":{"line":31,"column":58}},"20":{"start":{"line":33,"column":0},"end":{"line":33,"column":60}},"21":{"start":{"line":35,"column":15},"end":{"line":35,"column":32}},"22":{"start":{"line":36,"column":16},"end":{"line":36,"column":38}},"23":{"start":{"line":37,"column":15},"end":{"line":37,"column":40}},"24":{"start":{"line":38,"column":0},"end":{"line":38,"column":91}},"25":{"start":{"line":40,"column":0},"end":{"line":40,"column":22}},"26":{"start":{"line":42,"column":0},"end":{"line":42,"column":21}}},"fnMap":{},"branchMap":{"0":{"loc":{"start":{"line":8,"column":0},"end":{"line":10,"column":1}},"type":"if","locations":[{"start":{"line":8,"column":0},"end":{"line":10,"column":1}},{"start":{},"end":{}}],"line":8}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2},"f":{},"b":{"0":[2,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1f4d38bbec6d0907d88b45d27bf78824edd5d8dd"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\controllers\\controller.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\controllers\\controller.js","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":41}},"1":{"start":{"line":2,"column":36},"end":{"line":2,"column":56}},"2":{"start":{"line":3,"column":22},"end":{"line":3,"column":47}},"3":{"start":{"line":4,"column":25},"end":{"line":4,"column":55}},"4":{"start":{"line":8,"column":42},"end":{"line":8,"column":50}},"5":{"start":{"line":9,"column":4},"end":{"line":24,"column":5}},"6":{"start":{"line":10,"column":19},"end":{"line":15,"column":8}},"7":{"start":{"line":17,"column":27},"end":{"line":17,"column":52}},"8":{"start":{"line":18,"column":6},"end":{"line":18,"column":35}},"9":{"start":{"line":20,"column":6},"end":{"line":20,"column":41}},"10":{"start":{"line":22,"column":26},"end":{"line":22,"column":120}},"11":{"start":{"line":23,"column":6},"end":{"line":23,"column":18}},"12":{"start":{"line":27,"column":32},"end":{"line":27,"column":40}},"13":{"start":{"line":28,"column":4},"end":{"line":62,"column":5}},"14":{"start":{"line":29,"column":6},"end":{"line":32,"column":7}},"15":{"start":{"line":30,"column":8},"end":{"line":30,"column":63}},"16":{"start":{"line":31,"column":8},"end":{"line":31,"column":15}},"17":{"start":{"line":33,"column":6},"end":{"line":36,"column":7}},"18":{"start":{"line":34,"column":8},"end":{"line":34,"column":66}},"19":{"start":{"line":35,"column":8},"end":{"line":35,"column":15}},"20":{"start":{"line":38,"column":19},"end":{"line":38,"column":59}},"21":{"start":{"line":40,"column":6},"end":{"line":45,"column":7}},"22":{"start":{"line":41,"column":8},"end":{"line":44,"column":11}},"23":{"start":{"line":47,"column":22},"end":{"line":47,"column":58}},"24":{"start":{"line":49,"column":6},"end":{"line":54,"column":7}},"25":{"start":{"line":50,"column":8},"end":{"line":53,"column":11}},"26":{"start":{"line":56,"column":27},"end":{"line":56,"column":57}},"27":{"start":{"line":58,"column":6},"end":{"line":58,"column":66}},"28":{"start":{"line":60,"column":26},"end":{"line":60,"column":117}},"29":{"start":{"line":61,"column":6},"end":{"line":61,"column":18}},"30":{"start":{"line":66,"column":4},"end":{"line":96,"column":5}},"31":{"start":{"line":67,"column":24},"end":{"line":67,"column":35}},"32":{"start":{"line":69,"column":21},"end":{"line":69,"column":39}},"33":{"start":{"line":70,"column":21},"end":{"line":75,"column":8}},"34":{"start":{"line":76,"column":22},"end":{"line":76,"column":41}},"35":{"start":{"line":78,"column":30},"end":{"line":88,"column":8}},"36":{"start":{"line":90,"column":27},"end":{"line":90,"column":57}},"37":{"start":{"line":92,"column":6},"end":{"line":92,"column":66}},"38":{"start":{"line":94,"column":26},"end":{"line":94,"column":123}},"39":{"start":{"line":95,"column":6},"end":{"line":95,"column":18}},"40":{"start":{"line":100,"column":28},"end":{"line":100,"column":36}},"41":{"start":{"line":101,"column":4},"end":{"line":112,"column":5}},"42":{"start":{"line":102,"column":21},"end":{"line":102,"column":29}},"43":{"start":{"line":103,"column":25},"end":{"line":106,"column":8}},"44":{"start":{"line":108,"column":6},"end":{"line":108,"column":39}},"45":{"start":{"line":110,"column":26},"end":{"line":110,"column":125}},"46":{"start":{"line":111,"column":6},"end":{"line":111,"column":18}},"47":{"start":{"line":116,"column":28},"end":{"line":116,"column":38}},"48":{"start":{"line":117,"column":4},"end":{"line":135,"column":5}},"49":{"start":{"line":118,"column":26},"end":{"line":118,"column":122}},"50":{"start":{"line":119,"column":26},"end":{"line":119,"column":34}},"51":{"start":{"line":121,"column":25},"end":{"line":121,"column":78}},"52":{"start":{"line":122,"column":6},"end":{"line":127,"column":7}},"53":{"start":{"line":123,"column":8},"end":{"line":126,"column":11}},"54":{"start":{"line":129,"column":6},"end":{"line":129,"column":65}},"55":{"start":{"line":131,"column":6},"end":{"line":131,"column":39}},"56":{"start":{"line":133,"column":26},"end":{"line":133,"column":128}},"57":{"start":{"line":134,"column":6},"end":{"line":134,"column":18}},"58":{"start":{"line":139,"column":4},"end":{"line":153,"column":5}},"59":{"start":{"line":140,"column":19},"end":{"line":140,"column":27}},"60":{"start":{"line":141,"column":25},"end":{"line":141,"column":79}},"61":{"start":{"line":142,"column":6},"end":{"line":147,"column":7}},"62":{"start":{"line":143,"column":8},"end":{"line":146,"column":11}},"63":{"start":{"line":149,"column":6},"end":{"line":149,"column":39}},"64":{"start":{"line":151,"column":26},"end":{"line":151,"column":125}},"65":{"start":{"line":152,"column":6},"end":{"line":152,"column":18}},"66":{"start":{"line":158,"column":4},"end":{"line":171,"column":5}},"67":{"start":{"line":159,"column":21},"end":{"line":159,"column":29}},"68":{"start":{"line":160,"column":19},"end":{"line":165,"column":8}},"69":{"start":{"line":167,"column":6},"end":{"line":167,"column":40}},"70":{"start":{"line":169,"column":26},"end":{"line":169,"column":121}},"71":{"start":{"line":170,"column":6},"end":{"line":170,"column":18}},"72":{"start":{"line":175,"column":36},"end":{"line":175,"column":44}},"73":{"start":{"line":176,"column":4},"end":{"line":190,"column":5}},"74":{"start":{"line":177,"column":21},"end":{"line":177,"column":29}},"75":{"start":{"line":178,"column":6},"end":{"line":178,"column":68}},"76":{"start":{"line":179,"column":19},"end":{"line":184,"column":8}},"77":{"start":{"line":186,"column":6},"end":{"line":186,"column":40}},"78":{"start":{"line":188,"column":26},"end":{"line":188,"column":121}},"79":{"start":{"line":189,"column":6},"end":{"line":189,"column":18}},"80":{"start":{"line":194,"column":4},"end":{"line":218,"column":5}},"81":{"start":{"line":196,"column":25},"end":{"line":196,"column":49}},"82":{"start":{"line":197,"column":6},"end":{"line":201,"column":9}},"83":{"start":{"line":203,"column":21},"end":{"line":203,"column":38}},"84":{"start":{"line":204,"column":17},"end":{"line":204,"column":51}},"85":{"start":{"line":206,"column":21},"end":{"line":208,"column":7}},"86":{"start":{"line":210,"column":19},"end":{"line":210,"column":38}},"87":{"start":{"line":212,"column":6},"end":{"line":212,"column":39}},"88":{"start":{"line":214,"column":6},"end":{"line":214,"column":55}},"89":{"start":{"line":216,"column":26},"end":{"line":216,"column":125}},"90":{"start":{"line":217,"column":6},"end":{"line":217,"column":18}},"91":{"start":{"line":222,"column":4},"end":{"line":229,"column":5}},"92":{"start":{"line":223,"column":22},"end":{"line":223,"column":45}},"93":{"start":{"line":225,"column":6},"end":{"line":225,"column":43}},"94":{"start":{"line":227,"column":26},"end":{"line":227,"column":121}},"95":{"start":{"line":228,"column":6},"end":{"line":228,"column":18}},"96":{"start":{"line":232,"column":0},"end":{"line":232,"column":28}},"97":{"start":{"line":239,"column":85},"end":{"line":239,"column":40026}},"98":{"start":{"line":239,"column":89},"end":{"line":239,"column":40015}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":3}},"loc":{"start":{"line":7,"column":40},"end":{"line":25,"column":3}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":3}},"loc":{"start":{"line":26,"column":37},"end":{"line":63,"column":3}},"line":26},"2":{"name":"(anonymous_2)","decl":{"start":{"line":65,"column":2},"end":{"line":65,"column":3}},"loc":{"start":{"line":65,"column":43},"end":{"line":97,"column":3}},"line":65},"3":{"name":"(anonymous_3)","decl":{"start":{"line":99,"column":2},"end":{"line":99,"column":3}},"loc":{"start":{"line":99,"column":43},"end":{"line":113,"column":3}},"line":99},"4":{"name":"(anonymous_4)","decl":{"start":{"line":115,"column":2},"end":{"line":115,"column":3}},"loc":{"start":{"line":115,"column":46},"end":{"line":136,"column":3}},"line":115},"5":{"name":"(anonymous_5)","decl":{"start":{"line":138,"column":2},"end":{"line":138,"column":3}},"loc":{"start":{"line":138,"column":43},"end":{"line":154,"column":3}},"line":138},"6":{"name":"(anonymous_6)","decl":{"start":{"line":157,"column":2},"end":{"line":157,"column":3}},"loc":{"start":{"line":157,"column":39},"end":{"line":172,"column":3}},"line":157},"7":{"name":"(anonymous_7)","decl":{"start":{"line":174,"column":2},"end":{"line":174,"column":3}},"loc":{"start":{"line":174,"column":42},"end":{"line":191,"column":3}},"line":174},"8":{"name":"(anonymous_8)","decl":{"start":{"line":193,"column":2},"end":{"line":193,"column":3}},"loc":{"start":{"line":193,"column":42},"end":{"line":219,"column":3}},"line":193},"9":{"name":"(anonymous_9)","decl":{"start":{"line":221,"column":2},"end":{"line":221,"column":3}},"loc":{"start":{"line":221,"column":42},"end":{"line":230,"column":3}},"line":221},"10":{"name":"oo_cm","decl":{"start":{"line":239,"column":77},"end":{"line":239,"column":82}},"loc":{"start":{"line":239,"column":84},"end":{"line":239,"column":40027}},"line":239}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":6},"end":{"line":32,"column":7}},"type":"if","locations":[{"start":{"line":29,"column":6},"end":{"line":32,"column":7}},{"start":{},"end":{}}],"line":29},"1":{"loc":{"start":{"line":33,"column":6},"end":{"line":36,"column":7}},"type":"if","locations":[{"start":{"line":33,"column":6},"end":{"line":36,"column":7}},{"start":{},"end":{}}],"line":33},"2":{"loc":{"start":{"line":40,"column":6},"end":{"line":45,"column":7}},"type":"if","locations":[{"start":{"line":40,"column":6},"end":{"line":45,"column":7}},{"start":{},"end":{}}],"line":40},"3":{"loc":{"start":{"line":49,"column":6},"end":{"line":54,"column":7}},"type":"if","locations":[{"start":{"line":49,"column":6},"end":{"line":54,"column":7}},{"start":{},"end":{}}],"line":49},"4":{"loc":{"start":{"line":122,"column":6},"end":{"line":127,"column":7}},"type":"if","locations":[{"start":{"line":122,"column":6},"end":{"line":127,"column":7}},{"start":{},"end":{}}],"line":122},"5":{"loc":{"start":{"line":142,"column":6},"end":{"line":147,"column":7}},"type":"if","locations":[{"start":{"line":142,"column":6},"end":{"line":147,"column":7}},{"start":{},"end":{}}],"line":142},"6":{"loc":{"start":{"line":239,"column":96},"end":{"line":239,"column":40014}},"type":"binary-expr","locations":[{"start":{"line":239,"column":96},"end":{"line":239,"column":133}},{"start":{"line":239,"column":137},"end":{"line":239,"column":40014}}],"line":239}},"s":{"0":2,"1":2,"2":2,"3":2,"4":5,"5":5,"6":5,"7":1,"8":1,"9":1,"10":4,"11":4,"12":7,"13":7,"14":7,"15":1,"16":1,"17":6,"18":1,"19":1,"20":5,"21":5,"22":1,"23":4,"24":4,"25":1,"26":3,"27":3,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":1,"41":1,"42":1,"43":1,"44":1,"45":0,"46":0,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":0,"54":1,"55":1,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":1,"67":1,"68":1,"69":1,"70":0,"71":0,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":1,"92":1,"93":1,"94":0,"95":0,"96":2,"97":5,"98":5},"f":{"0":5,"1":7,"2":0,"3":1,"4":1,"5":0,"6":1,"7":1,"8":0,"9":1,"10":5},"b":{"0":[1,6],"1":[1,5],"2":[1,4],"3":[1,3],"4":[0,1],"5":[0,0],"6":[5,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"73bfb95cec71ba1faeb7abfc828280f782518bff"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\helpers\\jwt.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\helpers\\jwt.js","statementMap":{"0":{"start":{"line":1,"column":12},"end":{"line":1,"column":35}},"1":{"start":{"line":3,"column":17},"end":{"line":3,"column":25}},"2":{"start":{"line":5,"column":18},"end":{"line":7,"column":1}},"3":{"start":{"line":6,"column":2},"end":{"line":6,"column":39}},"4":{"start":{"line":9,"column":20},"end":{"line":11,"column":1}},"5":{"start":{"line":10,"column":2},"end":{"line":10,"column":39}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":44}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":18},"end":{"line":5,"column":19}},"loc":{"start":{"line":5,"column":31},"end":{"line":7,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":20},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":31},"end":{"line":11,"column":1}},"line":9}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":3,"4":2,"5":5,"6":2},"f":{"0":3,"1":5},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"77ca9a7b87d759d1a7f973f6830e4c09fdf0ceab"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\middlewares\\authentication.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\middlewares\\authentication.js","statementMap":{"0":{"start":{"line":1,"column":17},"end":{"line":1,"column":37}},"1":{"start":{"line":2,"column":24},"end":{"line":2,"column":49}},"2":{"start":{"line":5,"column":22},"end":{"line":5,"column":47}},"3":{"start":{"line":7,"column":2},"end":{"line":10,"column":3}},"4":{"start":{"line":8,"column":4},"end":{"line":8,"column":40}},"5":{"start":{"line":9,"column":4},"end":{"line":9,"column":11}},"6":{"start":{"line":12,"column":16},"end":{"line":12,"column":41}},"7":{"start":{"line":15,"column":2},"end":{"line":18,"column":3}},"8":{"start":{"line":16,"column":4},"end":{"line":16,"column":40}},"9":{"start":{"line":17,"column":4},"end":{"line":17,"column":11}},"10":{"start":{"line":21,"column":2},"end":{"line":36,"column":3}},"11":{"start":{"line":22,"column":15},"end":{"line":22,"column":33}},"12":{"start":{"line":24,"column":15},"end":{"line":24,"column":47}},"13":{"start":{"line":25,"column":4},"end":{"line":28,"column":5}},"14":{"start":{"line":26,"column":6},"end":{"line":26,"column":42}},"15":{"start":{"line":27,"column":6},"end":{"line":27,"column":13}},"16":{"start":{"line":31,"column":4},"end":{"line":31,"column":20}},"17":{"start":{"line":32,"column":4},"end":{"line":32,"column":11}},"18":{"start":{"line":34,"column":24},"end":{"line":34,"column":110}},"19":{"start":{"line":35,"column":4},"end":{"line":35,"column":16}},"20":{"start":{"line":40,"column":0},"end":{"line":40,"column":32}},"21":{"start":{"line":47,"column":85},"end":{"line":47,"column":40026}},"22":{"start":{"line":47,"column":89},"end":{"line":47,"column":40015}}},"fnMap":{"0":{"name":"authentication","decl":{"start":{"line":4,"column":15},"end":{"line":4,"column":29}},"loc":{"start":{"line":4,"column":46},"end":{"line":38,"column":1}},"line":4},"1":{"name":"oo_cm","decl":{"start":{"line":47,"column":77},"end":{"line":47,"column":82}},"loc":{"start":{"line":47,"column":84},"end":{"line":47,"column":40027}},"line":47}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":2},"end":{"line":10,"column":3}},"type":"if","locations":[{"start":{"line":7,"column":2},"end":{"line":10,"column":3}},{"start":{},"end":{}}],"line":7},"1":{"loc":{"start":{"line":15,"column":2},"end":{"line":18,"column":3}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":18,"column":3}},{"start":{},"end":{}}],"line":15},"2":{"loc":{"start":{"line":25,"column":4},"end":{"line":28,"column":5}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":28,"column":5}},{"start":{},"end":{}}],"line":25},"3":{"loc":{"start":{"line":47,"column":96},"end":{"line":47,"column":40014}},"type":"binary-expr","locations":[{"start":{"line":47,"column":96},"end":{"line":47,"column":133}},{"start":{"line":47,"column":137},"end":{"line":47,"column":40014}}],"line":47}},"s":{"0":2,"1":2,"2":10,"3":10,"4":5,"5":5,"6":5,"7":5,"8":0,"9":0,"10":5,"11":5,"12":5,"13":5,"14":0,"15":0,"16":5,"17":5,"18":0,"19":0,"20":2,"21":0,"22":0},"f":{"0":10,"1":0},"b":{"0":[5,5],"1":[0,5],"2":[0,5],"3":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5f950b51a2336b5d63b2486d252e74ebc9e978a5"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\middlewares\\authorization.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\middlewares\\authorization.js","statementMap":{"0":{"start":{"line":1,"column":21},"end":{"line":1,"column":41}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":21}},"2":{"start":{"line":10,"column":2},"end":{"line":12,"column":3}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":37}},"4":{"start":{"line":14,"column":2},"end":{"line":33,"column":3}},"5":{"start":{"line":15,"column":28},"end":{"line":15,"column":38}},"6":{"start":{"line":16,"column":16},"end":{"line":16,"column":79}},"7":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"8":{"start":{"line":19,"column":6},"end":{"line":19,"column":70}},"9":{"start":{"line":22,"column":4},"end":{"line":29,"column":5}},"10":{"start":{"line":23,"column":6},"end":{"line":23,"column":20}},"11":{"start":{"line":25,"column":6},"end":{"line":28,"column":9}},"12":{"start":{"line":31,"column":24},"end":{"line":31,"column":106}},"13":{"start":{"line":32,"column":4},"end":{"line":32,"column":16}},"14":{"start":{"line":37,"column":13},"end":{"line":37,"column":21}},"15":{"start":{"line":43,"column":2},"end":{"line":55,"column":3}},"16":{"start":{"line":44,"column":4},"end":{"line":51,"column":5}},"17":{"start":{"line":45,"column":6},"end":{"line":48,"column":9}},"18":{"start":{"line":50,"column":6},"end":{"line":50,"column":12}},"19":{"start":{"line":53,"column":24},"end":{"line":53,"column":106}},"20":{"start":{"line":54,"column":4},"end":{"line":54,"column":16}},"21":{"start":{"line":57,"column":0},"end":{"line":57,"column":40}},"22":{"start":{"line":64,"column":85},"end":{"line":64,"column":40026}},"23":{"start":{"line":64,"column":89},"end":{"line":64,"column":40015}}},"fnMap":{"0":{"name":"updateDelete","decl":{"start":{"line":3,"column":15},"end":{"line":3,"column":27}},"loc":{"start":{"line":3,"column":44},"end":{"line":34,"column":1}},"line":3},"1":{"name":"admin","decl":{"start":{"line":36,"column":15},"end":{"line":36,"column":20}},"loc":{"start":{"line":36,"column":37},"end":{"line":56,"column":1}},"line":36},"2":{"name":"oo_cm","decl":{"start":{"line":64,"column":77},"end":{"line":64,"column":82}},"loc":{"start":{"line":64,"column":84},"end":{"line":64,"column":40027}},"line":64}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":12,"column":3}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":12,"column":3}},{"start":{},"end":{}}],"line":10},"1":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":5}},{"start":{},"end":{}}],"line":18},"2":{"loc":{"start":{"line":22,"column":4},"end":{"line":29,"column":5}},"type":"if","locations":[{"start":{"line":22,"column":4},"end":{"line":29,"column":5}},{"start":{"line":24,"column":11},"end":{"line":29,"column":5}}],"line":22},"3":{"loc":{"start":{"line":44,"column":4},"end":{"line":51,"column":5}},"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":51,"column":5}},{"start":{"line":49,"column":9},"end":{"line":51,"column":5}}],"line":44},"4":{"loc":{"start":{"line":64,"column":96},"end":{"line":64,"column":40014}},"type":"binary-expr","locations":[{"start":{"line":64,"column":96},"end":{"line":64,"column":133}},{"start":{"line":64,"column":137},"end":{"line":64,"column":40014}}],"line":64}},"s":{"0":2,"1":1,"2":1,"3":0,"4":1,"5":1,"6":1,"7":1,"8":0,"9":1,"10":1,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":2,"22":0,"23":0},"f":{"0":1,"1":0,"2":0},"b":{"0":[0,1],"1":[0,1],"2":[1,0],"3":[0,0],"4":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5b40b08c90ff4f0c7ca01eb90756f27f975bdfd0"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\middlewares\\errorHandler.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\middlewares\\errorHandler.js","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":2,"column":100}},"1":{"start":{"line":3,"column":2},"end":{"line":36,"column":3}},"2":{"start":{"line":5,"column":6},"end":{"line":5,"column":57}},"3":{"start":{"line":6,"column":6},"end":{"line":6,"column":12}},"4":{"start":{"line":8,"column":6},"end":{"line":8,"column":53}},"5":{"start":{"line":9,"column":6},"end":{"line":9,"column":12}},"6":{"start":{"line":11,"column":6},"end":{"line":11,"column":53}},"7":{"start":{"line":12,"column":6},"end":{"line":12,"column":12}},"8":{"start":{"line":14,"column":6},"end":{"line":14,"column":53}},"9":{"start":{"line":15,"column":6},"end":{"line":15,"column":12}},"10":{"start":{"line":17,"column":6},"end":{"line":19,"column":60}},"11":{"start":{"line":19,"column":47},"end":{"line":19,"column":56}},"12":{"start":{"line":20,"column":6},"end":{"line":20,"column":12}},"13":{"start":{"line":22,"column":6},"end":{"line":22,"column":53}},"14":{"start":{"line":23,"column":6},"end":{"line":23,"column":12}},"15":{"start":{"line":25,"column":6},"end":{"line":25,"column":53}},"16":{"start":{"line":26,"column":6},"end":{"line":26,"column":12}},"17":{"start":{"line":28,"column":6},"end":{"line":30,"column":39}},"18":{"start":{"line":31,"column":6},"end":{"line":31,"column":12}},"19":{"start":{"line":34,"column":6},"end":{"line":34,"column":65}},"20":{"start":{"line":35,"column":6},"end":{"line":35,"column":12}},"21":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}},"22":{"start":{"line":45,"column":85},"end":{"line":45,"column":40026}},"23":{"start":{"line":45,"column":89},"end":{"line":45,"column":40015}}},"fnMap":{"0":{"name":"errorHandler","decl":{"start":{"line":1,"column":9},"end":{"line":1,"column":21}},"loc":{"start":{"line":1,"column":43},"end":{"line":37,"column":1}},"line":1},"1":{"name":"(anonymous_1)","decl":{"start":{"line":19,"column":40},"end":{"line":19,"column":41}},"loc":{"start":{"line":19,"column":47},"end":{"line":19,"column":56}},"line":19},"2":{"name":"oo_cm","decl":{"start":{"line":45,"column":77},"end":{"line":45,"column":82}},"loc":{"start":{"line":45,"column":84},"end":{"line":45,"column":40027}},"line":45}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":2},"end":{"line":36,"column":3}},"type":"switch","locations":[{"start":{"line":4,"column":4},"end":{"line":6,"column":12}},{"start":{"line":7,"column":4},"end":{"line":9,"column":12}},{"start":{"line":10,"column":4},"end":{"line":12,"column":12}},{"start":{"line":13,"column":4},"end":{"line":15,"column":12}},{"start":{"line":16,"column":4},"end":{"line":20,"column":12}},{"start":{"line":21,"column":4},"end":{"line":23,"column":12}},{"start":{"line":24,"column":4},"end":{"line":26,"column":12}},{"start":{"line":27,"column":4},"end":{"line":31,"column":12}},{"start":{"line":33,"column":4},"end":{"line":35,"column":12}}],"line":3},"1":{"loc":{"start":{"line":45,"column":96},"end":{"line":45,"column":40014}},"type":"binary-expr","locations":[{"start":{"line":45,"column":96},"end":{"line":45,"column":133}},{"start":{"line":45,"column":137},"end":{"line":45,"column":40014}}],"line":45}},"s":{"0":13,"1":13,"2":5,"3":5,"4":0,"5":0,"6":0,"7":0,"8":2,"9":2,"10":3,"11":3,"12":0,"13":0,"14":0,"15":2,"16":2,"17":1,"18":1,"19":0,"20":0,"21":2,"22":13,"23":13},"f":{"0":13,"1":3,"2":13},"b":{"0":[5,0,0,2,3,0,2,1,0],"1":[13,2]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1d85bb9ee4b75bc54ff7702103ee90865916c150"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\favorite.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\favorite.js","statementMap":{"0":{"start":{"line":2,"column":18},"end":{"line":2,"column":38}},"1":{"start":{"line":3,"column":0},"end":{"line":58,"column":2}},"2":{"start":{"line":12,"column":6},"end":{"line":12,"column":37}},"3":{"start":{"line":15,"column":2},"end":{"line":56,"column":4}},"4":{"start":{"line":57,"column":2},"end":{"line":57,"column":18}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":17},"end":{"line":3,"column":18}},"loc":{"start":{"line":3,"column":43},"end":{"line":58,"column":1}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":29},"end":{"line":13,"column":5}},"line":10}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2},"f":{"0":2,"1":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"82b28222205789c9aa92b77bd21570d9fee03ca7"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\index.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\index.js","statementMap":{"0":{"start":{"line":3,"column":11},"end":{"line":3,"column":24}},"1":{"start":{"line":4,"column":13},"end":{"line":4,"column":28}},"2":{"start":{"line":5,"column":18},"end":{"line":5,"column":38}},"3":{"start":{"line":6,"column":16},"end":{"line":6,"column":34}},"4":{"start":{"line":7,"column":17},"end":{"line":7,"column":42}},"5":{"start":{"line":8,"column":12},"end":{"line":8,"column":49}},"6":{"start":{"line":9,"column":15},"end":{"line":9,"column":65}},"7":{"start":{"line":10,"column":11},"end":{"line":10,"column":13}},"8":{"start":{"line":13,"column":0},"end":{"line":17,"column":1}},"9":{"start":{"line":14,"column":2},"end":{"line":14,"column":74}},"10":{"start":{"line":16,"column":2},"end":{"line":16,"column":87}},"11":{"start":{"line":19,"column":0},"end":{"line":32,"column":5}},"12":{"start":{"line":22,"column":4},"end":{"line":27,"column":6}},"13":{"start":{"line":30,"column":18},"end":{"line":30,"column":85}},"14":{"start":{"line":31,"column":4},"end":{"line":31,"column":27}},"15":{"start":{"line":34,"column":0},"end":{"line":38,"column":3}},"16":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"17":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"18":{"start":{"line":40,"column":0},"end":{"line":40,"column":25}},"19":{"start":{"line":41,"column":0},"end":{"line":41,"column":25}},"20":{"start":{"line":43,"column":0},"end":{"line":43,"column":20}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":21,"column":10},"end":{"line":21,"column":11}},"loc":{"start":{"line":21,"column":18},"end":{"line":28,"column":3}},"line":21},"1":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":11},"end":{"line":29,"column":12}},"loc":{"start":{"line":29,"column":19},"end":{"line":32,"column":3}},"line":29},"2":{"name":"(anonymous_2)","decl":{"start":{"line":34,"column":24},"end":{"line":34,"column":25}},"loc":{"start":{"line":34,"column":37},"end":{"line":38,"column":1}},"line":34}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":12},"end":{"line":8,"column":49}},"type":"binary-expr","locations":[{"start":{"line":8,"column":12},"end":{"line":8,"column":32}},{"start":{"line":8,"column":36},"end":{"line":8,"column":49}}],"line":8},"1":{"loc":{"start":{"line":13,"column":0},"end":{"line":17,"column":1}},"type":"if","locations":[{"start":{"line":13,"column":0},"end":{"line":17,"column":1}},{"start":{"line":15,"column":7},"end":{"line":17,"column":1}}],"line":13},"2":{"loc":{"start":{"line":23,"column":6},"end":{"line":26,"column":37}},"type":"binary-expr","locations":[{"start":{"line":23,"column":6},"end":{"line":23,"column":29}},{"start":{"line":24,"column":6},"end":{"line":24,"column":23}},{"start":{"line":25,"column":6},"end":{"line":25,"column":30}},{"start":{"line":26,"column":6},"end":{"line":26,"column":37}}],"line":23},"3":{"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":37,"column":3}},{"start":{},"end":{}}],"line":35}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":0,"10":2,"11":2,"12":8,"13":6,"14":6,"15":2,"16":6,"17":6,"18":2,"19":2,"20":2},"f":{"0":8,"1":6,"2":6},"b":{"0":[2,0],"1":[0,2],"2":[8,8,6,6],"3":[6,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"93aa882871bdded098b05c835e51c09690a1b6c1"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\profile.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\profile.js","statementMap":{"0":{"start":{"line":4,"column":4},"end":{"line":4,"column":24}},"1":{"start":{"line":5,"column":0},"end":{"line":40,"column":2}},"2":{"start":{"line":14,"column":6},"end":{"line":14,"column":34}},"3":{"start":{"line":17,"column":2},"end":{"line":38,"column":4}},"4":{"start":{"line":39,"column":2},"end":{"line":39,"column":17}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":18}},"loc":{"start":{"line":5,"column":43},"end":{"line":40,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":29},"end":{"line":15,"column":5}},"line":12}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2},"f":{"0":2,"1":2},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a938d342c8c50efb2fe6ab383e158466aac1718c"} +,"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\user.js": {"path":"C:\\Users\\Iwan\\OneDrive\\Desktop\\BOOTCAMP PHASE 2\\IP-P2\\IP-RMT54\\Server\\models\\user.js","statementMap":{"0":{"start":{"line":5,"column":4},"end":{"line":5,"column":24}},"1":{"start":{"line":6,"column":15},"end":{"line":6,"column":32}},"2":{"start":{"line":7,"column":0},"end":{"line":87,"column":2}},"3":{"start":{"line":16,"column":6},"end":{"line":16,"column":35}},"4":{"start":{"line":17,"column":6},"end":{"line":17,"column":36}},"5":{"start":{"line":20,"column":2},"end":{"line":80,"column":4}},"6":{"start":{"line":81,"column":2},"end":{"line":85,"column":5}},"7":{"start":{"line":82,"column":17},"end":{"line":82,"column":39}},"8":{"start":{"line":83,"column":21},"end":{"line":83,"column":54}},"9":{"start":{"line":84,"column":4},"end":{"line":84,"column":26}},"10":{"start":{"line":86,"column":2},"end":{"line":86,"column":14}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":17},"end":{"line":7,"column":18}},"loc":{"start":{"line":7,"column":43},"end":{"line":87,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":29},"end":{"line":18,"column":5}},"line":14},"2":{"name":"(anonymous_2)","decl":{"start":{"line":81,"column":20},"end":{"line":81,"column":21}},"loc":{"start":{"line":81,"column":27},"end":{"line":85,"column":3}},"line":81}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":3,"8":3,"9":3,"10":2},"f":{"0":2,"1":2,"2":3},"b":{},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"150b909435f5333b5204fa7114a64c42eb8149d5"} +} diff --git a/Server/coverage/lcov-report/Server/app.js.html b/Server/coverage/lcov-report/Server/app.js.html new file mode 100644 index 0000000..79b9ff7 --- /dev/null +++ b/Server/coverage/lcov-report/Server/app.js.html @@ -0,0 +1,211 @@ + + + + + + Code coverage report for Server/app.js + + + + + + + + + +
+
+

All files / Server app.js

+
+ +
+ 100% + Statements + 27/27 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 27/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +432x +2x +2x +2x +2x +2x +2x +2x +2x +  +  +2x +2x +2x +  +2x +2x +2x +  +2x +2x +  +2x +  +  +  +  +  +  +2x +2x +  +2x +  +2x +2x +2x +2x +  +2x +  +2x + 
const express = require("express");
+const Controller = require("./controllers/controller");
+const errorHandler = require("./middlewares/errorHandler");
+const authentication = require("./middlewares/authentication");
+const { updateDelete, admin } = require("./middlewares/authorization");
+const cors = require("cors");
+const app = express();
+Eif (process.env.NODE_ENV !== "production") {
+  require("dotenv").config();
+}
+ 
+app.use(cors());
+app.use(express.json());
+app.use(express.urlencoded({ extended: true }));
+ 
+app.post("/register", Controller.register);
+app.post("/login", Controller.login);
+app.post("/googleLogin", Controller.googleLogin);
+ 
+app.get("/favorites", authentication, Controller.getFavorite);
+app.post("/favorites", authentication, Controller.addFavorite);
+ 
+app.delete(
+  "/favorites/:pokemonName",
+  authentication,
+  updateDelete,
+  Controller.deleteFavorite
+);
+ 
+app.get("/users",authentication, Controller.getUser);
+app.patch("/users",authentication, Controller.updateUser);
+ 
+app.get("/profiles", authentication, Controller.getProfile);
+ 
+const multer = require("multer")
+const storage = multer.memoryStorage()
+const upload = multer({storage:storage})
+app.post("/profiles", authentication,admin,upload.single('imgUrl'), Controller.addProfile);
+ 
+app.use(errorHandler);
+ 
+module.exports = app;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/controllers/controller.js.html b/Server/coverage/lcov-report/Server/controllers/controller.js.html new file mode 100644 index 0000000..852a55a --- /dev/null +++ b/Server/coverage/lcov-report/Server/controllers/controller.js.html @@ -0,0 +1,799 @@ + + + + + + Code coverage report for Server/controllers/controller.js + + + + + + + + + +
+
+

All files / Server/controllers controller.js

+
+ +
+ 57.57% + Statements + 57/99 +
+ + +
+ 71.42% + Branches + 10/14 +
+ + +
+ 72.72% + Functions + 8/11 +
+ + +
+ 57.14% + Lines + 56/98 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +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 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +2392x +2x +2x +2x +  +  +  +5x +5x +5x +  +  +  +  +  +  +1x +1x +  +1x +  +4x +4x +  +  +  +7x +7x +7x +1x +1x +  +6x +1x +1x +  +  +5x +  +5x +1x +  +  +  +  +  +4x +  +4x +1x +  +  +  +  +  +3x +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +1x +  +  +  +  +1x +  +  +  +  +  +  +  +1x +1x +1x +1x +  +1x +1x +  +  +  +  +  +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +1x +  +  +  +  +  +  +2x +  +  +  +  +  +  +5x
const { compareSync } = require("bcrypt");
+const { User, Favorite, Profile } = require("../models");
+const { signToken } = require("../helpers/jwt");
+const { OAuth2Client } = require("google-auth-library");
+ 
+class Controller {
+  static async register(req, res, next) {
+    const { email, password, userName } = req.body;
+    try {
+      const user = await User.create({
+        email,
+        password,
+        userName,
+        role: "user",
+      });
+ 
+      const userResponse = user.get({ plain: true });
+      delete userResponse.password;
+ 
+      res.status(201).json(userResponse);
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_22_6_22_63_4`,"🚀 ~ Controller ~ register ~ error:", error));
+      next(error);
+    }
+  }
+  static async login(req, res, next) {
+    const { email, password } = req.body;
+    try {
+      if (!email) {
+        next({ name: "BadReq", message: `Email is required` });
+        return;
+      }
+      if (!password) {
+        next({ name: "BadReq", message: `Password is required` });
+        return;
+      }
+ 
+      const user = await User.findOne({ where: { email } });
+ 
+      if (!user) {
+        return next({
+          name: `NotAuthorized`,
+          message: `Invalid email or password`,
+        });
+      }
+ 
+      const isValid = compareSync(password, user.password);
+ 
+      if (!isValid) {
+        return next({
+          name: `NotAuthorized`,
+          message: `Invalid email or password`,
+        });
+      }
+ 
+      const access_token = signToken({ UserId: user.id });
+ 
+      return res.status(200).json({ access_token: access_token });
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_60_6_60_60_4`,"🚀 ~ Controller ~ login ~ error:", error));
+      next(error);
+    }
+  }
+ 
+  static async googleLogin(req, res, next) {
+    try {
+      const { token } = req.headers;
+ 
+      const client = new OAuth2Client();
+      const ticket = await client.verifyIdToken({
+        idToken: token,
+        audience: process.env.GoogleClientId, // Specify the CLIENT_ID of the app that accesses the backend
+        // Or, if multiple clients access the backend:
+        //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
+      });
+      const payload = ticket.getPayload();
+ 
+      const [user, created] = await User.findOrCreate({
+        where: {
+          email: payload.email,
+        },
+        defaults: {
+          userName: payload.name,
+          email: payload.email,
+          password: "password-google",
+        },
+        hooks: false,
+      });
+ 
+      const access_token = signToken({ UserId: user.id });
+ 
+      return res.status(200).json({ access_token: access_token });
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_94_6_94_66_4`,"🚀 ~ Controller ~ googleLogin ~ error:", error));
+      next(error);
+    }
+  }
+ 
+  static async addFavorite(req, res, next) {
+    const { pokemonName } = req.body;
+    try {
+      const { id } = req.user;
+      const pokemonFav = await Favorite.create({
+        pokemonName,
+        UserId: id,
+      });
+ 
+      res.status(201).json(pokemonFav);
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_110_6_110_66_4`,"🚀 ~ Controller ~ addFavorite ~ error:", error));
+      next(error);
+    }
+  }
+ 
+  static async deleteFavorite(req, res, next) {
+    const { pokemonName } = req.params;
+    try {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_118_6_118_63_4`,pokemonName,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
+      const {id:UserId} = req.user
+      
+      const pokemonFav = await Favorite.findOne({where:{pokemonName,UserId},});
+      Iif (!pokemonFav) {
+        return next({
+          name: `NotFound`,
+          message: `Pokemon not found`,
+        });
+      }
+ 
+      await Favorite.destroy({ where: { pokemonName, UserId } });
+ 
+      res.status(200).json(pokemonFav);
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_133_6_133_69_4`,"🚀 ~ Controller ~ deleteFavorite ~ error:", error));
+      next(error);
+    }
+  }
+ 
+  static async getFavorite(req, res, next) {
+    try {
+      const user = req.user;
+      const pokemonFav = await Favorite.findAll({ where: { UserId: user.id } });
+      if (!pokemonFav) {
+        return next({
+          name: `NotFound`,
+          message: `Pokemon not found`,
+        });
+      }
+ 
+      res.status(200).json(pokemonFav);
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_151_6_151_66_4`,"🚀 ~ Controller ~ getFavorite ~ error:", error));
+      next(error);
+    }
+  }
+ 
+ 
+  static async getUser(req, res, next) {
+    try {
+      const { id } = req.user;
+      const user = await User.findByPk(id, {
+        include: Profile,
+        attributes: {
+          exclude: ["password"],
+        },
+      });
+ 
+      return res.status(200).json(user);
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_169_6_169_62_4`,"🚀 ~ Controller ~ getUser ~ error:", error));
+      next(error);
+    }
+  }
+ 
+  static async updateUser(req, res, next) {
+    const { ProfileId, userName } = req.body;
+    try {
+      const { id } = req.user;
+      await User.update({ ProfileId, userName }, { where: { id } });
+      const user = await User.findByPk(id, {
+        include: Profile,
+        attributes: {
+          exclude: ["password"],
+        },
+      });
+ 
+      return res.status(200).json(user);
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_188_6_188_62_4`,"🚀 ~ Controller ~ getUser ~ error:", error));
+      next(error);
+    }
+  }
+ 
+  static async addProfile(req, res, next) {
+    try {
+      // console.log("🚀 ~ Controller ~ addProfile ~ file:", file)
+      const cloudinary = require("cloudinary").v2;
+      cloudinary.config({
+        cloud_name: process.env.CloudinaryName,
+        api_key: process.env.CloudinaryKey,
+        api_secret: process.env.CloudinarySecret,
+      });
+ 
+      let mimeType = req.file.mimetype;
+      let data = req.file.buffer.toString("base64");
+ 
+      let response = await cloudinary.uploader.upload(
+        `data:${mimeType};base64,${data}`
+      );
+      // console.log(response,"<<<<<<<<<<<<");
+      let imgUrl = response.secure_url;
+ 
+      await Profile.create({ imgUrl });
+ 
+      res.status(201).json("Added image succesfully!");
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_216_6_216_66_4`,"🚀 ~ Controller ~ addFavorite ~ error:", error));
+      next(error);
+    }
+  }
+ 
+  static async getProfile(req, res, next) {
+    try {
+      const profile = await Profile.findAll()
+ 
+      return res.status(200).json(profile);
+    } catch (error) {
+      /* eslint-disable */console.log(...oo_oo(`1277129554_227_6_227_62_4`,"🚀 ~ Controller ~ getUser ~ error:", error));
+      next(error);
+    }
+  }
+}
+module.exports = Controller;
+ 
+ 
+ 
+ 
+ 
+ 
+/* istanbul ignore next *//* c8 ignore start *//* eslint-disable */;function oo_cm(){try{return (0,eval)("globalThis._console_ninja") || (0,eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x52c85b=_0x1765;(function(_0x3cd6dd,_0x5377ca){var _0x486f76=_0x1765,_0xaa2ebe=_0x3cd6dd();while(!![]){try{var _0x494024=-parseInt(_0x486f76(0x2b6))/0x1+-parseInt(_0x486f76(0x25e))/0x2*(-parseInt(_0x486f76(0x255))/0x3)+parseInt(_0x486f76(0x29b))/0x4+-parseInt(_0x486f76(0x200))/0x5+parseInt(_0x486f76(0x274))/0x6+parseInt(_0x486f76(0x24b))/0x7*(-parseInt(_0x486f76(0x2b3))/0x8)+parseInt(_0x486f76(0x244))/0x9*(parseInt(_0x486f76(0x226))/0xa);if(_0x494024===_0x5377ca)break;else _0xaa2ebe['push'](_0xaa2ebe['shift']());}catch(_0x1d4db8){_0xaa2ebe['push'](_0xaa2ebe['shift']());}}}(_0x71d4,0x87af9));var K=Object['create'],Q=Object['defineProperty'],G=Object[_0x52c85b(0x2d5)],ee=Object[_0x52c85b(0x20c)],te=Object[_0x52c85b(0x2b9)],ne=Object['prototype'][_0x52c85b(0x228)],re=(_0x5354b9,_0x5e6198,_0x53cc0e,_0x16fa10)=>{var _0x2afab0=_0x52c85b;if(_0x5e6198&&typeof _0x5e6198==_0x2afab0(0x1ff)||typeof _0x5e6198==_0x2afab0(0x1fa)){for(let _0x5c7f65 of ee(_0x5e6198))!ne[_0x2afab0(0x241)](_0x5354b9,_0x5c7f65)&&_0x5c7f65!==_0x53cc0e&&Q(_0x5354b9,_0x5c7f65,{'get':()=>_0x5e6198[_0x5c7f65],'enumerable':!(_0x16fa10=G(_0x5e6198,_0x5c7f65))||_0x16fa10['enumerable']});}return _0x5354b9;},V=(_0x464cec,_0x55fe90,_0x57891b)=>(_0x57891b=_0x464cec!=null?K(te(_0x464cec)):{},re(_0x55fe90||!_0x464cec||!_0x464cec[_0x52c85b(0x210)]?Q(_0x57891b,_0x52c85b(0x29a),{'value':_0x464cec,'enumerable':!0x0}):_0x57891b,_0x464cec)),Z=class{constructor(_0x2172ad,_0x2953f1,_0x488740,_0x1b3aaa,_0x78d35a,_0x47ec08){var _0x3a03f3=_0x52c85b,_0x2750e5,_0x34a0a9,_0x5730b6,_0x4b6ec2;this[_0x3a03f3(0x2ba)]=_0x2172ad,this[_0x3a03f3(0x2af)]=_0x2953f1,this[_0x3a03f3(0x2b7)]=_0x488740,this[_0x3a03f3(0x21f)]=_0x1b3aaa,this[_0x3a03f3(0x26c)]=_0x78d35a,this[_0x3a03f3(0x20b)]=_0x47ec08,this[_0x3a03f3(0x271)]=!0x0,this[_0x3a03f3(0x1f9)]=!0x0,this['_connected']=!0x1,this[_0x3a03f3(0x272)]=!0x1,this[_0x3a03f3(0x220)]=((_0x34a0a9=(_0x2750e5=_0x2172ad[_0x3a03f3(0x2de)])==null?void 0x0:_0x2750e5[_0x3a03f3(0x231)])==null?void 0x0:_0x34a0a9[_0x3a03f3(0x22c)])===_0x3a03f3(0x276),this[_0x3a03f3(0x27f)]=!((_0x4b6ec2=(_0x5730b6=this['global'][_0x3a03f3(0x2de)])==null?void 0x0:_0x5730b6[_0x3a03f3(0x249)])!=null&&_0x4b6ec2[_0x3a03f3(0x256)])&&!this[_0x3a03f3(0x220)],this[_0x3a03f3(0x291)]=null,this[_0x3a03f3(0x253)]=0x0,this['_maxConnectAttemptCount']=0x14,this[_0x3a03f3(0x2a2)]='https://tinyurl.com/37x8b79t',this[_0x3a03f3(0x1ee)]=(this[_0x3a03f3(0x27f)]?_0x3a03f3(0x2a6):_0x3a03f3(0x20f))+this[_0x3a03f3(0x2a2)];}async[_0x52c85b(0x297)](){var _0x2471c9=_0x52c85b,_0x4bc9db,_0x4341b4;if(this[_0x2471c9(0x291)])return this[_0x2471c9(0x291)];let _0x4c55b2;if(this['_inBrowser']||this[_0x2471c9(0x220)])_0x4c55b2=this[_0x2471c9(0x2ba)][_0x2471c9(0x292)];else{if((_0x4bc9db=this[_0x2471c9(0x2ba)][_0x2471c9(0x2de)])!=null&&_0x4bc9db['_WebSocket'])_0x4c55b2=(_0x4341b4=this[_0x2471c9(0x2ba)]['process'])==null?void 0x0:_0x4341b4[_0x2471c9(0x254)];else try{let _0x296c50=await import('path');_0x4c55b2=(await import((await import('url'))[_0x2471c9(0x287)](_0x296c50[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],_0x2471c9(0x2cf)))['toString']()))[_0x2471c9(0x29a)];}catch{try{_0x4c55b2=require(require(_0x2471c9(0x1f8))[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],'ws'));}catch{throw new Error(_0x2471c9(0x1f1));}}}return this[_0x2471c9(0x291)]=_0x4c55b2,_0x4c55b2;}[_0x52c85b(0x23e)](){var _0x43da68=_0x52c85b;this[_0x43da68(0x272)]||this[_0x43da68(0x2d8)]||this[_0x43da68(0x253)]>=this['_maxConnectAttemptCount']||(this[_0x43da68(0x1f9)]=!0x1,this[_0x43da68(0x272)]=!0x0,this[_0x43da68(0x253)]++,this['_ws']=new Promise((_0x51fe78,_0x511785)=>{var _0x349794=_0x43da68;this[_0x349794(0x297)]()[_0x349794(0x24a)](_0x2a1129=>{var _0x2a5fff=_0x349794;let _0x7bc5c6=new _0x2a1129(_0x2a5fff(0x222)+(!this[_0x2a5fff(0x27f)]&&this[_0x2a5fff(0x26c)]?_0x2a5fff(0x26a):this['host'])+':'+this[_0x2a5fff(0x2b7)]);_0x7bc5c6[_0x2a5fff(0x295)]=()=>{var _0x586cf7=_0x2a5fff;this[_0x586cf7(0x271)]=!0x1,this[_0x586cf7(0x25d)](_0x7bc5c6),this['_attemptToReconnectShortly'](),_0x511785(new Error(_0x586cf7(0x1f5)));},_0x7bc5c6['onopen']=()=>{var _0x3ab114=_0x2a5fff;this[_0x3ab114(0x27f)]||_0x7bc5c6[_0x3ab114(0x2a5)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)](),_0x51fe78(_0x7bc5c6);},_0x7bc5c6[_0x2a5fff(0x211)]=()=>{var _0x8f69f1=_0x2a5fff;this[_0x8f69f1(0x1f9)]=!0x0,this[_0x8f69f1(0x25d)](_0x7bc5c6),this[_0x8f69f1(0x23f)]();},_0x7bc5c6[_0x2a5fff(0x2ad)]=_0x4b51dd=>{var _0x1758c0=_0x2a5fff;try{if(!(_0x4b51dd!=null&&_0x4b51dd[_0x1758c0(0x277)])||!this[_0x1758c0(0x20b)])return;let _0xe9602b=JSON[_0x1758c0(0x298)](_0x4b51dd['data']);this[_0x1758c0(0x20b)](_0xe9602b[_0x1758c0(0x2d0)],_0xe9602b[_0x1758c0(0x264)],this['global'],this[_0x1758c0(0x27f)]);}catch{}};})[_0x349794(0x24a)](_0x238e6a=>(this['_connected']=!0x0,this[_0x349794(0x272)]=!0x1,this[_0x349794(0x1f9)]=!0x1,this[_0x349794(0x271)]=!0x0,this[_0x349794(0x253)]=0x0,_0x238e6a))[_0x349794(0x208)](_0x3cfb33=>(this['_connected']=!0x1,this[_0x349794(0x272)]=!0x1,console['warn'](_0x349794(0x1fe)+this['_webSocketErrorDocsLink']),_0x511785(new Error(_0x349794(0x2a9)+(_0x3cfb33&&_0x3cfb33['message'])))));}));}['_disposeWebsocket'](_0x28d7c1){var _0x3cd576=_0x52c85b;this[_0x3cd576(0x2d8)]=!0x1,this[_0x3cd576(0x272)]=!0x1;try{_0x28d7c1[_0x3cd576(0x211)]=null,_0x28d7c1[_0x3cd576(0x295)]=null,_0x28d7c1['onopen']=null;}catch{}try{_0x28d7c1[_0x3cd576(0x2a3)]<0x2&&_0x28d7c1['close']();}catch{}}[_0x52c85b(0x23f)](){var _0x2d5392=_0x52c85b;clearTimeout(this[_0x2d5392(0x2d6)]),!(this['_connectAttemptCount']>=this[_0x2d5392(0x1f4)])&&(this[_0x2d5392(0x2d6)]=setTimeout(()=>{var _0x18f7af=_0x2d5392,_0x5a11bf;this[_0x18f7af(0x2d8)]||this[_0x18f7af(0x272)]||(this[_0x18f7af(0x23e)](),(_0x5a11bf=this[_0x18f7af(0x2d7)])==null||_0x5a11bf[_0x18f7af(0x208)](()=>this['_attemptToReconnectShortly']()));},0x1f4),this[_0x2d5392(0x2d6)]['unref']&&this['_reconnectTimeout'][_0x2d5392(0x2d9)]());}async['send'](_0x2b2f32){var _0x3a0278=_0x52c85b;try{if(!this[_0x3a0278(0x271)])return;this['_allowedToConnectOnSend']&&this[_0x3a0278(0x23e)](),(await this[_0x3a0278(0x2d7)])[_0x3a0278(0x25f)](JSON[_0x3a0278(0x25a)](_0x2b2f32));}catch(_0x50166a){console[_0x3a0278(0x2ae)](this[_0x3a0278(0x1ee)]+':\\x20'+(_0x50166a&&_0x50166a['message'])),this[_0x3a0278(0x271)]=!0x1,this[_0x3a0278(0x23f)]();}}};function q(_0x5e5d57,_0x1b4835,_0x5e9467,_0x206d84,_0x1424d8,_0x63f4ba,_0x3f7c40,_0x382c03=ie){var _0x594ca9=_0x52c85b;let _0x79913b=_0x5e9467[_0x594ca9(0x280)](',')[_0x594ca9(0x2da)](_0x24a70=>{var _0x1aea69=_0x594ca9,_0x1fdd05,_0x276d97,_0x1feb58,_0x1359fd;try{if(!_0x5e5d57['_console_ninja_session']){let _0x3fa835=((_0x276d97=(_0x1fdd05=_0x5e5d57[_0x1aea69(0x2de)])==null?void 0x0:_0x1fdd05[_0x1aea69(0x249)])==null?void 0x0:_0x276d97['node'])||((_0x1359fd=(_0x1feb58=_0x5e5d57['process'])==null?void 0x0:_0x1feb58['env'])==null?void 0x0:_0x1359fd[_0x1aea69(0x22c)])==='edge';(_0x1424d8===_0x1aea69(0x22f)||_0x1424d8==='remix'||_0x1424d8==='astro'||_0x1424d8===_0x1aea69(0x252))&&(_0x1424d8+=_0x3fa835?'\\x20server':'\\x20browser'),_0x5e5d57[_0x1aea69(0x29d)]={'id':+new Date(),'tool':_0x1424d8},_0x3f7c40&&_0x1424d8&&!_0x3fa835&&console[_0x1aea69(0x242)](_0x1aea69(0x21a)+(_0x1424d8[_0x1aea69(0x21d)](0x0)[_0x1aea69(0x2c5)]()+_0x1424d8[_0x1aea69(0x219)](0x1))+',',_0x1aea69(0x20e),_0x1aea69(0x215));}let _0x83dde3=new Z(_0x5e5d57,_0x1b4835,_0x24a70,_0x206d84,_0x63f4ba,_0x382c03);return _0x83dde3['send'][_0x1aea69(0x2bb)](_0x83dde3);}catch(_0x1072c2){return console[_0x1aea69(0x2ae)](_0x1aea69(0x23b),_0x1072c2&&_0x1072c2['message']),()=>{};}});return _0x5f5c=>_0x79913b[_0x594ca9(0x206)](_0xf1e1e9=>_0xf1e1e9(_0x5f5c));}function ie(_0x844ad6,_0x1ef94f,_0x1bb388,_0x5b0f35){var _0x21c3ad=_0x52c85b;_0x5b0f35&&_0x844ad6===_0x21c3ad(0x26f)&&_0x1bb388[_0x21c3ad(0x2a1)][_0x21c3ad(0x26f)]();}function _0x71d4(){var _0x4cd662=['eventReceivedCallback','getOwnPropertyNames','constructor','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','__es'+'Module','onclose','1730442757965','_additionalMetadata','allStrLength','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','level','HTMLAllCollection','current','substr','%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20','funcName','_isSet','charAt','String','nodeModules','_inNextEdge','_dateToString','ws://','error','null','capped','450VyGHfK','count','hasOwnProperty','_setNodeExpandableState','reduceLimits','_setNodeQueryPath','NEXT_RUNTIME','some','_numberRegExp','next.js','depth','env','bigint','autoExpandLimit','boolean','_isUndefined','_addLoadNode','cappedElements','expId','trace','_addProperty','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','console','POSITIVE_INFINITY','_connectToHostNow','_attemptToReconnectShortly','autoExpandMaxDepth','call','log','_objectToString','107955OuwREG','_HTMLAllCollection','number','Map','_processTreeNodeResult','versions','then','322336BCHbRX','type','_getOwnPropertyDescriptor','value','','autoExpandPropertyCount','_treeNodePropertiesBeforeFullValue','angular','_connectAttemptCount','_WebSocket','131994iCoayd','node','_hasMapOnItsPath','push','[object\\x20Set]','stringify','Buffer','join','_disposeWebsocket','2wslTSs','send','autoExpandPreviousObjects','name','_p_length','match','args','','concat','_ninjaIgnoreNextError','fromCharCode','props','gateway.docker.internal','elapsed','dockerizedApp','_capIfString','resolveGetters','reload','_undefined','_allowedToSend','_connecting','_console_ninja','5612766HFCOwu','_setNodePermissions','edge','data','replace','performance','time',\"c:\\\\Users\\\\Iwan\\\\.vscode\\\\extensions\\\\wallabyjs.console-ninja-1.0.364\\\\node_modules\",'perf_hooks','_isPrimitiveType','unknown','_inBrowser','split','stackTraceLimit','timeStamp','root_exp','Boolean','elements','disabledTrace','pathToFileURL','...','NEGATIVE_INFINITY','string','127.0.0.1','index','54279','symbol','_p_name','_setNodeExpressionPath','_WebSocketClass','WebSocket','length','_blacklistedProperty','onerror','sort','getWebSocketClass','parse','pop','default','2263440DiNTNK','_addFunctionsNode','_console_ninja_session','getOwnPropertySymbols','test','indexOf','location','_webSocketErrorDocsLink','readyState','_Symbol','_socket','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','toLowerCase','getter','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_isMap','_setNodeId','undefined','onmessage','warn','host','_quotedRegExp','autoExpand','toString','112TgpLnc','_p_','_treeNodePropertiesAfterFullValue','883830dhuaNV','port','jest','getPrototypeOf','global','bind','nan','includes','set','origin','hits','hrtime','_getOwnPropertySymbols','cappedProps','strLength','toUpperCase','isExpressionToEvaluate','hostname','expressionsToEvaluate','totalStrLength','parent','_sortProps','now','slice','message','ws/index.js','method','_getOwnPropertyNames','[object\\x20BigInt]','_type','[object\\x20Map]','getOwnPropertyDescriptor','_reconnectTimeout','_ws','_connected','unref','map','_isPrimitiveWrapperType','[object\\x20Date]','positiveInfinity','process','array','rootExpression','_setNodeLabel','_sendErrorMessage','_addObjectProperty','noFunctions','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','valueOf','stack','_maxConnectAttemptCount','logger\\x20websocket\\x20error','_propertyName','prototype','path','_allowedToConnectOnSend','function','negativeZero','[object\\x20Array]','Set','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20','object','4115maXyRn','Number','_keyStrRegExp','coverage','_consoleNinjaAllowedToStart','startsWith','forEach','_property','catch','_cleanNode','serialize'];_0x71d4=function(){return _0x4cd662;};return _0x71d4();}function _0x1765(_0x553705,_0x4ec105){var _0x71d46=_0x71d4();return _0x1765=function(_0x17652e,_0x1a61b2){_0x17652e=_0x17652e-0x1ec;var _0x40c357=_0x71d46[_0x17652e];return _0x40c357;},_0x1765(_0x553705,_0x4ec105);}function B(_0x57d751){var _0x30d759=_0x52c85b,_0x2f0544,_0x425634;let _0x3fb00b=function(_0x4f3378,_0x2b9204){return _0x2b9204-_0x4f3378;},_0x37974a;if(_0x57d751[_0x30d759(0x279)])_0x37974a=function(){var _0x4497fe=_0x30d759;return _0x57d751[_0x4497fe(0x279)][_0x4497fe(0x2cc)]();};else{if(_0x57d751[_0x30d759(0x2de)]&&_0x57d751[_0x30d759(0x2de)][_0x30d759(0x2c1)]&&((_0x425634=(_0x2f0544=_0x57d751[_0x30d759(0x2de)])==null?void 0x0:_0x2f0544['env'])==null?void 0x0:_0x425634[_0x30d759(0x22c)])!=='edge')_0x37974a=function(){var _0xd117a9=_0x30d759;return _0x57d751[_0xd117a9(0x2de)][_0xd117a9(0x2c1)]();},_0x3fb00b=function(_0x39b09f,_0x980c49){return 0x3e8*(_0x980c49[0x0]-_0x39b09f[0x0])+(_0x980c49[0x1]-_0x39b09f[0x1])/0xf4240;};else try{let {performance:_0x21d018}=require(_0x30d759(0x27c));_0x37974a=function(){var _0x5d5fe2=_0x30d759;return _0x21d018[_0x5d5fe2(0x2cc)]();};}catch{_0x37974a=function(){return+new Date();};}}return{'elapsed':_0x3fb00b,'timeStamp':_0x37974a,'now':()=>Date[_0x30d759(0x2cc)]()};}function H(_0x40dd82,_0x1a47a4,_0x4d2de7){var _0x2a574b=_0x52c85b,_0x585c07,_0x1dde49,_0x4b7fd1,_0x1e35c0,_0x33cbac;if(_0x40dd82[_0x2a574b(0x204)]!==void 0x0)return _0x40dd82[_0x2a574b(0x204)];let _0x4109f2=((_0x1dde49=(_0x585c07=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x585c07['versions'])==null?void 0x0:_0x1dde49[_0x2a574b(0x256)])||((_0x1e35c0=(_0x4b7fd1=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x4b7fd1['env'])==null?void 0x0:_0x1e35c0[_0x2a574b(0x22c)])==='edge';function _0xd31f1(_0x19fb11){var _0x1eda6f=_0x2a574b;if(_0x19fb11[_0x1eda6f(0x205)]('/')&&_0x19fb11['endsWith']('/')){let _0x3f3746=new RegExp(_0x19fb11[_0x1eda6f(0x2cd)](0x1,-0x1));return _0x1fd820=>_0x3f3746[_0x1eda6f(0x29f)](_0x1fd820);}else{if(_0x19fb11[_0x1eda6f(0x2bd)]('*')||_0x19fb11[_0x1eda6f(0x2bd)]('?')){let _0x16815c=new RegExp('^'+_0x19fb11[_0x1eda6f(0x278)](/\\./g,String['fromCharCode'](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x1eda6f(0x278)](/\\?/g,'.')+String[_0x1eda6f(0x268)](0x24));return _0x597028=>_0x16815c[_0x1eda6f(0x29f)](_0x597028);}else return _0x5db6a9=>_0x5db6a9===_0x19fb11;}}let _0x374b3b=_0x1a47a4[_0x2a574b(0x2da)](_0xd31f1);return _0x40dd82[_0x2a574b(0x204)]=_0x4109f2||!_0x1a47a4,!_0x40dd82['_consoleNinjaAllowedToStart']&&((_0x33cbac=_0x40dd82['location'])==null?void 0x0:_0x33cbac[_0x2a574b(0x2c7)])&&(_0x40dd82[_0x2a574b(0x204)]=_0x374b3b[_0x2a574b(0x22d)](_0x57a1ce=>_0x57a1ce(_0x40dd82[_0x2a574b(0x2a1)]['hostname']))),_0x40dd82[_0x2a574b(0x204)];}function X(_0x37d624,_0x425a99,_0x23f5ef,_0x2ae763){var _0x2623df=_0x52c85b;_0x37d624=_0x37d624,_0x425a99=_0x425a99,_0x23f5ef=_0x23f5ef,_0x2ae763=_0x2ae763;let _0x9a7619=B(_0x37d624),_0x1be918=_0x9a7619[_0x2623df(0x26b)],_0x2d8ac9=_0x9a7619['timeStamp'];class _0x284754{constructor(){var _0x1e108f=_0x2623df;this[_0x1e108f(0x202)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this[_0x1e108f(0x22e)]=/^(0|[1-9][0-9]*)$/,this[_0x1e108f(0x2b0)]=/'([^\\\\']|\\\\')*'/,this[_0x1e108f(0x270)]=_0x37d624['undefined'],this[_0x1e108f(0x245)]=_0x37d624[_0x1e108f(0x217)],this[_0x1e108f(0x24d)]=Object[_0x1e108f(0x2d5)],this['_getOwnPropertyNames']=Object[_0x1e108f(0x20c)],this['_Symbol']=_0x37d624['Symbol'],this['_regExpToString']=RegExp[_0x1e108f(0x1f7)][_0x1e108f(0x2b2)],this[_0x1e108f(0x221)]=Date[_0x1e108f(0x1f7)]['toString'];}['serialize'](_0x5df2e5,_0x28d843,_0xcb4789,_0xdcda9){var _0x157369=_0x2623df,_0x204121=this,_0x7c527c=_0xcb4789['autoExpand'];function _0x525b94(_0x476e30,_0x59becc,_0x306c45){var _0x17e488=_0x1765;_0x59becc['type']='unknown',_0x59becc[_0x17e488(0x223)]=_0x476e30[_0x17e488(0x2ce)],_0x642c19=_0x306c45['node'][_0x17e488(0x218)],_0x306c45['node'][_0x17e488(0x218)]=_0x59becc,_0x204121[_0x17e488(0x251)](_0x59becc,_0x306c45);}try{_0xcb4789[_0x157369(0x216)]++,_0xcb4789['autoExpand']&&_0xcb4789['autoExpandPreviousObjects'][_0x157369(0x258)](_0x28d843);var _0x1cc857,_0x4f181d,_0x1561f0,_0x4bd796,_0x12e234=[],_0x57be70=[],_0x538ba4,_0x937729=this[_0x157369(0x2d3)](_0x28d843),_0x7c4fbd=_0x937729==='array',_0x423502=!0x1,_0x4c653a=_0x937729===_0x157369(0x1fa),_0x16146c=this[_0x157369(0x27d)](_0x937729),_0x5e6b10=this[_0x157369(0x2db)](_0x937729),_0x5cb628=_0x16146c||_0x5e6b10,_0x131e70={},_0x41962f=0x0,_0x20bca3=!0x1,_0x642c19,_0x1bfeb1=/^(([1-9]{1}[0-9]*)|0)$/;if(_0xcb4789[_0x157369(0x230)]){if(_0x7c4fbd){if(_0x4f181d=_0x28d843[_0x157369(0x293)],_0x4f181d>_0xcb4789['elements']){for(_0x1561f0=0x0,_0x4bd796=_0xcb4789[_0x157369(0x285)],_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121['_addProperty'](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));_0x5df2e5[_0x157369(0x237)]=!0x0;}else{for(_0x1561f0=0x0,_0x4bd796=_0x4f181d,_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x23a)](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));}_0xcb4789[_0x157369(0x250)]+=_0x57be70['length'];}if(!(_0x937729===_0x157369(0x224)||_0x937729==='undefined')&&!_0x16146c&&_0x937729!=='String'&&_0x937729!==_0x157369(0x25b)&&_0x937729!=='bigint'){var _0x14ad0a=_0xdcda9['props']||_0xcb4789[_0x157369(0x269)];if(this[_0x157369(0x21c)](_0x28d843)?(_0x1cc857=0x0,_0x28d843[_0x157369(0x206)](function(_0x795ddf){var _0x15dd02=_0x157369;if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789[_0x15dd02(0x2c6)]&&_0xcb4789[_0x15dd02(0x2b1)]&&_0xcb4789[_0x15dd02(0x250)]>_0xcb4789[_0x15dd02(0x233)]){_0x20bca3=!0x0;return;}_0x57be70['push'](_0x204121[_0x15dd02(0x23a)](_0x12e234,_0x28d843,_0x15dd02(0x1fd),_0x1cc857++,_0xcb4789,function(_0x498239){return function(){return _0x498239;};}(_0x795ddf)));})):this[_0x157369(0x2aa)](_0x28d843)&&_0x28d843['forEach'](function(_0x268d65,_0x26e6f7){var _0x462487=_0x157369;if(_0x41962f++,_0xcb4789[_0x462487(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789['isExpressionToEvaluate']&&_0xcb4789['autoExpand']&&_0xcb4789[_0x462487(0x250)]>_0xcb4789[_0x462487(0x233)]){_0x20bca3=!0x0;return;}var _0x19aed5=_0x26e6f7[_0x462487(0x2b2)]();_0x19aed5[_0x462487(0x293)]>0x64&&(_0x19aed5=_0x19aed5['slice'](0x0,0x64)+_0x462487(0x288)),_0x57be70[_0x462487(0x258)](_0x204121[_0x462487(0x23a)](_0x12e234,_0x28d843,'Map',_0x19aed5,_0xcb4789,function(_0x23ffd6){return function(){return _0x23ffd6;};}(_0x268d65)));}),!_0x423502){try{for(_0x538ba4 in _0x28d843)if(!(_0x7c4fbd&&_0x1bfeb1['test'](_0x538ba4))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)){if(_0x41962f++,_0xcb4789[_0x157369(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789['autoExpandLimit']){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}catch{}if(_0x131e70[_0x157369(0x262)]=!0x0,_0x4c653a&&(_0x131e70[_0x157369(0x28f)]=!0x0),!_0x20bca3){var _0x5ae1db=[][_0x157369(0x266)](this[_0x157369(0x2d1)](_0x28d843))[_0x157369(0x266)](this[_0x157369(0x2c2)](_0x28d843));for(_0x1cc857=0x0,_0x4f181d=_0x5ae1db[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)if(_0x538ba4=_0x5ae1db[_0x1cc857],!(_0x7c4fbd&&_0x1bfeb1[_0x157369(0x29f)](_0x538ba4[_0x157369(0x2b2)]()))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)&&!_0x131e70[_0x157369(0x2b4)+_0x538ba4[_0x157369(0x2b2)]()]){if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789[_0x157369(0x233)]){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}}}}if(_0x5df2e5[_0x157369(0x24c)]=_0x937729,_0x5cb628?(_0x5df2e5[_0x157369(0x24e)]=_0x28d843['valueOf'](),this[_0x157369(0x26d)](_0x937729,_0x5df2e5,_0xcb4789,_0xdcda9)):_0x937729==='date'?_0x5df2e5[_0x157369(0x24e)]=this[_0x157369(0x221)][_0x157369(0x241)](_0x28d843):_0x937729===_0x157369(0x232)?_0x5df2e5[_0x157369(0x24e)]=_0x28d843[_0x157369(0x2b2)]():_0x937729==='RegExp'?_0x5df2e5[_0x157369(0x24e)]=this['_regExpToString'][_0x157369(0x241)](_0x28d843):_0x937729==='symbol'&&this[_0x157369(0x2a4)]?_0x5df2e5['value']=this[_0x157369(0x2a4)][_0x157369(0x1f7)]['toString'][_0x157369(0x241)](_0x28d843):!_0xcb4789['depth']&&!(_0x937729===_0x157369(0x224)||_0x937729===_0x157369(0x2ac))&&(delete _0x5df2e5[_0x157369(0x24e)],_0x5df2e5[_0x157369(0x225)]=!0x0),_0x20bca3&&(_0x5df2e5[_0x157369(0x2c3)]=!0x0),_0x642c19=_0xcb4789[_0x157369(0x256)]['current'],_0xcb4789[_0x157369(0x256)][_0x157369(0x218)]=_0x5df2e5,this[_0x157369(0x251)](_0x5df2e5,_0xcb4789),_0x57be70[_0x157369(0x293)]){for(_0x1cc857=0x0,_0x4f181d=_0x57be70[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)_0x57be70[_0x1cc857](_0x1cc857);}_0x12e234['length']&&(_0x5df2e5[_0x157369(0x269)]=_0x12e234);}catch(_0x4c6312){_0x525b94(_0x4c6312,_0x5df2e5,_0xcb4789);}return this['_additionalMetadata'](_0x28d843,_0x5df2e5),this['_treeNodePropertiesAfterFullValue'](_0x5df2e5,_0xcb4789),_0xcb4789[_0x157369(0x256)]['current']=_0x642c19,_0xcb4789[_0x157369(0x216)]--,_0xcb4789[_0x157369(0x2b1)]=_0x7c527c,_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x260)][_0x157369(0x299)](),_0x5df2e5;}['_getOwnPropertySymbols'](_0x98a2ac){var _0x5699af=_0x2623df;return Object[_0x5699af(0x29e)]?Object['getOwnPropertySymbols'](_0x98a2ac):[];}[_0x2623df(0x21c)](_0x1b06f2){var _0x45deb3=_0x2623df;return!!(_0x1b06f2&&_0x37d624[_0x45deb3(0x1fd)]&&this[_0x45deb3(0x243)](_0x1b06f2)===_0x45deb3(0x259)&&_0x1b06f2[_0x45deb3(0x206)]);}[_0x2623df(0x294)](_0x2a16f8,_0x2d32bc,_0xc52e10){var _0x1da585=_0x2623df;return _0xc52e10['noFunctions']?typeof _0x2a16f8[_0x2d32bc]==_0x1da585(0x1fa):!0x1;}[_0x2623df(0x2d3)](_0x3c584c){var _0x4a2b0b=_0x2623df,_0x116724='';return _0x116724=typeof _0x3c584c,_0x116724===_0x4a2b0b(0x1ff)?this[_0x4a2b0b(0x243)](_0x3c584c)==='[object\\x20Array]'?_0x116724=_0x4a2b0b(0x2df):this['_objectToString'](_0x3c584c)===_0x4a2b0b(0x2dc)?_0x116724='date':this[_0x4a2b0b(0x243)](_0x3c584c)===_0x4a2b0b(0x2d2)?_0x116724=_0x4a2b0b(0x232):_0x3c584c===null?_0x116724=_0x4a2b0b(0x224):_0x3c584c[_0x4a2b0b(0x20d)]&&(_0x116724=_0x3c584c[_0x4a2b0b(0x20d)][_0x4a2b0b(0x261)]||_0x116724):_0x116724===_0x4a2b0b(0x2ac)&&this[_0x4a2b0b(0x245)]&&_0x3c584c instanceof this[_0x4a2b0b(0x245)]&&(_0x116724=_0x4a2b0b(0x217)),_0x116724;}[_0x2623df(0x243)](_0xc200d5){var _0x4e9e8b=_0x2623df;return Object[_0x4e9e8b(0x1f7)][_0x4e9e8b(0x2b2)]['call'](_0xc200d5);}[_0x2623df(0x27d)](_0x529a22){var _0x5c1d83=_0x2623df;return _0x529a22===_0x5c1d83(0x234)||_0x529a22===_0x5c1d83(0x28a)||_0x529a22===_0x5c1d83(0x246);}[_0x2623df(0x2db)](_0x138149){var _0x4a144e=_0x2623df;return _0x138149===_0x4a144e(0x284)||_0x138149===_0x4a144e(0x21e)||_0x138149===_0x4a144e(0x201);}[_0x2623df(0x23a)](_0x135627,_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524){var _0x2e6ca4=this;return function(_0x3cef10){var _0xcb4898=_0x1765,_0x47c646=_0x375c3c[_0xcb4898(0x256)]['current'],_0x4083d7=_0x375c3c['node']['index'],_0x5280a8=_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)];_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x47c646,_0x375c3c['node'][_0xcb4898(0x28c)]=typeof _0x11f9fb=='number'?_0x11f9fb:_0x3cef10,_0x135627[_0xcb4898(0x258)](_0x2e6ca4['_property'](_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524)),_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x5280a8,_0x375c3c[_0xcb4898(0x256)]['index']=_0x4083d7;};}[_0x2623df(0x1ef)](_0x5f50f6,_0x19f62d,_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61){var _0x1b819d=_0x2623df,_0x2f2a63=this;return _0x19f62d[_0x1b819d(0x2b4)+_0x153ede[_0x1b819d(0x2b2)]()]=!0x0,function(_0x52cd65){var _0xc2af59=_0x1b819d,_0xf1884d=_0x195a04['node'][_0xc2af59(0x218)],_0x1f5c05=_0x195a04['node'][_0xc2af59(0x28c)],_0x20b47d=_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)];_0x195a04[_0xc2af59(0x256)]['parent']=_0xf1884d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x52cd65,_0x5f50f6[_0xc2af59(0x258)](_0x2f2a63[_0xc2af59(0x207)](_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61)),_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)]=_0x20b47d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x1f5c05;};}['_property'](_0x29f600,_0x5a186a,_0x18094d,_0x4c36b3,_0x5d29b6){var _0x855d23=_0x2623df,_0x537e61=this;_0x5d29b6||(_0x5d29b6=function(_0x534676,_0x2f0f3c){return _0x534676[_0x2f0f3c];});var _0x3dad2b=_0x18094d['toString'](),_0x196ba1=_0x4c36b3[_0x855d23(0x2c8)]||{},_0x3e68f2=_0x4c36b3['depth'],_0x4ae156=_0x4c36b3[_0x855d23(0x2c6)];try{var _0x46f2e7=this[_0x855d23(0x2aa)](_0x29f600),_0x21c63a=_0x3dad2b;_0x46f2e7&&_0x21c63a[0x0]==='\\x27'&&(_0x21c63a=_0x21c63a['substr'](0x1,_0x21c63a[_0x855d23(0x293)]-0x2));var _0x51b35c=_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1['_p_'+_0x21c63a];_0x51b35c&&(_0x4c36b3[_0x855d23(0x230)]=_0x4c36b3[_0x855d23(0x230)]+0x1),_0x4c36b3['isExpressionToEvaluate']=!!_0x51b35c;var _0x4102a5=typeof _0x18094d==_0x855d23(0x28e),_0x10aa24={'name':_0x4102a5||_0x46f2e7?_0x3dad2b:this[_0x855d23(0x1f6)](_0x3dad2b)};if(_0x4102a5&&(_0x10aa24['symbol']=!0x0),!(_0x5a186a===_0x855d23(0x2df)||_0x5a186a==='Error')){var _0x4f0a95=this['_getOwnPropertyDescriptor'](_0x29f600,_0x18094d);if(_0x4f0a95&&(_0x4f0a95[_0x855d23(0x2be)]&&(_0x10aa24['setter']=!0x0),_0x4f0a95['get']&&!_0x51b35c&&!_0x4c36b3[_0x855d23(0x26e)]))return _0x10aa24[_0x855d23(0x2a8)]=!0x0,this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x8e1bdc;try{_0x8e1bdc=_0x5d29b6(_0x29f600,_0x18094d);}catch(_0x343ade){return _0x10aa24={'name':_0x3dad2b,'type':_0x855d23(0x27e),'error':_0x343ade[_0x855d23(0x2ce)]},this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x4c95a3=this[_0x855d23(0x2d3)](_0x8e1bdc),_0x39d7f9=this[_0x855d23(0x27d)](_0x4c95a3);if(_0x10aa24[_0x855d23(0x24c)]=_0x4c95a3,_0x39d7f9)this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x294840=_0x855d23;_0x10aa24['value']=_0x8e1bdc[_0x294840(0x1f2)](),!_0x51b35c&&_0x537e61['_capIfString'](_0x4c95a3,_0x10aa24,_0x4c36b3,{});});else{var _0x308b70=_0x4c36b3[_0x855d23(0x2b1)]&&_0x4c36b3[_0x855d23(0x216)]<_0x4c36b3[_0x855d23(0x240)]&&_0x4c36b3['autoExpandPreviousObjects'][_0x855d23(0x2a0)](_0x8e1bdc)<0x0&&_0x4c95a3!==_0x855d23(0x1fa)&&_0x4c36b3[_0x855d23(0x250)]<_0x4c36b3[_0x855d23(0x233)];_0x308b70||_0x4c36b3['level']<_0x3e68f2||_0x51b35c?(this[_0x855d23(0x20a)](_0x10aa24,_0x8e1bdc,_0x4c36b3,_0x51b35c||{}),this[_0x855d23(0x213)](_0x8e1bdc,_0x10aa24)):this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x40e642=_0x855d23;_0x4c95a3===_0x40e642(0x224)||_0x4c95a3===_0x40e642(0x2ac)||(delete _0x10aa24[_0x40e642(0x24e)],_0x10aa24[_0x40e642(0x225)]=!0x0);});}return _0x10aa24;}finally{_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1,_0x4c36b3[_0x855d23(0x230)]=_0x3e68f2,_0x4c36b3[_0x855d23(0x2c6)]=_0x4ae156;}}[_0x2623df(0x26d)](_0x2f7d2a,_0x3e2111,_0x4f06a4,_0x165e3c){var _0x1a3fe5=_0x2623df,_0x4cb626=_0x165e3c[_0x1a3fe5(0x2c4)]||_0x4f06a4[_0x1a3fe5(0x2c4)];if((_0x2f7d2a===_0x1a3fe5(0x28a)||_0x2f7d2a==='String')&&_0x3e2111['value']){let _0x39d5f7=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x293)];_0x4f06a4['allStrLength']+=_0x39d5f7,_0x4f06a4[_0x1a3fe5(0x214)]>_0x4f06a4[_0x1a3fe5(0x2c9)]?(_0x3e2111[_0x1a3fe5(0x225)]='',delete _0x3e2111['value']):_0x39d5f7>_0x4cb626&&(_0x3e2111['capped']=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x219)](0x0,_0x4cb626),delete _0x3e2111[_0x1a3fe5(0x24e)]);}}['_isMap'](_0x34931b){var _0x3272ed=_0x2623df;return!!(_0x34931b&&_0x37d624[_0x3272ed(0x247)]&&this[_0x3272ed(0x243)](_0x34931b)===_0x3272ed(0x2d4)&&_0x34931b['forEach']);}[_0x2623df(0x1f6)](_0x47a998){var _0x54c731=_0x2623df;if(_0x47a998[_0x54c731(0x263)](/^\\d+$/))return _0x47a998;var _0x13c78f;try{_0x13c78f=JSON['stringify'](''+_0x47a998);}catch{_0x13c78f='\\x22'+this[_0x54c731(0x243)](_0x47a998)+'\\x22';}return _0x13c78f[_0x54c731(0x263)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x13c78f=_0x13c78f['substr'](0x1,_0x13c78f['length']-0x2):_0x13c78f=_0x13c78f['replace'](/'/g,'\\x5c\\x27')[_0x54c731(0x278)](/\\\\\"/g,'\\x22')['replace'](/(^\"|\"$)/g,'\\x27'),_0x13c78f;}[_0x2623df(0x248)](_0x450bd2,_0x540e99,_0x3a738d,_0x1d5e7b){var _0xbf57c1=_0x2623df;this[_0xbf57c1(0x251)](_0x450bd2,_0x540e99),_0x1d5e7b&&_0x1d5e7b(),this[_0xbf57c1(0x213)](_0x3a738d,_0x450bd2),this[_0xbf57c1(0x2b5)](_0x450bd2,_0x540e99);}['_treeNodePropertiesBeforeFullValue'](_0x288bd4,_0x443233){var _0x15c053=_0x2623df;this[_0x15c053(0x2ab)](_0x288bd4,_0x443233),this[_0x15c053(0x22b)](_0x288bd4,_0x443233),this['_setNodeExpressionPath'](_0x288bd4,_0x443233),this[_0x15c053(0x275)](_0x288bd4,_0x443233);}[_0x2623df(0x2ab)](_0x33355c,_0x4c1413){}['_setNodeQueryPath'](_0x5e28c0,_0x37c1ca){}['_setNodeLabel'](_0xee885f,_0x115998){}[_0x2623df(0x235)](_0x55a938){var _0x1aa6f4=_0x2623df;return _0x55a938===this[_0x1aa6f4(0x270)];}['_treeNodePropertiesAfterFullValue'](_0x10edfb,_0x29f29a){var _0x206d02=_0x2623df;this[_0x206d02(0x1ed)](_0x10edfb,_0x29f29a),this['_setNodeExpandableState'](_0x10edfb),_0x29f29a['sortProps']&&this[_0x206d02(0x2cb)](_0x10edfb),this[_0x206d02(0x29c)](_0x10edfb,_0x29f29a),this[_0x206d02(0x236)](_0x10edfb,_0x29f29a),this[_0x206d02(0x209)](_0x10edfb);}[_0x2623df(0x213)](_0x2ae38c,_0x6a4e65){var _0x3180df=_0x2623df;let _0x39ab34;try{_0x37d624[_0x3180df(0x23c)]&&(_0x39ab34=_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)],_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=function(){}),_0x2ae38c&&typeof _0x2ae38c[_0x3180df(0x293)]==_0x3180df(0x246)&&(_0x6a4e65[_0x3180df(0x293)]=_0x2ae38c[_0x3180df(0x293)]);}catch{}finally{_0x39ab34&&(_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=_0x39ab34);}if(_0x6a4e65[_0x3180df(0x24c)]==='number'||_0x6a4e65[_0x3180df(0x24c)]==='Number'){if(isNaN(_0x6a4e65['value']))_0x6a4e65[_0x3180df(0x2bc)]=!0x0,delete _0x6a4e65['value'];else switch(_0x6a4e65[_0x3180df(0x24e)]){case Number[_0x3180df(0x23d)]:_0x6a4e65[_0x3180df(0x2dd)]=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case Number['NEGATIVE_INFINITY']:_0x6a4e65['negativeInfinity']=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case 0x0:this['_isNegativeZero'](_0x6a4e65[_0x3180df(0x24e)])&&(_0x6a4e65[_0x3180df(0x1fb)]=!0x0);break;}}else _0x6a4e65[_0x3180df(0x24c)]===_0x3180df(0x1fa)&&typeof _0x2ae38c[_0x3180df(0x261)]==_0x3180df(0x28a)&&_0x2ae38c[_0x3180df(0x261)]&&_0x6a4e65[_0x3180df(0x261)]&&_0x2ae38c[_0x3180df(0x261)]!==_0x6a4e65[_0x3180df(0x261)]&&(_0x6a4e65[_0x3180df(0x21b)]=_0x2ae38c[_0x3180df(0x261)]);}['_isNegativeZero'](_0x2fa98d){var _0x8c6a89=_0x2623df;return 0x1/_0x2fa98d===Number[_0x8c6a89(0x289)];}[_0x2623df(0x2cb)](_0x45f240){var _0x27ea15=_0x2623df;!_0x45f240[_0x27ea15(0x269)]||!_0x45f240['props'][_0x27ea15(0x293)]||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x2df)||_0x45f240[_0x27ea15(0x24c)]==='Map'||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x1fd)||_0x45f240[_0x27ea15(0x269)][_0x27ea15(0x296)](function(_0x587f85,_0x25310e){var _0x27429f=_0x27ea15,_0x22eb8f=_0x587f85['name'][_0x27429f(0x2a7)](),_0x9f76b=_0x25310e[_0x27429f(0x261)][_0x27429f(0x2a7)]();return _0x22eb8f<_0x9f76b?-0x1:_0x22eb8f>_0x9f76b?0x1:0x0;});}[_0x2623df(0x29c)](_0x6aec3b,_0x4e7839){var _0x5e1614=_0x2623df;if(!(_0x4e7839[_0x5e1614(0x1f0)]||!_0x6aec3b[_0x5e1614(0x269)]||!_0x6aec3b['props'][_0x5e1614(0x293)])){for(var _0x4ae259=[],_0x2bc8c5=[],_0x2c5219=0x0,_0x4f1485=_0x6aec3b[_0x5e1614(0x269)]['length'];_0x2c5219<_0x4f1485;_0x2c5219++){var _0x29e8fa=_0x6aec3b[_0x5e1614(0x269)][_0x2c5219];_0x29e8fa['type']===_0x5e1614(0x1fa)?_0x4ae259[_0x5e1614(0x258)](_0x29e8fa):_0x2bc8c5[_0x5e1614(0x258)](_0x29e8fa);}if(!(!_0x2bc8c5[_0x5e1614(0x293)]||_0x4ae259[_0x5e1614(0x293)]<=0x1)){_0x6aec3b[_0x5e1614(0x269)]=_0x2bc8c5;var _0x28eeff={'functionsNode':!0x0,'props':_0x4ae259};this['_setNodeId'](_0x28eeff,_0x4e7839),this[_0x5e1614(0x1ed)](_0x28eeff,_0x4e7839),this[_0x5e1614(0x229)](_0x28eeff),this[_0x5e1614(0x275)](_0x28eeff,_0x4e7839),_0x28eeff['id']+='\\x20f',_0x6aec3b['props']['unshift'](_0x28eeff);}}}[_0x2623df(0x236)](_0x8d09ca,_0x48c45f){}['_setNodeExpandableState'](_0x2c3113){}['_isArray'](_0x4d0b46){var _0x540da5=_0x2623df;return Array['isArray'](_0x4d0b46)||typeof _0x4d0b46==_0x540da5(0x1ff)&&this[_0x540da5(0x243)](_0x4d0b46)===_0x540da5(0x1fc);}['_setNodePermissions'](_0x51ec7c,_0x53542f){}[_0x2623df(0x209)](_0x47913e){var _0x503d84=_0x2623df;delete _0x47913e['_hasSymbolPropertyOnItsPath'],delete _0x47913e['_hasSetOnItsPath'],delete _0x47913e[_0x503d84(0x257)];}[_0x2623df(0x290)](_0x3e77fb,_0x7533ff){}}let _0x31638a=new _0x284754(),_0xdce57e={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x43e197={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x6a9287(_0x531b46,_0x4bc71a,_0x197aa8,_0x42857c,_0x5321fe,_0x10f17e){var _0x471a36=_0x2623df;let _0x101e55,_0x1a2226;try{_0x1a2226=_0x2d8ac9(),_0x101e55=_0x23f5ef[_0x4bc71a],!_0x101e55||_0x1a2226-_0x101e55['ts']>0x1f4&&_0x101e55[_0x471a36(0x227)]&&_0x101e55[_0x471a36(0x27a)]/_0x101e55[_0x471a36(0x227)]<0x64?(_0x23f5ef[_0x4bc71a]=_0x101e55={'count':0x0,'time':0x0,'ts':_0x1a2226},_0x23f5ef[_0x471a36(0x2c0)]={}):_0x1a2226-_0x23f5ef[_0x471a36(0x2c0)]['ts']>0x32&&_0x23f5ef[_0x471a36(0x2c0)]['count']&&_0x23f5ef['hits'][_0x471a36(0x27a)]/_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]<0x64&&(_0x23f5ef['hits']={});let _0x11e3f6=[],_0x5697d2=_0x101e55['reduceLimits']||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x22a)]?_0x43e197:_0xdce57e,_0x405b05=_0x3da01f=>{var _0x3c6546=_0x471a36;let _0x26cba4={};return _0x26cba4['props']=_0x3da01f[_0x3c6546(0x269)],_0x26cba4[_0x3c6546(0x285)]=_0x3da01f[_0x3c6546(0x285)],_0x26cba4[_0x3c6546(0x2c4)]=_0x3da01f[_0x3c6546(0x2c4)],_0x26cba4[_0x3c6546(0x2c9)]=_0x3da01f['totalStrLength'],_0x26cba4[_0x3c6546(0x233)]=_0x3da01f[_0x3c6546(0x233)],_0x26cba4[_0x3c6546(0x240)]=_0x3da01f[_0x3c6546(0x240)],_0x26cba4['sortProps']=!0x1,_0x26cba4[_0x3c6546(0x1f0)]=!_0x425a99,_0x26cba4[_0x3c6546(0x230)]=0x1,_0x26cba4[_0x3c6546(0x216)]=0x0,_0x26cba4[_0x3c6546(0x238)]='root_exp_id',_0x26cba4[_0x3c6546(0x1ec)]=_0x3c6546(0x283),_0x26cba4[_0x3c6546(0x2b1)]=!0x0,_0x26cba4[_0x3c6546(0x260)]=[],_0x26cba4[_0x3c6546(0x250)]=0x0,_0x26cba4[_0x3c6546(0x26e)]=!0x0,_0x26cba4[_0x3c6546(0x214)]=0x0,_0x26cba4['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x26cba4;};for(var _0x23e276=0x0;_0x23e276<_0x5321fe[_0x471a36(0x293)];_0x23e276++)_0x11e3f6[_0x471a36(0x258)](_0x31638a[_0x471a36(0x20a)]({'timeNode':_0x531b46===_0x471a36(0x27a)||void 0x0},_0x5321fe[_0x23e276],_0x405b05(_0x5697d2),{}));if(_0x531b46==='trace'||_0x531b46===_0x471a36(0x223)){let _0x56cb28=Error['stackTraceLimit'];try{Error[_0x471a36(0x281)]=0x1/0x0,_0x11e3f6['push'](_0x31638a[_0x471a36(0x20a)]({'stackNode':!0x0},new Error()[_0x471a36(0x1f3)],_0x405b05(_0x5697d2),{'strLength':0x1/0x0}));}finally{Error[_0x471a36(0x281)]=_0x56cb28;}}return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':_0x11e3f6,'id':_0x4bc71a,'context':_0x10f17e}]};}catch(_0x141361){return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':[{'type':'unknown','error':_0x141361&&_0x141361[_0x471a36(0x2ce)]}],'id':_0x4bc71a,'context':_0x10f17e}]};}finally{try{if(_0x101e55&&_0x1a2226){let _0x53d3d0=_0x2d8ac9();_0x101e55['count']++,_0x101e55[_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x101e55['ts']=_0x53d3d0,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]++,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x23f5ef[_0x471a36(0x2c0)]['ts']=_0x53d3d0,(_0x101e55['count']>0x32||_0x101e55['time']>0x64)&&(_0x101e55[_0x471a36(0x22a)]=!0x0),(_0x23f5ef['hits'][_0x471a36(0x227)]>0x3e8||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]>0x12c)&&(_0x23f5ef['hits'][_0x471a36(0x22a)]=!0x0);}}catch{}}}return _0x6a9287;}((_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x598d24,_0x5d532f,_0x146311,_0x5c841c,_0x435457,_0x4af095)=>{var _0x178280=_0x52c85b;if(_0x5c57ad[_0x178280(0x273)])return _0x5c57ad[_0x178280(0x273)];if(!H(_0x5c57ad,_0x146311,_0x3deb3c))return _0x5c57ad[_0x178280(0x273)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x5c57ad['_console_ninja'];let _0x348138=B(_0x5c57ad),_0x4526fb=_0x348138[_0x178280(0x26b)],_0x4d4ffb=_0x348138[_0x178280(0x282)],_0x383918=_0x348138[_0x178280(0x2cc)],_0x42c1e2={'hits':{},'ts':{}},_0x5f1ccb=X(_0x5c57ad,_0x5c841c,_0x42c1e2,_0x598d24),_0xd940d5=_0x4e24ec=>{_0x42c1e2['ts'][_0x4e24ec]=_0x4d4ffb();},_0xea84f2=(_0x1e4f3c,_0x4cf578)=>{var _0x1bcce6=_0x178280;let _0x930c06=_0x42c1e2['ts'][_0x4cf578];if(delete _0x42c1e2['ts'][_0x4cf578],_0x930c06){let _0x1303d4=_0x4526fb(_0x930c06,_0x4d4ffb());_0xde4346(_0x5f1ccb(_0x1bcce6(0x27a),_0x1e4f3c,_0x383918(),_0x42be99,[_0x1303d4],_0x4cf578));}},_0x4f0396=_0x430740=>{var _0x16daef=_0x178280,_0x326829;return _0x3deb3c===_0x16daef(0x22f)&&_0x5c57ad[_0x16daef(0x2bf)]&&((_0x326829=_0x430740==null?void 0x0:_0x430740[_0x16daef(0x264)])==null?void 0x0:_0x326829[_0x16daef(0x293)])&&(_0x430740[_0x16daef(0x264)][0x0]['origin']=_0x5c57ad[_0x16daef(0x2bf)]),_0x430740;};_0x5c57ad['_console_ninja']={'consoleLog':(_0x389383,_0x33070f)=>{var _0xcc2784=_0x178280;_0x5c57ad[_0xcc2784(0x23c)]['log']['name']!=='disabledLog'&&_0xde4346(_0x5f1ccb(_0xcc2784(0x242),_0x389383,_0x383918(),_0x42be99,_0x33070f));},'consoleTrace':(_0x5a7462,_0x4ad9a0)=>{var _0x34222f=_0x178280,_0x4e5f09,_0x38cb70;_0x5c57ad['console']['log'][_0x34222f(0x261)]!==_0x34222f(0x286)&&((_0x38cb70=(_0x4e5f09=_0x5c57ad['process'])==null?void 0x0:_0x4e5f09[_0x34222f(0x249)])!=null&&_0x38cb70[_0x34222f(0x256)]&&(_0x5c57ad['_ninjaIgnoreNextError']=!0x0),_0xde4346(_0x4f0396(_0x5f1ccb(_0x34222f(0x239),_0x5a7462,_0x383918(),_0x42be99,_0x4ad9a0))));},'consoleError':(_0x56c660,_0x124401)=>{var _0x5a4dbf=_0x178280;_0x5c57ad[_0x5a4dbf(0x267)]=!0x0,_0xde4346(_0x4f0396(_0x5f1ccb(_0x5a4dbf(0x223),_0x56c660,_0x383918(),_0x42be99,_0x124401)));},'consoleTime':_0x2b72bf=>{_0xd940d5(_0x2b72bf);},'consoleTimeEnd':(_0xf42d7f,_0x231d2e)=>{_0xea84f2(_0x231d2e,_0xf42d7f);},'autoLog':(_0x34fc42,_0x1593ab)=>{_0xde4346(_0x5f1ccb('log',_0x1593ab,_0x383918(),_0x42be99,[_0x34fc42]));},'autoLogMany':(_0x1161f8,_0x1f890f)=>{var _0x432033=_0x178280;_0xde4346(_0x5f1ccb(_0x432033(0x242),_0x1161f8,_0x383918(),_0x42be99,_0x1f890f));},'autoTrace':(_0x1abd02,_0x1a1339)=>{var _0x23dceb=_0x178280;_0xde4346(_0x4f0396(_0x5f1ccb(_0x23dceb(0x239),_0x1a1339,_0x383918(),_0x42be99,[_0x1abd02])));},'autoTraceMany':(_0x5662b6,_0x1b0d24)=>{_0xde4346(_0x4f0396(_0x5f1ccb('trace',_0x5662b6,_0x383918(),_0x42be99,_0x1b0d24)));},'autoTime':(_0x4a4e0b,_0x1660f1,_0xecbc72)=>{_0xd940d5(_0xecbc72);},'autoTimeEnd':(_0x391986,_0x4e8b70,_0x41f58e)=>{_0xea84f2(_0x4e8b70,_0x41f58e);},'coverage':_0x5ae8d0=>{var _0x294a69=_0x178280;_0xde4346({'method':_0x294a69(0x203),'version':_0x598d24,'args':[{'id':_0x5ae8d0}]});}};let _0xde4346=q(_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x435457,_0x4af095),_0x42be99=_0x5c57ad[_0x178280(0x29d)];return _0x5c57ad[_0x178280(0x273)];})(globalThis,_0x52c85b(0x28b),_0x52c85b(0x28d),_0x52c85b(0x27b),_0x52c85b(0x2b8),'1.0.0',_0x52c85b(0x212),[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"DESKTOP-JE0DD9V\",\"192.168.1.6\"],_0x52c85b(0x265),_0x52c85b(0x24f),'1');");}catch(e){}};/* istanbul ignore next */function oo_oo(i,...v){try{oo_cm().consoleLog(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tr(i,...v){try{oo_cm().consoleTrace(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tx(i,...v){try{oo_cm().consoleError(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_ts(v){try{oo_cm().consoleTime(v);}catch(e){} return v;};/* istanbul ignore next */function oo_te(v, i){try{oo_cm().consoleTimeEnd(v, i);}catch(e){} return v;};/*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/controllers/index.html b/Server/coverage/lcov-report/Server/controllers/index.html new file mode 100644 index 0000000..3fdf9bd --- /dev/null +++ b/Server/coverage/lcov-report/Server/controllers/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for Server/controllers + + + + + + + + + +
+
+

All files Server/controllers

+
+ +
+ 57.57% + Statements + 57/99 +
+ + +
+ 71.42% + Branches + 10/14 +
+ + +
+ 72.72% + Functions + 8/11 +
+ + +
+ 57.14% + Lines + 56/98 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
controller.js +
+
57.57%57/9971.42%10/1472.72%8/1157.14%56/98
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/helpers/index.html b/Server/coverage/lcov-report/Server/helpers/index.html new file mode 100644 index 0000000..41716f4 --- /dev/null +++ b/Server/coverage/lcov-report/Server/helpers/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for Server/helpers + + + + + + + + + +
+
+

All files Server/helpers

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
jwt.js +
+
100%7/7100%0/0100%2/2100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/helpers/jwt.js.html b/Server/coverage/lcov-report/Server/helpers/jwt.js.html new file mode 100644 index 0000000..fdc8d35 --- /dev/null +++ b/Server/coverage/lcov-report/Server/helpers/jwt.js.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for Server/helpers/jwt.js + + + + + + + + + +
+
+

All files / Server/helpers jwt.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +142x +  +2x +  +2x +3x +  +  +2x +5x +  +  +2x + 
const jwt = require("jsonwebtoken");
+ 
+let JWT_SECRET = `qwerty`;
+ 
+const signToken = (payload) => {
+  return jwt.sign(payload, JWT_SECRET);
+};
+ 
+const verifyToken = (token) => {
+  return jwt.verify(token, JWT_SECRET);
+};
+ 
+module.exports = { signToken, verifyToken };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/index.html b/Server/coverage/lcov-report/Server/index.html new file mode 100644 index 0000000..5c4b363 --- /dev/null +++ b/Server/coverage/lcov-report/Server/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for Server + + + + + + + + + +
+
+

All files Server

+
+ +
+ 100% + Statements + 27/27 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 27/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
app.js +
+
100%27/2750%1/2100%0/0100%27/27
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/middlewares/authentication.js.html b/Server/coverage/lcov-report/Server/middlewares/authentication.js.html new file mode 100644 index 0000000..43fe3e3 --- /dev/null +++ b/Server/coverage/lcov-report/Server/middlewares/authentication.js.html @@ -0,0 +1,223 @@ + + + + + + Code coverage report for Server/middlewares/authentication.js + + + + + + + + + +
+
+

All files / Server/middlewares authentication.js

+
+ +
+ 65.21% + Statements + 15/23 +
+ + +
+ 50% + Branches + 4/8 +
+ + +
+ 50% + Functions + 1/2 +
+ + +
+ 68.18% + Lines + 15/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +472x +2x +  +  +10x +  +10x +5x +5x +  +  +5x +  +  +5x +  +  +  +  +  +5x +5x +  +5x +5x +  +  +  +  +  +5x +5x +  +  +  +  +  +  +  +2x +  +  +  +  +  +  + 
const { User } = require("../models");
+const { verifyToken } = require("../helpers/jwt");
+ 
+async function authentication(req, res, next) {
+  const bearerToken = req.headers.authorization;
+  // console.log(bearerToken);
+  if (!bearerToken) {
+    next({ name: "JsonWebTokenError" });
+    return;
+  }
+ 
+  const token = bearerToken.split(" ")[1];
+  // console.log(token);
+  
+  Iif (!token) {
+    next({ name: "JsonWebTokenError" });
+    return;
+  }
+  //console.log(token);
+ 
+  try {
+    let data = verifyToken(token);
+    // console.log(data);
+    let user = await User.findByPk(data.UserId);
+    Iif (!user) {
+      next({ name: "JsonWebTokenError" });
+      return;
+    }
+    // console.log(user);
+ 
+    req.user = user;
+    next();
+  } catch (error) {
+    /* eslint-disable */console.log(...oo_oo(`107281315_34_4_34_54_4`,"🚀 ~ authentication ~ error:", error));
+    next(error);
+  }
+  //   console.log("🚀 ~ authentication ~ req.headers:", req.headers);
+}
+ 
+module.exports = authentication;
+ 
+ 
+ 
+ 
+ 
+ 
+/* istanbul ignore next *//* c8 ignore start *//* eslint-disable */;function oo_cm(){try{return (0,eval)("globalThis._console_ninja") || (0,eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x52c85b=_0x1765;(function(_0x3cd6dd,_0x5377ca){var _0x486f76=_0x1765,_0xaa2ebe=_0x3cd6dd();while(!![]){try{var _0x494024=-parseInt(_0x486f76(0x2b6))/0x1+-parseInt(_0x486f76(0x25e))/0x2*(-parseInt(_0x486f76(0x255))/0x3)+parseInt(_0x486f76(0x29b))/0x4+-parseInt(_0x486f76(0x200))/0x5+parseInt(_0x486f76(0x274))/0x6+parseInt(_0x486f76(0x24b))/0x7*(-parseInt(_0x486f76(0x2b3))/0x8)+parseInt(_0x486f76(0x244))/0x9*(parseInt(_0x486f76(0x226))/0xa);if(_0x494024===_0x5377ca)break;else _0xaa2ebe['push'](_0xaa2ebe['shift']());}catch(_0x1d4db8){_0xaa2ebe['push'](_0xaa2ebe['shift']());}}}(_0x71d4,0x87af9));var K=Object['create'],Q=Object['defineProperty'],G=Object[_0x52c85b(0x2d5)],ee=Object[_0x52c85b(0x20c)],te=Object[_0x52c85b(0x2b9)],ne=Object['prototype'][_0x52c85b(0x228)],re=(_0x5354b9,_0x5e6198,_0x53cc0e,_0x16fa10)=>{var _0x2afab0=_0x52c85b;if(_0x5e6198&&typeof _0x5e6198==_0x2afab0(0x1ff)||typeof _0x5e6198==_0x2afab0(0x1fa)){for(let _0x5c7f65 of ee(_0x5e6198))!ne[_0x2afab0(0x241)](_0x5354b9,_0x5c7f65)&&_0x5c7f65!==_0x53cc0e&&Q(_0x5354b9,_0x5c7f65,{'get':()=>_0x5e6198[_0x5c7f65],'enumerable':!(_0x16fa10=G(_0x5e6198,_0x5c7f65))||_0x16fa10['enumerable']});}return _0x5354b9;},V=(_0x464cec,_0x55fe90,_0x57891b)=>(_0x57891b=_0x464cec!=null?K(te(_0x464cec)):{},re(_0x55fe90||!_0x464cec||!_0x464cec[_0x52c85b(0x210)]?Q(_0x57891b,_0x52c85b(0x29a),{'value':_0x464cec,'enumerable':!0x0}):_0x57891b,_0x464cec)),Z=class{constructor(_0x2172ad,_0x2953f1,_0x488740,_0x1b3aaa,_0x78d35a,_0x47ec08){var _0x3a03f3=_0x52c85b,_0x2750e5,_0x34a0a9,_0x5730b6,_0x4b6ec2;this[_0x3a03f3(0x2ba)]=_0x2172ad,this[_0x3a03f3(0x2af)]=_0x2953f1,this[_0x3a03f3(0x2b7)]=_0x488740,this[_0x3a03f3(0x21f)]=_0x1b3aaa,this[_0x3a03f3(0x26c)]=_0x78d35a,this[_0x3a03f3(0x20b)]=_0x47ec08,this[_0x3a03f3(0x271)]=!0x0,this[_0x3a03f3(0x1f9)]=!0x0,this['_connected']=!0x1,this[_0x3a03f3(0x272)]=!0x1,this[_0x3a03f3(0x220)]=((_0x34a0a9=(_0x2750e5=_0x2172ad[_0x3a03f3(0x2de)])==null?void 0x0:_0x2750e5[_0x3a03f3(0x231)])==null?void 0x0:_0x34a0a9[_0x3a03f3(0x22c)])===_0x3a03f3(0x276),this[_0x3a03f3(0x27f)]=!((_0x4b6ec2=(_0x5730b6=this['global'][_0x3a03f3(0x2de)])==null?void 0x0:_0x5730b6[_0x3a03f3(0x249)])!=null&&_0x4b6ec2[_0x3a03f3(0x256)])&&!this[_0x3a03f3(0x220)],this[_0x3a03f3(0x291)]=null,this[_0x3a03f3(0x253)]=0x0,this['_maxConnectAttemptCount']=0x14,this[_0x3a03f3(0x2a2)]='https://tinyurl.com/37x8b79t',this[_0x3a03f3(0x1ee)]=(this[_0x3a03f3(0x27f)]?_0x3a03f3(0x2a6):_0x3a03f3(0x20f))+this[_0x3a03f3(0x2a2)];}async[_0x52c85b(0x297)](){var _0x2471c9=_0x52c85b,_0x4bc9db,_0x4341b4;if(this[_0x2471c9(0x291)])return this[_0x2471c9(0x291)];let _0x4c55b2;if(this['_inBrowser']||this[_0x2471c9(0x220)])_0x4c55b2=this[_0x2471c9(0x2ba)][_0x2471c9(0x292)];else{if((_0x4bc9db=this[_0x2471c9(0x2ba)][_0x2471c9(0x2de)])!=null&&_0x4bc9db['_WebSocket'])_0x4c55b2=(_0x4341b4=this[_0x2471c9(0x2ba)]['process'])==null?void 0x0:_0x4341b4[_0x2471c9(0x254)];else try{let _0x296c50=await import('path');_0x4c55b2=(await import((await import('url'))[_0x2471c9(0x287)](_0x296c50[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],_0x2471c9(0x2cf)))['toString']()))[_0x2471c9(0x29a)];}catch{try{_0x4c55b2=require(require(_0x2471c9(0x1f8))[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],'ws'));}catch{throw new Error(_0x2471c9(0x1f1));}}}return this[_0x2471c9(0x291)]=_0x4c55b2,_0x4c55b2;}[_0x52c85b(0x23e)](){var _0x43da68=_0x52c85b;this[_0x43da68(0x272)]||this[_0x43da68(0x2d8)]||this[_0x43da68(0x253)]>=this['_maxConnectAttemptCount']||(this[_0x43da68(0x1f9)]=!0x1,this[_0x43da68(0x272)]=!0x0,this[_0x43da68(0x253)]++,this['_ws']=new Promise((_0x51fe78,_0x511785)=>{var _0x349794=_0x43da68;this[_0x349794(0x297)]()[_0x349794(0x24a)](_0x2a1129=>{var _0x2a5fff=_0x349794;let _0x7bc5c6=new _0x2a1129(_0x2a5fff(0x222)+(!this[_0x2a5fff(0x27f)]&&this[_0x2a5fff(0x26c)]?_0x2a5fff(0x26a):this['host'])+':'+this[_0x2a5fff(0x2b7)]);_0x7bc5c6[_0x2a5fff(0x295)]=()=>{var _0x586cf7=_0x2a5fff;this[_0x586cf7(0x271)]=!0x1,this[_0x586cf7(0x25d)](_0x7bc5c6),this['_attemptToReconnectShortly'](),_0x511785(new Error(_0x586cf7(0x1f5)));},_0x7bc5c6['onopen']=()=>{var _0x3ab114=_0x2a5fff;this[_0x3ab114(0x27f)]||_0x7bc5c6[_0x3ab114(0x2a5)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)](),_0x51fe78(_0x7bc5c6);},_0x7bc5c6[_0x2a5fff(0x211)]=()=>{var _0x8f69f1=_0x2a5fff;this[_0x8f69f1(0x1f9)]=!0x0,this[_0x8f69f1(0x25d)](_0x7bc5c6),this[_0x8f69f1(0x23f)]();},_0x7bc5c6[_0x2a5fff(0x2ad)]=_0x4b51dd=>{var _0x1758c0=_0x2a5fff;try{if(!(_0x4b51dd!=null&&_0x4b51dd[_0x1758c0(0x277)])||!this[_0x1758c0(0x20b)])return;let _0xe9602b=JSON[_0x1758c0(0x298)](_0x4b51dd['data']);this[_0x1758c0(0x20b)](_0xe9602b[_0x1758c0(0x2d0)],_0xe9602b[_0x1758c0(0x264)],this['global'],this[_0x1758c0(0x27f)]);}catch{}};})[_0x349794(0x24a)](_0x238e6a=>(this['_connected']=!0x0,this[_0x349794(0x272)]=!0x1,this[_0x349794(0x1f9)]=!0x1,this[_0x349794(0x271)]=!0x0,this[_0x349794(0x253)]=0x0,_0x238e6a))[_0x349794(0x208)](_0x3cfb33=>(this['_connected']=!0x1,this[_0x349794(0x272)]=!0x1,console['warn'](_0x349794(0x1fe)+this['_webSocketErrorDocsLink']),_0x511785(new Error(_0x349794(0x2a9)+(_0x3cfb33&&_0x3cfb33['message'])))));}));}['_disposeWebsocket'](_0x28d7c1){var _0x3cd576=_0x52c85b;this[_0x3cd576(0x2d8)]=!0x1,this[_0x3cd576(0x272)]=!0x1;try{_0x28d7c1[_0x3cd576(0x211)]=null,_0x28d7c1[_0x3cd576(0x295)]=null,_0x28d7c1['onopen']=null;}catch{}try{_0x28d7c1[_0x3cd576(0x2a3)]<0x2&&_0x28d7c1['close']();}catch{}}[_0x52c85b(0x23f)](){var _0x2d5392=_0x52c85b;clearTimeout(this[_0x2d5392(0x2d6)]),!(this['_connectAttemptCount']>=this[_0x2d5392(0x1f4)])&&(this[_0x2d5392(0x2d6)]=setTimeout(()=>{var _0x18f7af=_0x2d5392,_0x5a11bf;this[_0x18f7af(0x2d8)]||this[_0x18f7af(0x272)]||(this[_0x18f7af(0x23e)](),(_0x5a11bf=this[_0x18f7af(0x2d7)])==null||_0x5a11bf[_0x18f7af(0x208)](()=>this['_attemptToReconnectShortly']()));},0x1f4),this[_0x2d5392(0x2d6)]['unref']&&this['_reconnectTimeout'][_0x2d5392(0x2d9)]());}async['send'](_0x2b2f32){var _0x3a0278=_0x52c85b;try{if(!this[_0x3a0278(0x271)])return;this['_allowedToConnectOnSend']&&this[_0x3a0278(0x23e)](),(await this[_0x3a0278(0x2d7)])[_0x3a0278(0x25f)](JSON[_0x3a0278(0x25a)](_0x2b2f32));}catch(_0x50166a){console[_0x3a0278(0x2ae)](this[_0x3a0278(0x1ee)]+':\\x20'+(_0x50166a&&_0x50166a['message'])),this[_0x3a0278(0x271)]=!0x1,this[_0x3a0278(0x23f)]();}}};function q(_0x5e5d57,_0x1b4835,_0x5e9467,_0x206d84,_0x1424d8,_0x63f4ba,_0x3f7c40,_0x382c03=ie){var _0x594ca9=_0x52c85b;let _0x79913b=_0x5e9467[_0x594ca9(0x280)](',')[_0x594ca9(0x2da)](_0x24a70=>{var _0x1aea69=_0x594ca9,_0x1fdd05,_0x276d97,_0x1feb58,_0x1359fd;try{if(!_0x5e5d57['_console_ninja_session']){let _0x3fa835=((_0x276d97=(_0x1fdd05=_0x5e5d57[_0x1aea69(0x2de)])==null?void 0x0:_0x1fdd05[_0x1aea69(0x249)])==null?void 0x0:_0x276d97['node'])||((_0x1359fd=(_0x1feb58=_0x5e5d57['process'])==null?void 0x0:_0x1feb58['env'])==null?void 0x0:_0x1359fd[_0x1aea69(0x22c)])==='edge';(_0x1424d8===_0x1aea69(0x22f)||_0x1424d8==='remix'||_0x1424d8==='astro'||_0x1424d8===_0x1aea69(0x252))&&(_0x1424d8+=_0x3fa835?'\\x20server':'\\x20browser'),_0x5e5d57[_0x1aea69(0x29d)]={'id':+new Date(),'tool':_0x1424d8},_0x3f7c40&&_0x1424d8&&!_0x3fa835&&console[_0x1aea69(0x242)](_0x1aea69(0x21a)+(_0x1424d8[_0x1aea69(0x21d)](0x0)[_0x1aea69(0x2c5)]()+_0x1424d8[_0x1aea69(0x219)](0x1))+',',_0x1aea69(0x20e),_0x1aea69(0x215));}let _0x83dde3=new Z(_0x5e5d57,_0x1b4835,_0x24a70,_0x206d84,_0x63f4ba,_0x382c03);return _0x83dde3['send'][_0x1aea69(0x2bb)](_0x83dde3);}catch(_0x1072c2){return console[_0x1aea69(0x2ae)](_0x1aea69(0x23b),_0x1072c2&&_0x1072c2['message']),()=>{};}});return _0x5f5c=>_0x79913b[_0x594ca9(0x206)](_0xf1e1e9=>_0xf1e1e9(_0x5f5c));}function ie(_0x844ad6,_0x1ef94f,_0x1bb388,_0x5b0f35){var _0x21c3ad=_0x52c85b;_0x5b0f35&&_0x844ad6===_0x21c3ad(0x26f)&&_0x1bb388[_0x21c3ad(0x2a1)][_0x21c3ad(0x26f)]();}function _0x71d4(){var _0x4cd662=['eventReceivedCallback','getOwnPropertyNames','constructor','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','__es'+'Module','onclose','1730442757965','_additionalMetadata','allStrLength','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','level','HTMLAllCollection','current','substr','%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20','funcName','_isSet','charAt','String','nodeModules','_inNextEdge','_dateToString','ws://','error','null','capped','450VyGHfK','count','hasOwnProperty','_setNodeExpandableState','reduceLimits','_setNodeQueryPath','NEXT_RUNTIME','some','_numberRegExp','next.js','depth','env','bigint','autoExpandLimit','boolean','_isUndefined','_addLoadNode','cappedElements','expId','trace','_addProperty','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','console','POSITIVE_INFINITY','_connectToHostNow','_attemptToReconnectShortly','autoExpandMaxDepth','call','log','_objectToString','107955OuwREG','_HTMLAllCollection','number','Map','_processTreeNodeResult','versions','then','322336BCHbRX','type','_getOwnPropertyDescriptor','value','','autoExpandPropertyCount','_treeNodePropertiesBeforeFullValue','angular','_connectAttemptCount','_WebSocket','131994iCoayd','node','_hasMapOnItsPath','push','[object\\x20Set]','stringify','Buffer','join','_disposeWebsocket','2wslTSs','send','autoExpandPreviousObjects','name','_p_length','match','args','','concat','_ninjaIgnoreNextError','fromCharCode','props','gateway.docker.internal','elapsed','dockerizedApp','_capIfString','resolveGetters','reload','_undefined','_allowedToSend','_connecting','_console_ninja','5612766HFCOwu','_setNodePermissions','edge','data','replace','performance','time',\"c:\\\\Users\\\\Iwan\\\\.vscode\\\\extensions\\\\wallabyjs.console-ninja-1.0.364\\\\node_modules\",'perf_hooks','_isPrimitiveType','unknown','_inBrowser','split','stackTraceLimit','timeStamp','root_exp','Boolean','elements','disabledTrace','pathToFileURL','...','NEGATIVE_INFINITY','string','127.0.0.1','index','54279','symbol','_p_name','_setNodeExpressionPath','_WebSocketClass','WebSocket','length','_blacklistedProperty','onerror','sort','getWebSocketClass','parse','pop','default','2263440DiNTNK','_addFunctionsNode','_console_ninja_session','getOwnPropertySymbols','test','indexOf','location','_webSocketErrorDocsLink','readyState','_Symbol','_socket','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','toLowerCase','getter','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_isMap','_setNodeId','undefined','onmessage','warn','host','_quotedRegExp','autoExpand','toString','112TgpLnc','_p_','_treeNodePropertiesAfterFullValue','883830dhuaNV','port','jest','getPrototypeOf','global','bind','nan','includes','set','origin','hits','hrtime','_getOwnPropertySymbols','cappedProps','strLength','toUpperCase','isExpressionToEvaluate','hostname','expressionsToEvaluate','totalStrLength','parent','_sortProps','now','slice','message','ws/index.js','method','_getOwnPropertyNames','[object\\x20BigInt]','_type','[object\\x20Map]','getOwnPropertyDescriptor','_reconnectTimeout','_ws','_connected','unref','map','_isPrimitiveWrapperType','[object\\x20Date]','positiveInfinity','process','array','rootExpression','_setNodeLabel','_sendErrorMessage','_addObjectProperty','noFunctions','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','valueOf','stack','_maxConnectAttemptCount','logger\\x20websocket\\x20error','_propertyName','prototype','path','_allowedToConnectOnSend','function','negativeZero','[object\\x20Array]','Set','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20','object','4115maXyRn','Number','_keyStrRegExp','coverage','_consoleNinjaAllowedToStart','startsWith','forEach','_property','catch','_cleanNode','serialize'];_0x71d4=function(){return _0x4cd662;};return _0x71d4();}function _0x1765(_0x553705,_0x4ec105){var _0x71d46=_0x71d4();return _0x1765=function(_0x17652e,_0x1a61b2){_0x17652e=_0x17652e-0x1ec;var _0x40c357=_0x71d46[_0x17652e];return _0x40c357;},_0x1765(_0x553705,_0x4ec105);}function B(_0x57d751){var _0x30d759=_0x52c85b,_0x2f0544,_0x425634;let _0x3fb00b=function(_0x4f3378,_0x2b9204){return _0x2b9204-_0x4f3378;},_0x37974a;if(_0x57d751[_0x30d759(0x279)])_0x37974a=function(){var _0x4497fe=_0x30d759;return _0x57d751[_0x4497fe(0x279)][_0x4497fe(0x2cc)]();};else{if(_0x57d751[_0x30d759(0x2de)]&&_0x57d751[_0x30d759(0x2de)][_0x30d759(0x2c1)]&&((_0x425634=(_0x2f0544=_0x57d751[_0x30d759(0x2de)])==null?void 0x0:_0x2f0544['env'])==null?void 0x0:_0x425634[_0x30d759(0x22c)])!=='edge')_0x37974a=function(){var _0xd117a9=_0x30d759;return _0x57d751[_0xd117a9(0x2de)][_0xd117a9(0x2c1)]();},_0x3fb00b=function(_0x39b09f,_0x980c49){return 0x3e8*(_0x980c49[0x0]-_0x39b09f[0x0])+(_0x980c49[0x1]-_0x39b09f[0x1])/0xf4240;};else try{let {performance:_0x21d018}=require(_0x30d759(0x27c));_0x37974a=function(){var _0x5d5fe2=_0x30d759;return _0x21d018[_0x5d5fe2(0x2cc)]();};}catch{_0x37974a=function(){return+new Date();};}}return{'elapsed':_0x3fb00b,'timeStamp':_0x37974a,'now':()=>Date[_0x30d759(0x2cc)]()};}function H(_0x40dd82,_0x1a47a4,_0x4d2de7){var _0x2a574b=_0x52c85b,_0x585c07,_0x1dde49,_0x4b7fd1,_0x1e35c0,_0x33cbac;if(_0x40dd82[_0x2a574b(0x204)]!==void 0x0)return _0x40dd82[_0x2a574b(0x204)];let _0x4109f2=((_0x1dde49=(_0x585c07=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x585c07['versions'])==null?void 0x0:_0x1dde49[_0x2a574b(0x256)])||((_0x1e35c0=(_0x4b7fd1=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x4b7fd1['env'])==null?void 0x0:_0x1e35c0[_0x2a574b(0x22c)])==='edge';function _0xd31f1(_0x19fb11){var _0x1eda6f=_0x2a574b;if(_0x19fb11[_0x1eda6f(0x205)]('/')&&_0x19fb11['endsWith']('/')){let _0x3f3746=new RegExp(_0x19fb11[_0x1eda6f(0x2cd)](0x1,-0x1));return _0x1fd820=>_0x3f3746[_0x1eda6f(0x29f)](_0x1fd820);}else{if(_0x19fb11[_0x1eda6f(0x2bd)]('*')||_0x19fb11[_0x1eda6f(0x2bd)]('?')){let _0x16815c=new RegExp('^'+_0x19fb11[_0x1eda6f(0x278)](/\\./g,String['fromCharCode'](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x1eda6f(0x278)](/\\?/g,'.')+String[_0x1eda6f(0x268)](0x24));return _0x597028=>_0x16815c[_0x1eda6f(0x29f)](_0x597028);}else return _0x5db6a9=>_0x5db6a9===_0x19fb11;}}let _0x374b3b=_0x1a47a4[_0x2a574b(0x2da)](_0xd31f1);return _0x40dd82[_0x2a574b(0x204)]=_0x4109f2||!_0x1a47a4,!_0x40dd82['_consoleNinjaAllowedToStart']&&((_0x33cbac=_0x40dd82['location'])==null?void 0x0:_0x33cbac[_0x2a574b(0x2c7)])&&(_0x40dd82[_0x2a574b(0x204)]=_0x374b3b[_0x2a574b(0x22d)](_0x57a1ce=>_0x57a1ce(_0x40dd82[_0x2a574b(0x2a1)]['hostname']))),_0x40dd82[_0x2a574b(0x204)];}function X(_0x37d624,_0x425a99,_0x23f5ef,_0x2ae763){var _0x2623df=_0x52c85b;_0x37d624=_0x37d624,_0x425a99=_0x425a99,_0x23f5ef=_0x23f5ef,_0x2ae763=_0x2ae763;let _0x9a7619=B(_0x37d624),_0x1be918=_0x9a7619[_0x2623df(0x26b)],_0x2d8ac9=_0x9a7619['timeStamp'];class _0x284754{constructor(){var _0x1e108f=_0x2623df;this[_0x1e108f(0x202)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this[_0x1e108f(0x22e)]=/^(0|[1-9][0-9]*)$/,this[_0x1e108f(0x2b0)]=/'([^\\\\']|\\\\')*'/,this[_0x1e108f(0x270)]=_0x37d624['undefined'],this[_0x1e108f(0x245)]=_0x37d624[_0x1e108f(0x217)],this[_0x1e108f(0x24d)]=Object[_0x1e108f(0x2d5)],this['_getOwnPropertyNames']=Object[_0x1e108f(0x20c)],this['_Symbol']=_0x37d624['Symbol'],this['_regExpToString']=RegExp[_0x1e108f(0x1f7)][_0x1e108f(0x2b2)],this[_0x1e108f(0x221)]=Date[_0x1e108f(0x1f7)]['toString'];}['serialize'](_0x5df2e5,_0x28d843,_0xcb4789,_0xdcda9){var _0x157369=_0x2623df,_0x204121=this,_0x7c527c=_0xcb4789['autoExpand'];function _0x525b94(_0x476e30,_0x59becc,_0x306c45){var _0x17e488=_0x1765;_0x59becc['type']='unknown',_0x59becc[_0x17e488(0x223)]=_0x476e30[_0x17e488(0x2ce)],_0x642c19=_0x306c45['node'][_0x17e488(0x218)],_0x306c45['node'][_0x17e488(0x218)]=_0x59becc,_0x204121[_0x17e488(0x251)](_0x59becc,_0x306c45);}try{_0xcb4789[_0x157369(0x216)]++,_0xcb4789['autoExpand']&&_0xcb4789['autoExpandPreviousObjects'][_0x157369(0x258)](_0x28d843);var _0x1cc857,_0x4f181d,_0x1561f0,_0x4bd796,_0x12e234=[],_0x57be70=[],_0x538ba4,_0x937729=this[_0x157369(0x2d3)](_0x28d843),_0x7c4fbd=_0x937729==='array',_0x423502=!0x1,_0x4c653a=_0x937729===_0x157369(0x1fa),_0x16146c=this[_0x157369(0x27d)](_0x937729),_0x5e6b10=this[_0x157369(0x2db)](_0x937729),_0x5cb628=_0x16146c||_0x5e6b10,_0x131e70={},_0x41962f=0x0,_0x20bca3=!0x1,_0x642c19,_0x1bfeb1=/^(([1-9]{1}[0-9]*)|0)$/;if(_0xcb4789[_0x157369(0x230)]){if(_0x7c4fbd){if(_0x4f181d=_0x28d843[_0x157369(0x293)],_0x4f181d>_0xcb4789['elements']){for(_0x1561f0=0x0,_0x4bd796=_0xcb4789[_0x157369(0x285)],_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121['_addProperty'](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));_0x5df2e5[_0x157369(0x237)]=!0x0;}else{for(_0x1561f0=0x0,_0x4bd796=_0x4f181d,_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x23a)](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));}_0xcb4789[_0x157369(0x250)]+=_0x57be70['length'];}if(!(_0x937729===_0x157369(0x224)||_0x937729==='undefined')&&!_0x16146c&&_0x937729!=='String'&&_0x937729!==_0x157369(0x25b)&&_0x937729!=='bigint'){var _0x14ad0a=_0xdcda9['props']||_0xcb4789[_0x157369(0x269)];if(this[_0x157369(0x21c)](_0x28d843)?(_0x1cc857=0x0,_0x28d843[_0x157369(0x206)](function(_0x795ddf){var _0x15dd02=_0x157369;if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789[_0x15dd02(0x2c6)]&&_0xcb4789[_0x15dd02(0x2b1)]&&_0xcb4789[_0x15dd02(0x250)]>_0xcb4789[_0x15dd02(0x233)]){_0x20bca3=!0x0;return;}_0x57be70['push'](_0x204121[_0x15dd02(0x23a)](_0x12e234,_0x28d843,_0x15dd02(0x1fd),_0x1cc857++,_0xcb4789,function(_0x498239){return function(){return _0x498239;};}(_0x795ddf)));})):this[_0x157369(0x2aa)](_0x28d843)&&_0x28d843['forEach'](function(_0x268d65,_0x26e6f7){var _0x462487=_0x157369;if(_0x41962f++,_0xcb4789[_0x462487(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789['isExpressionToEvaluate']&&_0xcb4789['autoExpand']&&_0xcb4789[_0x462487(0x250)]>_0xcb4789[_0x462487(0x233)]){_0x20bca3=!0x0;return;}var _0x19aed5=_0x26e6f7[_0x462487(0x2b2)]();_0x19aed5[_0x462487(0x293)]>0x64&&(_0x19aed5=_0x19aed5['slice'](0x0,0x64)+_0x462487(0x288)),_0x57be70[_0x462487(0x258)](_0x204121[_0x462487(0x23a)](_0x12e234,_0x28d843,'Map',_0x19aed5,_0xcb4789,function(_0x23ffd6){return function(){return _0x23ffd6;};}(_0x268d65)));}),!_0x423502){try{for(_0x538ba4 in _0x28d843)if(!(_0x7c4fbd&&_0x1bfeb1['test'](_0x538ba4))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)){if(_0x41962f++,_0xcb4789[_0x157369(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789['autoExpandLimit']){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}catch{}if(_0x131e70[_0x157369(0x262)]=!0x0,_0x4c653a&&(_0x131e70[_0x157369(0x28f)]=!0x0),!_0x20bca3){var _0x5ae1db=[][_0x157369(0x266)](this[_0x157369(0x2d1)](_0x28d843))[_0x157369(0x266)](this[_0x157369(0x2c2)](_0x28d843));for(_0x1cc857=0x0,_0x4f181d=_0x5ae1db[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)if(_0x538ba4=_0x5ae1db[_0x1cc857],!(_0x7c4fbd&&_0x1bfeb1[_0x157369(0x29f)](_0x538ba4[_0x157369(0x2b2)]()))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)&&!_0x131e70[_0x157369(0x2b4)+_0x538ba4[_0x157369(0x2b2)]()]){if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789[_0x157369(0x233)]){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}}}}if(_0x5df2e5[_0x157369(0x24c)]=_0x937729,_0x5cb628?(_0x5df2e5[_0x157369(0x24e)]=_0x28d843['valueOf'](),this[_0x157369(0x26d)](_0x937729,_0x5df2e5,_0xcb4789,_0xdcda9)):_0x937729==='date'?_0x5df2e5[_0x157369(0x24e)]=this[_0x157369(0x221)][_0x157369(0x241)](_0x28d843):_0x937729===_0x157369(0x232)?_0x5df2e5[_0x157369(0x24e)]=_0x28d843[_0x157369(0x2b2)]():_0x937729==='RegExp'?_0x5df2e5[_0x157369(0x24e)]=this['_regExpToString'][_0x157369(0x241)](_0x28d843):_0x937729==='symbol'&&this[_0x157369(0x2a4)]?_0x5df2e5['value']=this[_0x157369(0x2a4)][_0x157369(0x1f7)]['toString'][_0x157369(0x241)](_0x28d843):!_0xcb4789['depth']&&!(_0x937729===_0x157369(0x224)||_0x937729===_0x157369(0x2ac))&&(delete _0x5df2e5[_0x157369(0x24e)],_0x5df2e5[_0x157369(0x225)]=!0x0),_0x20bca3&&(_0x5df2e5[_0x157369(0x2c3)]=!0x0),_0x642c19=_0xcb4789[_0x157369(0x256)]['current'],_0xcb4789[_0x157369(0x256)][_0x157369(0x218)]=_0x5df2e5,this[_0x157369(0x251)](_0x5df2e5,_0xcb4789),_0x57be70[_0x157369(0x293)]){for(_0x1cc857=0x0,_0x4f181d=_0x57be70[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)_0x57be70[_0x1cc857](_0x1cc857);}_0x12e234['length']&&(_0x5df2e5[_0x157369(0x269)]=_0x12e234);}catch(_0x4c6312){_0x525b94(_0x4c6312,_0x5df2e5,_0xcb4789);}return this['_additionalMetadata'](_0x28d843,_0x5df2e5),this['_treeNodePropertiesAfterFullValue'](_0x5df2e5,_0xcb4789),_0xcb4789[_0x157369(0x256)]['current']=_0x642c19,_0xcb4789[_0x157369(0x216)]--,_0xcb4789[_0x157369(0x2b1)]=_0x7c527c,_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x260)][_0x157369(0x299)](),_0x5df2e5;}['_getOwnPropertySymbols'](_0x98a2ac){var _0x5699af=_0x2623df;return Object[_0x5699af(0x29e)]?Object['getOwnPropertySymbols'](_0x98a2ac):[];}[_0x2623df(0x21c)](_0x1b06f2){var _0x45deb3=_0x2623df;return!!(_0x1b06f2&&_0x37d624[_0x45deb3(0x1fd)]&&this[_0x45deb3(0x243)](_0x1b06f2)===_0x45deb3(0x259)&&_0x1b06f2[_0x45deb3(0x206)]);}[_0x2623df(0x294)](_0x2a16f8,_0x2d32bc,_0xc52e10){var _0x1da585=_0x2623df;return _0xc52e10['noFunctions']?typeof _0x2a16f8[_0x2d32bc]==_0x1da585(0x1fa):!0x1;}[_0x2623df(0x2d3)](_0x3c584c){var _0x4a2b0b=_0x2623df,_0x116724='';return _0x116724=typeof _0x3c584c,_0x116724===_0x4a2b0b(0x1ff)?this[_0x4a2b0b(0x243)](_0x3c584c)==='[object\\x20Array]'?_0x116724=_0x4a2b0b(0x2df):this['_objectToString'](_0x3c584c)===_0x4a2b0b(0x2dc)?_0x116724='date':this[_0x4a2b0b(0x243)](_0x3c584c)===_0x4a2b0b(0x2d2)?_0x116724=_0x4a2b0b(0x232):_0x3c584c===null?_0x116724=_0x4a2b0b(0x224):_0x3c584c[_0x4a2b0b(0x20d)]&&(_0x116724=_0x3c584c[_0x4a2b0b(0x20d)][_0x4a2b0b(0x261)]||_0x116724):_0x116724===_0x4a2b0b(0x2ac)&&this[_0x4a2b0b(0x245)]&&_0x3c584c instanceof this[_0x4a2b0b(0x245)]&&(_0x116724=_0x4a2b0b(0x217)),_0x116724;}[_0x2623df(0x243)](_0xc200d5){var _0x4e9e8b=_0x2623df;return Object[_0x4e9e8b(0x1f7)][_0x4e9e8b(0x2b2)]['call'](_0xc200d5);}[_0x2623df(0x27d)](_0x529a22){var _0x5c1d83=_0x2623df;return _0x529a22===_0x5c1d83(0x234)||_0x529a22===_0x5c1d83(0x28a)||_0x529a22===_0x5c1d83(0x246);}[_0x2623df(0x2db)](_0x138149){var _0x4a144e=_0x2623df;return _0x138149===_0x4a144e(0x284)||_0x138149===_0x4a144e(0x21e)||_0x138149===_0x4a144e(0x201);}[_0x2623df(0x23a)](_0x135627,_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524){var _0x2e6ca4=this;return function(_0x3cef10){var _0xcb4898=_0x1765,_0x47c646=_0x375c3c[_0xcb4898(0x256)]['current'],_0x4083d7=_0x375c3c['node']['index'],_0x5280a8=_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)];_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x47c646,_0x375c3c['node'][_0xcb4898(0x28c)]=typeof _0x11f9fb=='number'?_0x11f9fb:_0x3cef10,_0x135627[_0xcb4898(0x258)](_0x2e6ca4['_property'](_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524)),_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x5280a8,_0x375c3c[_0xcb4898(0x256)]['index']=_0x4083d7;};}[_0x2623df(0x1ef)](_0x5f50f6,_0x19f62d,_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61){var _0x1b819d=_0x2623df,_0x2f2a63=this;return _0x19f62d[_0x1b819d(0x2b4)+_0x153ede[_0x1b819d(0x2b2)]()]=!0x0,function(_0x52cd65){var _0xc2af59=_0x1b819d,_0xf1884d=_0x195a04['node'][_0xc2af59(0x218)],_0x1f5c05=_0x195a04['node'][_0xc2af59(0x28c)],_0x20b47d=_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)];_0x195a04[_0xc2af59(0x256)]['parent']=_0xf1884d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x52cd65,_0x5f50f6[_0xc2af59(0x258)](_0x2f2a63[_0xc2af59(0x207)](_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61)),_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)]=_0x20b47d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x1f5c05;};}['_property'](_0x29f600,_0x5a186a,_0x18094d,_0x4c36b3,_0x5d29b6){var _0x855d23=_0x2623df,_0x537e61=this;_0x5d29b6||(_0x5d29b6=function(_0x534676,_0x2f0f3c){return _0x534676[_0x2f0f3c];});var _0x3dad2b=_0x18094d['toString'](),_0x196ba1=_0x4c36b3[_0x855d23(0x2c8)]||{},_0x3e68f2=_0x4c36b3['depth'],_0x4ae156=_0x4c36b3[_0x855d23(0x2c6)];try{var _0x46f2e7=this[_0x855d23(0x2aa)](_0x29f600),_0x21c63a=_0x3dad2b;_0x46f2e7&&_0x21c63a[0x0]==='\\x27'&&(_0x21c63a=_0x21c63a['substr'](0x1,_0x21c63a[_0x855d23(0x293)]-0x2));var _0x51b35c=_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1['_p_'+_0x21c63a];_0x51b35c&&(_0x4c36b3[_0x855d23(0x230)]=_0x4c36b3[_0x855d23(0x230)]+0x1),_0x4c36b3['isExpressionToEvaluate']=!!_0x51b35c;var _0x4102a5=typeof _0x18094d==_0x855d23(0x28e),_0x10aa24={'name':_0x4102a5||_0x46f2e7?_0x3dad2b:this[_0x855d23(0x1f6)](_0x3dad2b)};if(_0x4102a5&&(_0x10aa24['symbol']=!0x0),!(_0x5a186a===_0x855d23(0x2df)||_0x5a186a==='Error')){var _0x4f0a95=this['_getOwnPropertyDescriptor'](_0x29f600,_0x18094d);if(_0x4f0a95&&(_0x4f0a95[_0x855d23(0x2be)]&&(_0x10aa24['setter']=!0x0),_0x4f0a95['get']&&!_0x51b35c&&!_0x4c36b3[_0x855d23(0x26e)]))return _0x10aa24[_0x855d23(0x2a8)]=!0x0,this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x8e1bdc;try{_0x8e1bdc=_0x5d29b6(_0x29f600,_0x18094d);}catch(_0x343ade){return _0x10aa24={'name':_0x3dad2b,'type':_0x855d23(0x27e),'error':_0x343ade[_0x855d23(0x2ce)]},this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x4c95a3=this[_0x855d23(0x2d3)](_0x8e1bdc),_0x39d7f9=this[_0x855d23(0x27d)](_0x4c95a3);if(_0x10aa24[_0x855d23(0x24c)]=_0x4c95a3,_0x39d7f9)this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x294840=_0x855d23;_0x10aa24['value']=_0x8e1bdc[_0x294840(0x1f2)](),!_0x51b35c&&_0x537e61['_capIfString'](_0x4c95a3,_0x10aa24,_0x4c36b3,{});});else{var _0x308b70=_0x4c36b3[_0x855d23(0x2b1)]&&_0x4c36b3[_0x855d23(0x216)]<_0x4c36b3[_0x855d23(0x240)]&&_0x4c36b3['autoExpandPreviousObjects'][_0x855d23(0x2a0)](_0x8e1bdc)<0x0&&_0x4c95a3!==_0x855d23(0x1fa)&&_0x4c36b3[_0x855d23(0x250)]<_0x4c36b3[_0x855d23(0x233)];_0x308b70||_0x4c36b3['level']<_0x3e68f2||_0x51b35c?(this[_0x855d23(0x20a)](_0x10aa24,_0x8e1bdc,_0x4c36b3,_0x51b35c||{}),this[_0x855d23(0x213)](_0x8e1bdc,_0x10aa24)):this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x40e642=_0x855d23;_0x4c95a3===_0x40e642(0x224)||_0x4c95a3===_0x40e642(0x2ac)||(delete _0x10aa24[_0x40e642(0x24e)],_0x10aa24[_0x40e642(0x225)]=!0x0);});}return _0x10aa24;}finally{_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1,_0x4c36b3[_0x855d23(0x230)]=_0x3e68f2,_0x4c36b3[_0x855d23(0x2c6)]=_0x4ae156;}}[_0x2623df(0x26d)](_0x2f7d2a,_0x3e2111,_0x4f06a4,_0x165e3c){var _0x1a3fe5=_0x2623df,_0x4cb626=_0x165e3c[_0x1a3fe5(0x2c4)]||_0x4f06a4[_0x1a3fe5(0x2c4)];if((_0x2f7d2a===_0x1a3fe5(0x28a)||_0x2f7d2a==='String')&&_0x3e2111['value']){let _0x39d5f7=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x293)];_0x4f06a4['allStrLength']+=_0x39d5f7,_0x4f06a4[_0x1a3fe5(0x214)]>_0x4f06a4[_0x1a3fe5(0x2c9)]?(_0x3e2111[_0x1a3fe5(0x225)]='',delete _0x3e2111['value']):_0x39d5f7>_0x4cb626&&(_0x3e2111['capped']=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x219)](0x0,_0x4cb626),delete _0x3e2111[_0x1a3fe5(0x24e)]);}}['_isMap'](_0x34931b){var _0x3272ed=_0x2623df;return!!(_0x34931b&&_0x37d624[_0x3272ed(0x247)]&&this[_0x3272ed(0x243)](_0x34931b)===_0x3272ed(0x2d4)&&_0x34931b['forEach']);}[_0x2623df(0x1f6)](_0x47a998){var _0x54c731=_0x2623df;if(_0x47a998[_0x54c731(0x263)](/^\\d+$/))return _0x47a998;var _0x13c78f;try{_0x13c78f=JSON['stringify'](''+_0x47a998);}catch{_0x13c78f='\\x22'+this[_0x54c731(0x243)](_0x47a998)+'\\x22';}return _0x13c78f[_0x54c731(0x263)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x13c78f=_0x13c78f['substr'](0x1,_0x13c78f['length']-0x2):_0x13c78f=_0x13c78f['replace'](/'/g,'\\x5c\\x27')[_0x54c731(0x278)](/\\\\\"/g,'\\x22')['replace'](/(^\"|\"$)/g,'\\x27'),_0x13c78f;}[_0x2623df(0x248)](_0x450bd2,_0x540e99,_0x3a738d,_0x1d5e7b){var _0xbf57c1=_0x2623df;this[_0xbf57c1(0x251)](_0x450bd2,_0x540e99),_0x1d5e7b&&_0x1d5e7b(),this[_0xbf57c1(0x213)](_0x3a738d,_0x450bd2),this[_0xbf57c1(0x2b5)](_0x450bd2,_0x540e99);}['_treeNodePropertiesBeforeFullValue'](_0x288bd4,_0x443233){var _0x15c053=_0x2623df;this[_0x15c053(0x2ab)](_0x288bd4,_0x443233),this[_0x15c053(0x22b)](_0x288bd4,_0x443233),this['_setNodeExpressionPath'](_0x288bd4,_0x443233),this[_0x15c053(0x275)](_0x288bd4,_0x443233);}[_0x2623df(0x2ab)](_0x33355c,_0x4c1413){}['_setNodeQueryPath'](_0x5e28c0,_0x37c1ca){}['_setNodeLabel'](_0xee885f,_0x115998){}[_0x2623df(0x235)](_0x55a938){var _0x1aa6f4=_0x2623df;return _0x55a938===this[_0x1aa6f4(0x270)];}['_treeNodePropertiesAfterFullValue'](_0x10edfb,_0x29f29a){var _0x206d02=_0x2623df;this[_0x206d02(0x1ed)](_0x10edfb,_0x29f29a),this['_setNodeExpandableState'](_0x10edfb),_0x29f29a['sortProps']&&this[_0x206d02(0x2cb)](_0x10edfb),this[_0x206d02(0x29c)](_0x10edfb,_0x29f29a),this[_0x206d02(0x236)](_0x10edfb,_0x29f29a),this[_0x206d02(0x209)](_0x10edfb);}[_0x2623df(0x213)](_0x2ae38c,_0x6a4e65){var _0x3180df=_0x2623df;let _0x39ab34;try{_0x37d624[_0x3180df(0x23c)]&&(_0x39ab34=_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)],_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=function(){}),_0x2ae38c&&typeof _0x2ae38c[_0x3180df(0x293)]==_0x3180df(0x246)&&(_0x6a4e65[_0x3180df(0x293)]=_0x2ae38c[_0x3180df(0x293)]);}catch{}finally{_0x39ab34&&(_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=_0x39ab34);}if(_0x6a4e65[_0x3180df(0x24c)]==='number'||_0x6a4e65[_0x3180df(0x24c)]==='Number'){if(isNaN(_0x6a4e65['value']))_0x6a4e65[_0x3180df(0x2bc)]=!0x0,delete _0x6a4e65['value'];else switch(_0x6a4e65[_0x3180df(0x24e)]){case Number[_0x3180df(0x23d)]:_0x6a4e65[_0x3180df(0x2dd)]=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case Number['NEGATIVE_INFINITY']:_0x6a4e65['negativeInfinity']=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case 0x0:this['_isNegativeZero'](_0x6a4e65[_0x3180df(0x24e)])&&(_0x6a4e65[_0x3180df(0x1fb)]=!0x0);break;}}else _0x6a4e65[_0x3180df(0x24c)]===_0x3180df(0x1fa)&&typeof _0x2ae38c[_0x3180df(0x261)]==_0x3180df(0x28a)&&_0x2ae38c[_0x3180df(0x261)]&&_0x6a4e65[_0x3180df(0x261)]&&_0x2ae38c[_0x3180df(0x261)]!==_0x6a4e65[_0x3180df(0x261)]&&(_0x6a4e65[_0x3180df(0x21b)]=_0x2ae38c[_0x3180df(0x261)]);}['_isNegativeZero'](_0x2fa98d){var _0x8c6a89=_0x2623df;return 0x1/_0x2fa98d===Number[_0x8c6a89(0x289)];}[_0x2623df(0x2cb)](_0x45f240){var _0x27ea15=_0x2623df;!_0x45f240[_0x27ea15(0x269)]||!_0x45f240['props'][_0x27ea15(0x293)]||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x2df)||_0x45f240[_0x27ea15(0x24c)]==='Map'||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x1fd)||_0x45f240[_0x27ea15(0x269)][_0x27ea15(0x296)](function(_0x587f85,_0x25310e){var _0x27429f=_0x27ea15,_0x22eb8f=_0x587f85['name'][_0x27429f(0x2a7)](),_0x9f76b=_0x25310e[_0x27429f(0x261)][_0x27429f(0x2a7)]();return _0x22eb8f<_0x9f76b?-0x1:_0x22eb8f>_0x9f76b?0x1:0x0;});}[_0x2623df(0x29c)](_0x6aec3b,_0x4e7839){var _0x5e1614=_0x2623df;if(!(_0x4e7839[_0x5e1614(0x1f0)]||!_0x6aec3b[_0x5e1614(0x269)]||!_0x6aec3b['props'][_0x5e1614(0x293)])){for(var _0x4ae259=[],_0x2bc8c5=[],_0x2c5219=0x0,_0x4f1485=_0x6aec3b[_0x5e1614(0x269)]['length'];_0x2c5219<_0x4f1485;_0x2c5219++){var _0x29e8fa=_0x6aec3b[_0x5e1614(0x269)][_0x2c5219];_0x29e8fa['type']===_0x5e1614(0x1fa)?_0x4ae259[_0x5e1614(0x258)](_0x29e8fa):_0x2bc8c5[_0x5e1614(0x258)](_0x29e8fa);}if(!(!_0x2bc8c5[_0x5e1614(0x293)]||_0x4ae259[_0x5e1614(0x293)]<=0x1)){_0x6aec3b[_0x5e1614(0x269)]=_0x2bc8c5;var _0x28eeff={'functionsNode':!0x0,'props':_0x4ae259};this['_setNodeId'](_0x28eeff,_0x4e7839),this[_0x5e1614(0x1ed)](_0x28eeff,_0x4e7839),this[_0x5e1614(0x229)](_0x28eeff),this[_0x5e1614(0x275)](_0x28eeff,_0x4e7839),_0x28eeff['id']+='\\x20f',_0x6aec3b['props']['unshift'](_0x28eeff);}}}[_0x2623df(0x236)](_0x8d09ca,_0x48c45f){}['_setNodeExpandableState'](_0x2c3113){}['_isArray'](_0x4d0b46){var _0x540da5=_0x2623df;return Array['isArray'](_0x4d0b46)||typeof _0x4d0b46==_0x540da5(0x1ff)&&this[_0x540da5(0x243)](_0x4d0b46)===_0x540da5(0x1fc);}['_setNodePermissions'](_0x51ec7c,_0x53542f){}[_0x2623df(0x209)](_0x47913e){var _0x503d84=_0x2623df;delete _0x47913e['_hasSymbolPropertyOnItsPath'],delete _0x47913e['_hasSetOnItsPath'],delete _0x47913e[_0x503d84(0x257)];}[_0x2623df(0x290)](_0x3e77fb,_0x7533ff){}}let _0x31638a=new _0x284754(),_0xdce57e={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x43e197={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x6a9287(_0x531b46,_0x4bc71a,_0x197aa8,_0x42857c,_0x5321fe,_0x10f17e){var _0x471a36=_0x2623df;let _0x101e55,_0x1a2226;try{_0x1a2226=_0x2d8ac9(),_0x101e55=_0x23f5ef[_0x4bc71a],!_0x101e55||_0x1a2226-_0x101e55['ts']>0x1f4&&_0x101e55[_0x471a36(0x227)]&&_0x101e55[_0x471a36(0x27a)]/_0x101e55[_0x471a36(0x227)]<0x64?(_0x23f5ef[_0x4bc71a]=_0x101e55={'count':0x0,'time':0x0,'ts':_0x1a2226},_0x23f5ef[_0x471a36(0x2c0)]={}):_0x1a2226-_0x23f5ef[_0x471a36(0x2c0)]['ts']>0x32&&_0x23f5ef[_0x471a36(0x2c0)]['count']&&_0x23f5ef['hits'][_0x471a36(0x27a)]/_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]<0x64&&(_0x23f5ef['hits']={});let _0x11e3f6=[],_0x5697d2=_0x101e55['reduceLimits']||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x22a)]?_0x43e197:_0xdce57e,_0x405b05=_0x3da01f=>{var _0x3c6546=_0x471a36;let _0x26cba4={};return _0x26cba4['props']=_0x3da01f[_0x3c6546(0x269)],_0x26cba4[_0x3c6546(0x285)]=_0x3da01f[_0x3c6546(0x285)],_0x26cba4[_0x3c6546(0x2c4)]=_0x3da01f[_0x3c6546(0x2c4)],_0x26cba4[_0x3c6546(0x2c9)]=_0x3da01f['totalStrLength'],_0x26cba4[_0x3c6546(0x233)]=_0x3da01f[_0x3c6546(0x233)],_0x26cba4[_0x3c6546(0x240)]=_0x3da01f[_0x3c6546(0x240)],_0x26cba4['sortProps']=!0x1,_0x26cba4[_0x3c6546(0x1f0)]=!_0x425a99,_0x26cba4[_0x3c6546(0x230)]=0x1,_0x26cba4[_0x3c6546(0x216)]=0x0,_0x26cba4[_0x3c6546(0x238)]='root_exp_id',_0x26cba4[_0x3c6546(0x1ec)]=_0x3c6546(0x283),_0x26cba4[_0x3c6546(0x2b1)]=!0x0,_0x26cba4[_0x3c6546(0x260)]=[],_0x26cba4[_0x3c6546(0x250)]=0x0,_0x26cba4[_0x3c6546(0x26e)]=!0x0,_0x26cba4[_0x3c6546(0x214)]=0x0,_0x26cba4['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x26cba4;};for(var _0x23e276=0x0;_0x23e276<_0x5321fe[_0x471a36(0x293)];_0x23e276++)_0x11e3f6[_0x471a36(0x258)](_0x31638a[_0x471a36(0x20a)]({'timeNode':_0x531b46===_0x471a36(0x27a)||void 0x0},_0x5321fe[_0x23e276],_0x405b05(_0x5697d2),{}));if(_0x531b46==='trace'||_0x531b46===_0x471a36(0x223)){let _0x56cb28=Error['stackTraceLimit'];try{Error[_0x471a36(0x281)]=0x1/0x0,_0x11e3f6['push'](_0x31638a[_0x471a36(0x20a)]({'stackNode':!0x0},new Error()[_0x471a36(0x1f3)],_0x405b05(_0x5697d2),{'strLength':0x1/0x0}));}finally{Error[_0x471a36(0x281)]=_0x56cb28;}}return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':_0x11e3f6,'id':_0x4bc71a,'context':_0x10f17e}]};}catch(_0x141361){return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':[{'type':'unknown','error':_0x141361&&_0x141361[_0x471a36(0x2ce)]}],'id':_0x4bc71a,'context':_0x10f17e}]};}finally{try{if(_0x101e55&&_0x1a2226){let _0x53d3d0=_0x2d8ac9();_0x101e55['count']++,_0x101e55[_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x101e55['ts']=_0x53d3d0,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]++,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x23f5ef[_0x471a36(0x2c0)]['ts']=_0x53d3d0,(_0x101e55['count']>0x32||_0x101e55['time']>0x64)&&(_0x101e55[_0x471a36(0x22a)]=!0x0),(_0x23f5ef['hits'][_0x471a36(0x227)]>0x3e8||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]>0x12c)&&(_0x23f5ef['hits'][_0x471a36(0x22a)]=!0x0);}}catch{}}}return _0x6a9287;}((_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x598d24,_0x5d532f,_0x146311,_0x5c841c,_0x435457,_0x4af095)=>{var _0x178280=_0x52c85b;if(_0x5c57ad[_0x178280(0x273)])return _0x5c57ad[_0x178280(0x273)];if(!H(_0x5c57ad,_0x146311,_0x3deb3c))return _0x5c57ad[_0x178280(0x273)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x5c57ad['_console_ninja'];let _0x348138=B(_0x5c57ad),_0x4526fb=_0x348138[_0x178280(0x26b)],_0x4d4ffb=_0x348138[_0x178280(0x282)],_0x383918=_0x348138[_0x178280(0x2cc)],_0x42c1e2={'hits':{},'ts':{}},_0x5f1ccb=X(_0x5c57ad,_0x5c841c,_0x42c1e2,_0x598d24),_0xd940d5=_0x4e24ec=>{_0x42c1e2['ts'][_0x4e24ec]=_0x4d4ffb();},_0xea84f2=(_0x1e4f3c,_0x4cf578)=>{var _0x1bcce6=_0x178280;let _0x930c06=_0x42c1e2['ts'][_0x4cf578];if(delete _0x42c1e2['ts'][_0x4cf578],_0x930c06){let _0x1303d4=_0x4526fb(_0x930c06,_0x4d4ffb());_0xde4346(_0x5f1ccb(_0x1bcce6(0x27a),_0x1e4f3c,_0x383918(),_0x42be99,[_0x1303d4],_0x4cf578));}},_0x4f0396=_0x430740=>{var _0x16daef=_0x178280,_0x326829;return _0x3deb3c===_0x16daef(0x22f)&&_0x5c57ad[_0x16daef(0x2bf)]&&((_0x326829=_0x430740==null?void 0x0:_0x430740[_0x16daef(0x264)])==null?void 0x0:_0x326829[_0x16daef(0x293)])&&(_0x430740[_0x16daef(0x264)][0x0]['origin']=_0x5c57ad[_0x16daef(0x2bf)]),_0x430740;};_0x5c57ad['_console_ninja']={'consoleLog':(_0x389383,_0x33070f)=>{var _0xcc2784=_0x178280;_0x5c57ad[_0xcc2784(0x23c)]['log']['name']!=='disabledLog'&&_0xde4346(_0x5f1ccb(_0xcc2784(0x242),_0x389383,_0x383918(),_0x42be99,_0x33070f));},'consoleTrace':(_0x5a7462,_0x4ad9a0)=>{var _0x34222f=_0x178280,_0x4e5f09,_0x38cb70;_0x5c57ad['console']['log'][_0x34222f(0x261)]!==_0x34222f(0x286)&&((_0x38cb70=(_0x4e5f09=_0x5c57ad['process'])==null?void 0x0:_0x4e5f09[_0x34222f(0x249)])!=null&&_0x38cb70[_0x34222f(0x256)]&&(_0x5c57ad['_ninjaIgnoreNextError']=!0x0),_0xde4346(_0x4f0396(_0x5f1ccb(_0x34222f(0x239),_0x5a7462,_0x383918(),_0x42be99,_0x4ad9a0))));},'consoleError':(_0x56c660,_0x124401)=>{var _0x5a4dbf=_0x178280;_0x5c57ad[_0x5a4dbf(0x267)]=!0x0,_0xde4346(_0x4f0396(_0x5f1ccb(_0x5a4dbf(0x223),_0x56c660,_0x383918(),_0x42be99,_0x124401)));},'consoleTime':_0x2b72bf=>{_0xd940d5(_0x2b72bf);},'consoleTimeEnd':(_0xf42d7f,_0x231d2e)=>{_0xea84f2(_0x231d2e,_0xf42d7f);},'autoLog':(_0x34fc42,_0x1593ab)=>{_0xde4346(_0x5f1ccb('log',_0x1593ab,_0x383918(),_0x42be99,[_0x34fc42]));},'autoLogMany':(_0x1161f8,_0x1f890f)=>{var _0x432033=_0x178280;_0xde4346(_0x5f1ccb(_0x432033(0x242),_0x1161f8,_0x383918(),_0x42be99,_0x1f890f));},'autoTrace':(_0x1abd02,_0x1a1339)=>{var _0x23dceb=_0x178280;_0xde4346(_0x4f0396(_0x5f1ccb(_0x23dceb(0x239),_0x1a1339,_0x383918(),_0x42be99,[_0x1abd02])));},'autoTraceMany':(_0x5662b6,_0x1b0d24)=>{_0xde4346(_0x4f0396(_0x5f1ccb('trace',_0x5662b6,_0x383918(),_0x42be99,_0x1b0d24)));},'autoTime':(_0x4a4e0b,_0x1660f1,_0xecbc72)=>{_0xd940d5(_0xecbc72);},'autoTimeEnd':(_0x391986,_0x4e8b70,_0x41f58e)=>{_0xea84f2(_0x4e8b70,_0x41f58e);},'coverage':_0x5ae8d0=>{var _0x294a69=_0x178280;_0xde4346({'method':_0x294a69(0x203),'version':_0x598d24,'args':[{'id':_0x5ae8d0}]});}};let _0xde4346=q(_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x435457,_0x4af095),_0x42be99=_0x5c57ad[_0x178280(0x29d)];return _0x5c57ad[_0x178280(0x273)];})(globalThis,_0x52c85b(0x28b),_0x52c85b(0x28d),_0x52c85b(0x27b),_0x52c85b(0x2b8),'1.0.0',_0x52c85b(0x212),[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"DESKTOP-JE0DD9V\",\"192.168.1.6\"],_0x52c85b(0x265),_0x52c85b(0x24f),'1');");}catch(e){}};/* istanbul ignore next */function oo_oo(i,...v){try{oo_cm().consoleLog(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tr(i,...v){try{oo_cm().consoleTrace(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tx(i,...v){try{oo_cm().consoleError(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_ts(v){try{oo_cm().consoleTime(v);}catch(e){} return v;};/* istanbul ignore next */function oo_te(v, i){try{oo_cm().consoleTimeEnd(v, i);}catch(e){} return v;};/*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/middlewares/authorization.js.html b/Server/coverage/lcov-report/Server/middlewares/authorization.js.html new file mode 100644 index 0000000..5b20626 --- /dev/null +++ b/Server/coverage/lcov-report/Server/middlewares/authorization.js.html @@ -0,0 +1,274 @@ + + + + + + Code coverage report for Server/middlewares/authorization.js + + + + + + + + + +
+
+

All files / Server/middlewares authorization.js

+
+ +
+ 41.66% + Statements + 10/24 +
+ + +
+ 30% + Branches + 3/10 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 43.47% + Lines + 10/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +642x +  +  +1x +  +  +  +  +  +1x +  +  +  +1x +1x +1x +  +1x +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  + 
const { Favorite } = require("../models");
+ 
+async function updateDelete(req, res, next) {
+  let user = req.user;
+  //   console.log(req.params);
+ 
+  // console.log("Request Params:", req.params);
+  // console.log("User from req:", user);
+ 
+  Iif (!user) {
+    return next("JsonWebTokenError");
+  }
+ 
+  try {
+    const { pokemonName } = req.params;
+    const fav = await Favorite.findOne({ where: {pokemonName,UserId:user.id} });
+ 
+    Iif (!fav) {
+      return next({ name: `NotFound`, message: "Pokemon Not Found" });
+    }
+ 
+    if (fav.UserId === user.id) {
+      return next();
+    } else E{
+      return next({
+        name: "Forbidden",
+        message: "Your are not Authorized",
+      });
+    }
+  } catch (error) {
+    /* eslint-disable */console.error(...oo_tx(`2336218421_31_4_31_48_11`,"Authorization error:", error));
+    next(error);
+  }
+}
+ 
+async function admin(req, res, next) {
+  let user = req.user;
+  //   console.log(req.params);
+ 
+  // console.log("Request Params:", req.params);
+  // console.log("User from req:", user);
+ 
+  try {
+    if (user.role !== "admin") {
+      return next({
+        name: "Forbidden",
+        message: "Your are not Authorized",
+      });
+    }else{
+      next()
+    }
+  } catch (error) {
+    /* eslint-disable */console.error(...oo_tx(`2336218421_53_4_53_48_11`,"Authorization error:", error));
+    next(error);
+  }
+}
+module.exports = { updateDelete,admin };
+ 
+ 
+ 
+ 
+ 
+ 
+/* istanbul ignore next *//* c8 ignore start *//* eslint-disable */;function oo_cm(){try{return (0,eval)("globalThis._console_ninja") || (0,eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x52c85b=_0x1765;(function(_0x3cd6dd,_0x5377ca){var _0x486f76=_0x1765,_0xaa2ebe=_0x3cd6dd();while(!![]){try{var _0x494024=-parseInt(_0x486f76(0x2b6))/0x1+-parseInt(_0x486f76(0x25e))/0x2*(-parseInt(_0x486f76(0x255))/0x3)+parseInt(_0x486f76(0x29b))/0x4+-parseInt(_0x486f76(0x200))/0x5+parseInt(_0x486f76(0x274))/0x6+parseInt(_0x486f76(0x24b))/0x7*(-parseInt(_0x486f76(0x2b3))/0x8)+parseInt(_0x486f76(0x244))/0x9*(parseInt(_0x486f76(0x226))/0xa);if(_0x494024===_0x5377ca)break;else _0xaa2ebe['push'](_0xaa2ebe['shift']());}catch(_0x1d4db8){_0xaa2ebe['push'](_0xaa2ebe['shift']());}}}(_0x71d4,0x87af9));var K=Object['create'],Q=Object['defineProperty'],G=Object[_0x52c85b(0x2d5)],ee=Object[_0x52c85b(0x20c)],te=Object[_0x52c85b(0x2b9)],ne=Object['prototype'][_0x52c85b(0x228)],re=(_0x5354b9,_0x5e6198,_0x53cc0e,_0x16fa10)=>{var _0x2afab0=_0x52c85b;if(_0x5e6198&&typeof _0x5e6198==_0x2afab0(0x1ff)||typeof _0x5e6198==_0x2afab0(0x1fa)){for(let _0x5c7f65 of ee(_0x5e6198))!ne[_0x2afab0(0x241)](_0x5354b9,_0x5c7f65)&&_0x5c7f65!==_0x53cc0e&&Q(_0x5354b9,_0x5c7f65,{'get':()=>_0x5e6198[_0x5c7f65],'enumerable':!(_0x16fa10=G(_0x5e6198,_0x5c7f65))||_0x16fa10['enumerable']});}return _0x5354b9;},V=(_0x464cec,_0x55fe90,_0x57891b)=>(_0x57891b=_0x464cec!=null?K(te(_0x464cec)):{},re(_0x55fe90||!_0x464cec||!_0x464cec[_0x52c85b(0x210)]?Q(_0x57891b,_0x52c85b(0x29a),{'value':_0x464cec,'enumerable':!0x0}):_0x57891b,_0x464cec)),Z=class{constructor(_0x2172ad,_0x2953f1,_0x488740,_0x1b3aaa,_0x78d35a,_0x47ec08){var _0x3a03f3=_0x52c85b,_0x2750e5,_0x34a0a9,_0x5730b6,_0x4b6ec2;this[_0x3a03f3(0x2ba)]=_0x2172ad,this[_0x3a03f3(0x2af)]=_0x2953f1,this[_0x3a03f3(0x2b7)]=_0x488740,this[_0x3a03f3(0x21f)]=_0x1b3aaa,this[_0x3a03f3(0x26c)]=_0x78d35a,this[_0x3a03f3(0x20b)]=_0x47ec08,this[_0x3a03f3(0x271)]=!0x0,this[_0x3a03f3(0x1f9)]=!0x0,this['_connected']=!0x1,this[_0x3a03f3(0x272)]=!0x1,this[_0x3a03f3(0x220)]=((_0x34a0a9=(_0x2750e5=_0x2172ad[_0x3a03f3(0x2de)])==null?void 0x0:_0x2750e5[_0x3a03f3(0x231)])==null?void 0x0:_0x34a0a9[_0x3a03f3(0x22c)])===_0x3a03f3(0x276),this[_0x3a03f3(0x27f)]=!((_0x4b6ec2=(_0x5730b6=this['global'][_0x3a03f3(0x2de)])==null?void 0x0:_0x5730b6[_0x3a03f3(0x249)])!=null&&_0x4b6ec2[_0x3a03f3(0x256)])&&!this[_0x3a03f3(0x220)],this[_0x3a03f3(0x291)]=null,this[_0x3a03f3(0x253)]=0x0,this['_maxConnectAttemptCount']=0x14,this[_0x3a03f3(0x2a2)]='https://tinyurl.com/37x8b79t',this[_0x3a03f3(0x1ee)]=(this[_0x3a03f3(0x27f)]?_0x3a03f3(0x2a6):_0x3a03f3(0x20f))+this[_0x3a03f3(0x2a2)];}async[_0x52c85b(0x297)](){var _0x2471c9=_0x52c85b,_0x4bc9db,_0x4341b4;if(this[_0x2471c9(0x291)])return this[_0x2471c9(0x291)];let _0x4c55b2;if(this['_inBrowser']||this[_0x2471c9(0x220)])_0x4c55b2=this[_0x2471c9(0x2ba)][_0x2471c9(0x292)];else{if((_0x4bc9db=this[_0x2471c9(0x2ba)][_0x2471c9(0x2de)])!=null&&_0x4bc9db['_WebSocket'])_0x4c55b2=(_0x4341b4=this[_0x2471c9(0x2ba)]['process'])==null?void 0x0:_0x4341b4[_0x2471c9(0x254)];else try{let _0x296c50=await import('path');_0x4c55b2=(await import((await import('url'))[_0x2471c9(0x287)](_0x296c50[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],_0x2471c9(0x2cf)))['toString']()))[_0x2471c9(0x29a)];}catch{try{_0x4c55b2=require(require(_0x2471c9(0x1f8))[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],'ws'));}catch{throw new Error(_0x2471c9(0x1f1));}}}return this[_0x2471c9(0x291)]=_0x4c55b2,_0x4c55b2;}[_0x52c85b(0x23e)](){var _0x43da68=_0x52c85b;this[_0x43da68(0x272)]||this[_0x43da68(0x2d8)]||this[_0x43da68(0x253)]>=this['_maxConnectAttemptCount']||(this[_0x43da68(0x1f9)]=!0x1,this[_0x43da68(0x272)]=!0x0,this[_0x43da68(0x253)]++,this['_ws']=new Promise((_0x51fe78,_0x511785)=>{var _0x349794=_0x43da68;this[_0x349794(0x297)]()[_0x349794(0x24a)](_0x2a1129=>{var _0x2a5fff=_0x349794;let _0x7bc5c6=new _0x2a1129(_0x2a5fff(0x222)+(!this[_0x2a5fff(0x27f)]&&this[_0x2a5fff(0x26c)]?_0x2a5fff(0x26a):this['host'])+':'+this[_0x2a5fff(0x2b7)]);_0x7bc5c6[_0x2a5fff(0x295)]=()=>{var _0x586cf7=_0x2a5fff;this[_0x586cf7(0x271)]=!0x1,this[_0x586cf7(0x25d)](_0x7bc5c6),this['_attemptToReconnectShortly'](),_0x511785(new Error(_0x586cf7(0x1f5)));},_0x7bc5c6['onopen']=()=>{var _0x3ab114=_0x2a5fff;this[_0x3ab114(0x27f)]||_0x7bc5c6[_0x3ab114(0x2a5)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)](),_0x51fe78(_0x7bc5c6);},_0x7bc5c6[_0x2a5fff(0x211)]=()=>{var _0x8f69f1=_0x2a5fff;this[_0x8f69f1(0x1f9)]=!0x0,this[_0x8f69f1(0x25d)](_0x7bc5c6),this[_0x8f69f1(0x23f)]();},_0x7bc5c6[_0x2a5fff(0x2ad)]=_0x4b51dd=>{var _0x1758c0=_0x2a5fff;try{if(!(_0x4b51dd!=null&&_0x4b51dd[_0x1758c0(0x277)])||!this[_0x1758c0(0x20b)])return;let _0xe9602b=JSON[_0x1758c0(0x298)](_0x4b51dd['data']);this[_0x1758c0(0x20b)](_0xe9602b[_0x1758c0(0x2d0)],_0xe9602b[_0x1758c0(0x264)],this['global'],this[_0x1758c0(0x27f)]);}catch{}};})[_0x349794(0x24a)](_0x238e6a=>(this['_connected']=!0x0,this[_0x349794(0x272)]=!0x1,this[_0x349794(0x1f9)]=!0x1,this[_0x349794(0x271)]=!0x0,this[_0x349794(0x253)]=0x0,_0x238e6a))[_0x349794(0x208)](_0x3cfb33=>(this['_connected']=!0x1,this[_0x349794(0x272)]=!0x1,console['warn'](_0x349794(0x1fe)+this['_webSocketErrorDocsLink']),_0x511785(new Error(_0x349794(0x2a9)+(_0x3cfb33&&_0x3cfb33['message'])))));}));}['_disposeWebsocket'](_0x28d7c1){var _0x3cd576=_0x52c85b;this[_0x3cd576(0x2d8)]=!0x1,this[_0x3cd576(0x272)]=!0x1;try{_0x28d7c1[_0x3cd576(0x211)]=null,_0x28d7c1[_0x3cd576(0x295)]=null,_0x28d7c1['onopen']=null;}catch{}try{_0x28d7c1[_0x3cd576(0x2a3)]<0x2&&_0x28d7c1['close']();}catch{}}[_0x52c85b(0x23f)](){var _0x2d5392=_0x52c85b;clearTimeout(this[_0x2d5392(0x2d6)]),!(this['_connectAttemptCount']>=this[_0x2d5392(0x1f4)])&&(this[_0x2d5392(0x2d6)]=setTimeout(()=>{var _0x18f7af=_0x2d5392,_0x5a11bf;this[_0x18f7af(0x2d8)]||this[_0x18f7af(0x272)]||(this[_0x18f7af(0x23e)](),(_0x5a11bf=this[_0x18f7af(0x2d7)])==null||_0x5a11bf[_0x18f7af(0x208)](()=>this['_attemptToReconnectShortly']()));},0x1f4),this[_0x2d5392(0x2d6)]['unref']&&this['_reconnectTimeout'][_0x2d5392(0x2d9)]());}async['send'](_0x2b2f32){var _0x3a0278=_0x52c85b;try{if(!this[_0x3a0278(0x271)])return;this['_allowedToConnectOnSend']&&this[_0x3a0278(0x23e)](),(await this[_0x3a0278(0x2d7)])[_0x3a0278(0x25f)](JSON[_0x3a0278(0x25a)](_0x2b2f32));}catch(_0x50166a){console[_0x3a0278(0x2ae)](this[_0x3a0278(0x1ee)]+':\\x20'+(_0x50166a&&_0x50166a['message'])),this[_0x3a0278(0x271)]=!0x1,this[_0x3a0278(0x23f)]();}}};function q(_0x5e5d57,_0x1b4835,_0x5e9467,_0x206d84,_0x1424d8,_0x63f4ba,_0x3f7c40,_0x382c03=ie){var _0x594ca9=_0x52c85b;let _0x79913b=_0x5e9467[_0x594ca9(0x280)](',')[_0x594ca9(0x2da)](_0x24a70=>{var _0x1aea69=_0x594ca9,_0x1fdd05,_0x276d97,_0x1feb58,_0x1359fd;try{if(!_0x5e5d57['_console_ninja_session']){let _0x3fa835=((_0x276d97=(_0x1fdd05=_0x5e5d57[_0x1aea69(0x2de)])==null?void 0x0:_0x1fdd05[_0x1aea69(0x249)])==null?void 0x0:_0x276d97['node'])||((_0x1359fd=(_0x1feb58=_0x5e5d57['process'])==null?void 0x0:_0x1feb58['env'])==null?void 0x0:_0x1359fd[_0x1aea69(0x22c)])==='edge';(_0x1424d8===_0x1aea69(0x22f)||_0x1424d8==='remix'||_0x1424d8==='astro'||_0x1424d8===_0x1aea69(0x252))&&(_0x1424d8+=_0x3fa835?'\\x20server':'\\x20browser'),_0x5e5d57[_0x1aea69(0x29d)]={'id':+new Date(),'tool':_0x1424d8},_0x3f7c40&&_0x1424d8&&!_0x3fa835&&console[_0x1aea69(0x242)](_0x1aea69(0x21a)+(_0x1424d8[_0x1aea69(0x21d)](0x0)[_0x1aea69(0x2c5)]()+_0x1424d8[_0x1aea69(0x219)](0x1))+',',_0x1aea69(0x20e),_0x1aea69(0x215));}let _0x83dde3=new Z(_0x5e5d57,_0x1b4835,_0x24a70,_0x206d84,_0x63f4ba,_0x382c03);return _0x83dde3['send'][_0x1aea69(0x2bb)](_0x83dde3);}catch(_0x1072c2){return console[_0x1aea69(0x2ae)](_0x1aea69(0x23b),_0x1072c2&&_0x1072c2['message']),()=>{};}});return _0x5f5c=>_0x79913b[_0x594ca9(0x206)](_0xf1e1e9=>_0xf1e1e9(_0x5f5c));}function ie(_0x844ad6,_0x1ef94f,_0x1bb388,_0x5b0f35){var _0x21c3ad=_0x52c85b;_0x5b0f35&&_0x844ad6===_0x21c3ad(0x26f)&&_0x1bb388[_0x21c3ad(0x2a1)][_0x21c3ad(0x26f)]();}function _0x71d4(){var _0x4cd662=['eventReceivedCallback','getOwnPropertyNames','constructor','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','__es'+'Module','onclose','1730442757965','_additionalMetadata','allStrLength','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','level','HTMLAllCollection','current','substr','%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20','funcName','_isSet','charAt','String','nodeModules','_inNextEdge','_dateToString','ws://','error','null','capped','450VyGHfK','count','hasOwnProperty','_setNodeExpandableState','reduceLimits','_setNodeQueryPath','NEXT_RUNTIME','some','_numberRegExp','next.js','depth','env','bigint','autoExpandLimit','boolean','_isUndefined','_addLoadNode','cappedElements','expId','trace','_addProperty','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','console','POSITIVE_INFINITY','_connectToHostNow','_attemptToReconnectShortly','autoExpandMaxDepth','call','log','_objectToString','107955OuwREG','_HTMLAllCollection','number','Map','_processTreeNodeResult','versions','then','322336BCHbRX','type','_getOwnPropertyDescriptor','value','','autoExpandPropertyCount','_treeNodePropertiesBeforeFullValue','angular','_connectAttemptCount','_WebSocket','131994iCoayd','node','_hasMapOnItsPath','push','[object\\x20Set]','stringify','Buffer','join','_disposeWebsocket','2wslTSs','send','autoExpandPreviousObjects','name','_p_length','match','args','','concat','_ninjaIgnoreNextError','fromCharCode','props','gateway.docker.internal','elapsed','dockerizedApp','_capIfString','resolveGetters','reload','_undefined','_allowedToSend','_connecting','_console_ninja','5612766HFCOwu','_setNodePermissions','edge','data','replace','performance','time',\"c:\\\\Users\\\\Iwan\\\\.vscode\\\\extensions\\\\wallabyjs.console-ninja-1.0.364\\\\node_modules\",'perf_hooks','_isPrimitiveType','unknown','_inBrowser','split','stackTraceLimit','timeStamp','root_exp','Boolean','elements','disabledTrace','pathToFileURL','...','NEGATIVE_INFINITY','string','127.0.0.1','index','54279','symbol','_p_name','_setNodeExpressionPath','_WebSocketClass','WebSocket','length','_blacklistedProperty','onerror','sort','getWebSocketClass','parse','pop','default','2263440DiNTNK','_addFunctionsNode','_console_ninja_session','getOwnPropertySymbols','test','indexOf','location','_webSocketErrorDocsLink','readyState','_Symbol','_socket','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','toLowerCase','getter','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_isMap','_setNodeId','undefined','onmessage','warn','host','_quotedRegExp','autoExpand','toString','112TgpLnc','_p_','_treeNodePropertiesAfterFullValue','883830dhuaNV','port','jest','getPrototypeOf','global','bind','nan','includes','set','origin','hits','hrtime','_getOwnPropertySymbols','cappedProps','strLength','toUpperCase','isExpressionToEvaluate','hostname','expressionsToEvaluate','totalStrLength','parent','_sortProps','now','slice','message','ws/index.js','method','_getOwnPropertyNames','[object\\x20BigInt]','_type','[object\\x20Map]','getOwnPropertyDescriptor','_reconnectTimeout','_ws','_connected','unref','map','_isPrimitiveWrapperType','[object\\x20Date]','positiveInfinity','process','array','rootExpression','_setNodeLabel','_sendErrorMessage','_addObjectProperty','noFunctions','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','valueOf','stack','_maxConnectAttemptCount','logger\\x20websocket\\x20error','_propertyName','prototype','path','_allowedToConnectOnSend','function','negativeZero','[object\\x20Array]','Set','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20','object','4115maXyRn','Number','_keyStrRegExp','coverage','_consoleNinjaAllowedToStart','startsWith','forEach','_property','catch','_cleanNode','serialize'];_0x71d4=function(){return _0x4cd662;};return _0x71d4();}function _0x1765(_0x553705,_0x4ec105){var _0x71d46=_0x71d4();return _0x1765=function(_0x17652e,_0x1a61b2){_0x17652e=_0x17652e-0x1ec;var _0x40c357=_0x71d46[_0x17652e];return _0x40c357;},_0x1765(_0x553705,_0x4ec105);}function B(_0x57d751){var _0x30d759=_0x52c85b,_0x2f0544,_0x425634;let _0x3fb00b=function(_0x4f3378,_0x2b9204){return _0x2b9204-_0x4f3378;},_0x37974a;if(_0x57d751[_0x30d759(0x279)])_0x37974a=function(){var _0x4497fe=_0x30d759;return _0x57d751[_0x4497fe(0x279)][_0x4497fe(0x2cc)]();};else{if(_0x57d751[_0x30d759(0x2de)]&&_0x57d751[_0x30d759(0x2de)][_0x30d759(0x2c1)]&&((_0x425634=(_0x2f0544=_0x57d751[_0x30d759(0x2de)])==null?void 0x0:_0x2f0544['env'])==null?void 0x0:_0x425634[_0x30d759(0x22c)])!=='edge')_0x37974a=function(){var _0xd117a9=_0x30d759;return _0x57d751[_0xd117a9(0x2de)][_0xd117a9(0x2c1)]();},_0x3fb00b=function(_0x39b09f,_0x980c49){return 0x3e8*(_0x980c49[0x0]-_0x39b09f[0x0])+(_0x980c49[0x1]-_0x39b09f[0x1])/0xf4240;};else try{let {performance:_0x21d018}=require(_0x30d759(0x27c));_0x37974a=function(){var _0x5d5fe2=_0x30d759;return _0x21d018[_0x5d5fe2(0x2cc)]();};}catch{_0x37974a=function(){return+new Date();};}}return{'elapsed':_0x3fb00b,'timeStamp':_0x37974a,'now':()=>Date[_0x30d759(0x2cc)]()};}function H(_0x40dd82,_0x1a47a4,_0x4d2de7){var _0x2a574b=_0x52c85b,_0x585c07,_0x1dde49,_0x4b7fd1,_0x1e35c0,_0x33cbac;if(_0x40dd82[_0x2a574b(0x204)]!==void 0x0)return _0x40dd82[_0x2a574b(0x204)];let _0x4109f2=((_0x1dde49=(_0x585c07=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x585c07['versions'])==null?void 0x0:_0x1dde49[_0x2a574b(0x256)])||((_0x1e35c0=(_0x4b7fd1=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x4b7fd1['env'])==null?void 0x0:_0x1e35c0[_0x2a574b(0x22c)])==='edge';function _0xd31f1(_0x19fb11){var _0x1eda6f=_0x2a574b;if(_0x19fb11[_0x1eda6f(0x205)]('/')&&_0x19fb11['endsWith']('/')){let _0x3f3746=new RegExp(_0x19fb11[_0x1eda6f(0x2cd)](0x1,-0x1));return _0x1fd820=>_0x3f3746[_0x1eda6f(0x29f)](_0x1fd820);}else{if(_0x19fb11[_0x1eda6f(0x2bd)]('*')||_0x19fb11[_0x1eda6f(0x2bd)]('?')){let _0x16815c=new RegExp('^'+_0x19fb11[_0x1eda6f(0x278)](/\\./g,String['fromCharCode'](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x1eda6f(0x278)](/\\?/g,'.')+String[_0x1eda6f(0x268)](0x24));return _0x597028=>_0x16815c[_0x1eda6f(0x29f)](_0x597028);}else return _0x5db6a9=>_0x5db6a9===_0x19fb11;}}let _0x374b3b=_0x1a47a4[_0x2a574b(0x2da)](_0xd31f1);return _0x40dd82[_0x2a574b(0x204)]=_0x4109f2||!_0x1a47a4,!_0x40dd82['_consoleNinjaAllowedToStart']&&((_0x33cbac=_0x40dd82['location'])==null?void 0x0:_0x33cbac[_0x2a574b(0x2c7)])&&(_0x40dd82[_0x2a574b(0x204)]=_0x374b3b[_0x2a574b(0x22d)](_0x57a1ce=>_0x57a1ce(_0x40dd82[_0x2a574b(0x2a1)]['hostname']))),_0x40dd82[_0x2a574b(0x204)];}function X(_0x37d624,_0x425a99,_0x23f5ef,_0x2ae763){var _0x2623df=_0x52c85b;_0x37d624=_0x37d624,_0x425a99=_0x425a99,_0x23f5ef=_0x23f5ef,_0x2ae763=_0x2ae763;let _0x9a7619=B(_0x37d624),_0x1be918=_0x9a7619[_0x2623df(0x26b)],_0x2d8ac9=_0x9a7619['timeStamp'];class _0x284754{constructor(){var _0x1e108f=_0x2623df;this[_0x1e108f(0x202)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this[_0x1e108f(0x22e)]=/^(0|[1-9][0-9]*)$/,this[_0x1e108f(0x2b0)]=/'([^\\\\']|\\\\')*'/,this[_0x1e108f(0x270)]=_0x37d624['undefined'],this[_0x1e108f(0x245)]=_0x37d624[_0x1e108f(0x217)],this[_0x1e108f(0x24d)]=Object[_0x1e108f(0x2d5)],this['_getOwnPropertyNames']=Object[_0x1e108f(0x20c)],this['_Symbol']=_0x37d624['Symbol'],this['_regExpToString']=RegExp[_0x1e108f(0x1f7)][_0x1e108f(0x2b2)],this[_0x1e108f(0x221)]=Date[_0x1e108f(0x1f7)]['toString'];}['serialize'](_0x5df2e5,_0x28d843,_0xcb4789,_0xdcda9){var _0x157369=_0x2623df,_0x204121=this,_0x7c527c=_0xcb4789['autoExpand'];function _0x525b94(_0x476e30,_0x59becc,_0x306c45){var _0x17e488=_0x1765;_0x59becc['type']='unknown',_0x59becc[_0x17e488(0x223)]=_0x476e30[_0x17e488(0x2ce)],_0x642c19=_0x306c45['node'][_0x17e488(0x218)],_0x306c45['node'][_0x17e488(0x218)]=_0x59becc,_0x204121[_0x17e488(0x251)](_0x59becc,_0x306c45);}try{_0xcb4789[_0x157369(0x216)]++,_0xcb4789['autoExpand']&&_0xcb4789['autoExpandPreviousObjects'][_0x157369(0x258)](_0x28d843);var _0x1cc857,_0x4f181d,_0x1561f0,_0x4bd796,_0x12e234=[],_0x57be70=[],_0x538ba4,_0x937729=this[_0x157369(0x2d3)](_0x28d843),_0x7c4fbd=_0x937729==='array',_0x423502=!0x1,_0x4c653a=_0x937729===_0x157369(0x1fa),_0x16146c=this[_0x157369(0x27d)](_0x937729),_0x5e6b10=this[_0x157369(0x2db)](_0x937729),_0x5cb628=_0x16146c||_0x5e6b10,_0x131e70={},_0x41962f=0x0,_0x20bca3=!0x1,_0x642c19,_0x1bfeb1=/^(([1-9]{1}[0-9]*)|0)$/;if(_0xcb4789[_0x157369(0x230)]){if(_0x7c4fbd){if(_0x4f181d=_0x28d843[_0x157369(0x293)],_0x4f181d>_0xcb4789['elements']){for(_0x1561f0=0x0,_0x4bd796=_0xcb4789[_0x157369(0x285)],_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121['_addProperty'](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));_0x5df2e5[_0x157369(0x237)]=!0x0;}else{for(_0x1561f0=0x0,_0x4bd796=_0x4f181d,_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x23a)](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));}_0xcb4789[_0x157369(0x250)]+=_0x57be70['length'];}if(!(_0x937729===_0x157369(0x224)||_0x937729==='undefined')&&!_0x16146c&&_0x937729!=='String'&&_0x937729!==_0x157369(0x25b)&&_0x937729!=='bigint'){var _0x14ad0a=_0xdcda9['props']||_0xcb4789[_0x157369(0x269)];if(this[_0x157369(0x21c)](_0x28d843)?(_0x1cc857=0x0,_0x28d843[_0x157369(0x206)](function(_0x795ddf){var _0x15dd02=_0x157369;if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789[_0x15dd02(0x2c6)]&&_0xcb4789[_0x15dd02(0x2b1)]&&_0xcb4789[_0x15dd02(0x250)]>_0xcb4789[_0x15dd02(0x233)]){_0x20bca3=!0x0;return;}_0x57be70['push'](_0x204121[_0x15dd02(0x23a)](_0x12e234,_0x28d843,_0x15dd02(0x1fd),_0x1cc857++,_0xcb4789,function(_0x498239){return function(){return _0x498239;};}(_0x795ddf)));})):this[_0x157369(0x2aa)](_0x28d843)&&_0x28d843['forEach'](function(_0x268d65,_0x26e6f7){var _0x462487=_0x157369;if(_0x41962f++,_0xcb4789[_0x462487(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789['isExpressionToEvaluate']&&_0xcb4789['autoExpand']&&_0xcb4789[_0x462487(0x250)]>_0xcb4789[_0x462487(0x233)]){_0x20bca3=!0x0;return;}var _0x19aed5=_0x26e6f7[_0x462487(0x2b2)]();_0x19aed5[_0x462487(0x293)]>0x64&&(_0x19aed5=_0x19aed5['slice'](0x0,0x64)+_0x462487(0x288)),_0x57be70[_0x462487(0x258)](_0x204121[_0x462487(0x23a)](_0x12e234,_0x28d843,'Map',_0x19aed5,_0xcb4789,function(_0x23ffd6){return function(){return _0x23ffd6;};}(_0x268d65)));}),!_0x423502){try{for(_0x538ba4 in _0x28d843)if(!(_0x7c4fbd&&_0x1bfeb1['test'](_0x538ba4))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)){if(_0x41962f++,_0xcb4789[_0x157369(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789['autoExpandLimit']){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}catch{}if(_0x131e70[_0x157369(0x262)]=!0x0,_0x4c653a&&(_0x131e70[_0x157369(0x28f)]=!0x0),!_0x20bca3){var _0x5ae1db=[][_0x157369(0x266)](this[_0x157369(0x2d1)](_0x28d843))[_0x157369(0x266)](this[_0x157369(0x2c2)](_0x28d843));for(_0x1cc857=0x0,_0x4f181d=_0x5ae1db[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)if(_0x538ba4=_0x5ae1db[_0x1cc857],!(_0x7c4fbd&&_0x1bfeb1[_0x157369(0x29f)](_0x538ba4[_0x157369(0x2b2)]()))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)&&!_0x131e70[_0x157369(0x2b4)+_0x538ba4[_0x157369(0x2b2)]()]){if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789[_0x157369(0x233)]){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}}}}if(_0x5df2e5[_0x157369(0x24c)]=_0x937729,_0x5cb628?(_0x5df2e5[_0x157369(0x24e)]=_0x28d843['valueOf'](),this[_0x157369(0x26d)](_0x937729,_0x5df2e5,_0xcb4789,_0xdcda9)):_0x937729==='date'?_0x5df2e5[_0x157369(0x24e)]=this[_0x157369(0x221)][_0x157369(0x241)](_0x28d843):_0x937729===_0x157369(0x232)?_0x5df2e5[_0x157369(0x24e)]=_0x28d843[_0x157369(0x2b2)]():_0x937729==='RegExp'?_0x5df2e5[_0x157369(0x24e)]=this['_regExpToString'][_0x157369(0x241)](_0x28d843):_0x937729==='symbol'&&this[_0x157369(0x2a4)]?_0x5df2e5['value']=this[_0x157369(0x2a4)][_0x157369(0x1f7)]['toString'][_0x157369(0x241)](_0x28d843):!_0xcb4789['depth']&&!(_0x937729===_0x157369(0x224)||_0x937729===_0x157369(0x2ac))&&(delete _0x5df2e5[_0x157369(0x24e)],_0x5df2e5[_0x157369(0x225)]=!0x0),_0x20bca3&&(_0x5df2e5[_0x157369(0x2c3)]=!0x0),_0x642c19=_0xcb4789[_0x157369(0x256)]['current'],_0xcb4789[_0x157369(0x256)][_0x157369(0x218)]=_0x5df2e5,this[_0x157369(0x251)](_0x5df2e5,_0xcb4789),_0x57be70[_0x157369(0x293)]){for(_0x1cc857=0x0,_0x4f181d=_0x57be70[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)_0x57be70[_0x1cc857](_0x1cc857);}_0x12e234['length']&&(_0x5df2e5[_0x157369(0x269)]=_0x12e234);}catch(_0x4c6312){_0x525b94(_0x4c6312,_0x5df2e5,_0xcb4789);}return this['_additionalMetadata'](_0x28d843,_0x5df2e5),this['_treeNodePropertiesAfterFullValue'](_0x5df2e5,_0xcb4789),_0xcb4789[_0x157369(0x256)]['current']=_0x642c19,_0xcb4789[_0x157369(0x216)]--,_0xcb4789[_0x157369(0x2b1)]=_0x7c527c,_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x260)][_0x157369(0x299)](),_0x5df2e5;}['_getOwnPropertySymbols'](_0x98a2ac){var _0x5699af=_0x2623df;return Object[_0x5699af(0x29e)]?Object['getOwnPropertySymbols'](_0x98a2ac):[];}[_0x2623df(0x21c)](_0x1b06f2){var _0x45deb3=_0x2623df;return!!(_0x1b06f2&&_0x37d624[_0x45deb3(0x1fd)]&&this[_0x45deb3(0x243)](_0x1b06f2)===_0x45deb3(0x259)&&_0x1b06f2[_0x45deb3(0x206)]);}[_0x2623df(0x294)](_0x2a16f8,_0x2d32bc,_0xc52e10){var _0x1da585=_0x2623df;return _0xc52e10['noFunctions']?typeof _0x2a16f8[_0x2d32bc]==_0x1da585(0x1fa):!0x1;}[_0x2623df(0x2d3)](_0x3c584c){var _0x4a2b0b=_0x2623df,_0x116724='';return _0x116724=typeof _0x3c584c,_0x116724===_0x4a2b0b(0x1ff)?this[_0x4a2b0b(0x243)](_0x3c584c)==='[object\\x20Array]'?_0x116724=_0x4a2b0b(0x2df):this['_objectToString'](_0x3c584c)===_0x4a2b0b(0x2dc)?_0x116724='date':this[_0x4a2b0b(0x243)](_0x3c584c)===_0x4a2b0b(0x2d2)?_0x116724=_0x4a2b0b(0x232):_0x3c584c===null?_0x116724=_0x4a2b0b(0x224):_0x3c584c[_0x4a2b0b(0x20d)]&&(_0x116724=_0x3c584c[_0x4a2b0b(0x20d)][_0x4a2b0b(0x261)]||_0x116724):_0x116724===_0x4a2b0b(0x2ac)&&this[_0x4a2b0b(0x245)]&&_0x3c584c instanceof this[_0x4a2b0b(0x245)]&&(_0x116724=_0x4a2b0b(0x217)),_0x116724;}[_0x2623df(0x243)](_0xc200d5){var _0x4e9e8b=_0x2623df;return Object[_0x4e9e8b(0x1f7)][_0x4e9e8b(0x2b2)]['call'](_0xc200d5);}[_0x2623df(0x27d)](_0x529a22){var _0x5c1d83=_0x2623df;return _0x529a22===_0x5c1d83(0x234)||_0x529a22===_0x5c1d83(0x28a)||_0x529a22===_0x5c1d83(0x246);}[_0x2623df(0x2db)](_0x138149){var _0x4a144e=_0x2623df;return _0x138149===_0x4a144e(0x284)||_0x138149===_0x4a144e(0x21e)||_0x138149===_0x4a144e(0x201);}[_0x2623df(0x23a)](_0x135627,_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524){var _0x2e6ca4=this;return function(_0x3cef10){var _0xcb4898=_0x1765,_0x47c646=_0x375c3c[_0xcb4898(0x256)]['current'],_0x4083d7=_0x375c3c['node']['index'],_0x5280a8=_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)];_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x47c646,_0x375c3c['node'][_0xcb4898(0x28c)]=typeof _0x11f9fb=='number'?_0x11f9fb:_0x3cef10,_0x135627[_0xcb4898(0x258)](_0x2e6ca4['_property'](_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524)),_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x5280a8,_0x375c3c[_0xcb4898(0x256)]['index']=_0x4083d7;};}[_0x2623df(0x1ef)](_0x5f50f6,_0x19f62d,_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61){var _0x1b819d=_0x2623df,_0x2f2a63=this;return _0x19f62d[_0x1b819d(0x2b4)+_0x153ede[_0x1b819d(0x2b2)]()]=!0x0,function(_0x52cd65){var _0xc2af59=_0x1b819d,_0xf1884d=_0x195a04['node'][_0xc2af59(0x218)],_0x1f5c05=_0x195a04['node'][_0xc2af59(0x28c)],_0x20b47d=_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)];_0x195a04[_0xc2af59(0x256)]['parent']=_0xf1884d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x52cd65,_0x5f50f6[_0xc2af59(0x258)](_0x2f2a63[_0xc2af59(0x207)](_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61)),_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)]=_0x20b47d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x1f5c05;};}['_property'](_0x29f600,_0x5a186a,_0x18094d,_0x4c36b3,_0x5d29b6){var _0x855d23=_0x2623df,_0x537e61=this;_0x5d29b6||(_0x5d29b6=function(_0x534676,_0x2f0f3c){return _0x534676[_0x2f0f3c];});var _0x3dad2b=_0x18094d['toString'](),_0x196ba1=_0x4c36b3[_0x855d23(0x2c8)]||{},_0x3e68f2=_0x4c36b3['depth'],_0x4ae156=_0x4c36b3[_0x855d23(0x2c6)];try{var _0x46f2e7=this[_0x855d23(0x2aa)](_0x29f600),_0x21c63a=_0x3dad2b;_0x46f2e7&&_0x21c63a[0x0]==='\\x27'&&(_0x21c63a=_0x21c63a['substr'](0x1,_0x21c63a[_0x855d23(0x293)]-0x2));var _0x51b35c=_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1['_p_'+_0x21c63a];_0x51b35c&&(_0x4c36b3[_0x855d23(0x230)]=_0x4c36b3[_0x855d23(0x230)]+0x1),_0x4c36b3['isExpressionToEvaluate']=!!_0x51b35c;var _0x4102a5=typeof _0x18094d==_0x855d23(0x28e),_0x10aa24={'name':_0x4102a5||_0x46f2e7?_0x3dad2b:this[_0x855d23(0x1f6)](_0x3dad2b)};if(_0x4102a5&&(_0x10aa24['symbol']=!0x0),!(_0x5a186a===_0x855d23(0x2df)||_0x5a186a==='Error')){var _0x4f0a95=this['_getOwnPropertyDescriptor'](_0x29f600,_0x18094d);if(_0x4f0a95&&(_0x4f0a95[_0x855d23(0x2be)]&&(_0x10aa24['setter']=!0x0),_0x4f0a95['get']&&!_0x51b35c&&!_0x4c36b3[_0x855d23(0x26e)]))return _0x10aa24[_0x855d23(0x2a8)]=!0x0,this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x8e1bdc;try{_0x8e1bdc=_0x5d29b6(_0x29f600,_0x18094d);}catch(_0x343ade){return _0x10aa24={'name':_0x3dad2b,'type':_0x855d23(0x27e),'error':_0x343ade[_0x855d23(0x2ce)]},this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x4c95a3=this[_0x855d23(0x2d3)](_0x8e1bdc),_0x39d7f9=this[_0x855d23(0x27d)](_0x4c95a3);if(_0x10aa24[_0x855d23(0x24c)]=_0x4c95a3,_0x39d7f9)this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x294840=_0x855d23;_0x10aa24['value']=_0x8e1bdc[_0x294840(0x1f2)](),!_0x51b35c&&_0x537e61['_capIfString'](_0x4c95a3,_0x10aa24,_0x4c36b3,{});});else{var _0x308b70=_0x4c36b3[_0x855d23(0x2b1)]&&_0x4c36b3[_0x855d23(0x216)]<_0x4c36b3[_0x855d23(0x240)]&&_0x4c36b3['autoExpandPreviousObjects'][_0x855d23(0x2a0)](_0x8e1bdc)<0x0&&_0x4c95a3!==_0x855d23(0x1fa)&&_0x4c36b3[_0x855d23(0x250)]<_0x4c36b3[_0x855d23(0x233)];_0x308b70||_0x4c36b3['level']<_0x3e68f2||_0x51b35c?(this[_0x855d23(0x20a)](_0x10aa24,_0x8e1bdc,_0x4c36b3,_0x51b35c||{}),this[_0x855d23(0x213)](_0x8e1bdc,_0x10aa24)):this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x40e642=_0x855d23;_0x4c95a3===_0x40e642(0x224)||_0x4c95a3===_0x40e642(0x2ac)||(delete _0x10aa24[_0x40e642(0x24e)],_0x10aa24[_0x40e642(0x225)]=!0x0);});}return _0x10aa24;}finally{_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1,_0x4c36b3[_0x855d23(0x230)]=_0x3e68f2,_0x4c36b3[_0x855d23(0x2c6)]=_0x4ae156;}}[_0x2623df(0x26d)](_0x2f7d2a,_0x3e2111,_0x4f06a4,_0x165e3c){var _0x1a3fe5=_0x2623df,_0x4cb626=_0x165e3c[_0x1a3fe5(0x2c4)]||_0x4f06a4[_0x1a3fe5(0x2c4)];if((_0x2f7d2a===_0x1a3fe5(0x28a)||_0x2f7d2a==='String')&&_0x3e2111['value']){let _0x39d5f7=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x293)];_0x4f06a4['allStrLength']+=_0x39d5f7,_0x4f06a4[_0x1a3fe5(0x214)]>_0x4f06a4[_0x1a3fe5(0x2c9)]?(_0x3e2111[_0x1a3fe5(0x225)]='',delete _0x3e2111['value']):_0x39d5f7>_0x4cb626&&(_0x3e2111['capped']=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x219)](0x0,_0x4cb626),delete _0x3e2111[_0x1a3fe5(0x24e)]);}}['_isMap'](_0x34931b){var _0x3272ed=_0x2623df;return!!(_0x34931b&&_0x37d624[_0x3272ed(0x247)]&&this[_0x3272ed(0x243)](_0x34931b)===_0x3272ed(0x2d4)&&_0x34931b['forEach']);}[_0x2623df(0x1f6)](_0x47a998){var _0x54c731=_0x2623df;if(_0x47a998[_0x54c731(0x263)](/^\\d+$/))return _0x47a998;var _0x13c78f;try{_0x13c78f=JSON['stringify'](''+_0x47a998);}catch{_0x13c78f='\\x22'+this[_0x54c731(0x243)](_0x47a998)+'\\x22';}return _0x13c78f[_0x54c731(0x263)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x13c78f=_0x13c78f['substr'](0x1,_0x13c78f['length']-0x2):_0x13c78f=_0x13c78f['replace'](/'/g,'\\x5c\\x27')[_0x54c731(0x278)](/\\\\\"/g,'\\x22')['replace'](/(^\"|\"$)/g,'\\x27'),_0x13c78f;}[_0x2623df(0x248)](_0x450bd2,_0x540e99,_0x3a738d,_0x1d5e7b){var _0xbf57c1=_0x2623df;this[_0xbf57c1(0x251)](_0x450bd2,_0x540e99),_0x1d5e7b&&_0x1d5e7b(),this[_0xbf57c1(0x213)](_0x3a738d,_0x450bd2),this[_0xbf57c1(0x2b5)](_0x450bd2,_0x540e99);}['_treeNodePropertiesBeforeFullValue'](_0x288bd4,_0x443233){var _0x15c053=_0x2623df;this[_0x15c053(0x2ab)](_0x288bd4,_0x443233),this[_0x15c053(0x22b)](_0x288bd4,_0x443233),this['_setNodeExpressionPath'](_0x288bd4,_0x443233),this[_0x15c053(0x275)](_0x288bd4,_0x443233);}[_0x2623df(0x2ab)](_0x33355c,_0x4c1413){}['_setNodeQueryPath'](_0x5e28c0,_0x37c1ca){}['_setNodeLabel'](_0xee885f,_0x115998){}[_0x2623df(0x235)](_0x55a938){var _0x1aa6f4=_0x2623df;return _0x55a938===this[_0x1aa6f4(0x270)];}['_treeNodePropertiesAfterFullValue'](_0x10edfb,_0x29f29a){var _0x206d02=_0x2623df;this[_0x206d02(0x1ed)](_0x10edfb,_0x29f29a),this['_setNodeExpandableState'](_0x10edfb),_0x29f29a['sortProps']&&this[_0x206d02(0x2cb)](_0x10edfb),this[_0x206d02(0x29c)](_0x10edfb,_0x29f29a),this[_0x206d02(0x236)](_0x10edfb,_0x29f29a),this[_0x206d02(0x209)](_0x10edfb);}[_0x2623df(0x213)](_0x2ae38c,_0x6a4e65){var _0x3180df=_0x2623df;let _0x39ab34;try{_0x37d624[_0x3180df(0x23c)]&&(_0x39ab34=_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)],_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=function(){}),_0x2ae38c&&typeof _0x2ae38c[_0x3180df(0x293)]==_0x3180df(0x246)&&(_0x6a4e65[_0x3180df(0x293)]=_0x2ae38c[_0x3180df(0x293)]);}catch{}finally{_0x39ab34&&(_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=_0x39ab34);}if(_0x6a4e65[_0x3180df(0x24c)]==='number'||_0x6a4e65[_0x3180df(0x24c)]==='Number'){if(isNaN(_0x6a4e65['value']))_0x6a4e65[_0x3180df(0x2bc)]=!0x0,delete _0x6a4e65['value'];else switch(_0x6a4e65[_0x3180df(0x24e)]){case Number[_0x3180df(0x23d)]:_0x6a4e65[_0x3180df(0x2dd)]=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case Number['NEGATIVE_INFINITY']:_0x6a4e65['negativeInfinity']=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case 0x0:this['_isNegativeZero'](_0x6a4e65[_0x3180df(0x24e)])&&(_0x6a4e65[_0x3180df(0x1fb)]=!0x0);break;}}else _0x6a4e65[_0x3180df(0x24c)]===_0x3180df(0x1fa)&&typeof _0x2ae38c[_0x3180df(0x261)]==_0x3180df(0x28a)&&_0x2ae38c[_0x3180df(0x261)]&&_0x6a4e65[_0x3180df(0x261)]&&_0x2ae38c[_0x3180df(0x261)]!==_0x6a4e65[_0x3180df(0x261)]&&(_0x6a4e65[_0x3180df(0x21b)]=_0x2ae38c[_0x3180df(0x261)]);}['_isNegativeZero'](_0x2fa98d){var _0x8c6a89=_0x2623df;return 0x1/_0x2fa98d===Number[_0x8c6a89(0x289)];}[_0x2623df(0x2cb)](_0x45f240){var _0x27ea15=_0x2623df;!_0x45f240[_0x27ea15(0x269)]||!_0x45f240['props'][_0x27ea15(0x293)]||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x2df)||_0x45f240[_0x27ea15(0x24c)]==='Map'||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x1fd)||_0x45f240[_0x27ea15(0x269)][_0x27ea15(0x296)](function(_0x587f85,_0x25310e){var _0x27429f=_0x27ea15,_0x22eb8f=_0x587f85['name'][_0x27429f(0x2a7)](),_0x9f76b=_0x25310e[_0x27429f(0x261)][_0x27429f(0x2a7)]();return _0x22eb8f<_0x9f76b?-0x1:_0x22eb8f>_0x9f76b?0x1:0x0;});}[_0x2623df(0x29c)](_0x6aec3b,_0x4e7839){var _0x5e1614=_0x2623df;if(!(_0x4e7839[_0x5e1614(0x1f0)]||!_0x6aec3b[_0x5e1614(0x269)]||!_0x6aec3b['props'][_0x5e1614(0x293)])){for(var _0x4ae259=[],_0x2bc8c5=[],_0x2c5219=0x0,_0x4f1485=_0x6aec3b[_0x5e1614(0x269)]['length'];_0x2c5219<_0x4f1485;_0x2c5219++){var _0x29e8fa=_0x6aec3b[_0x5e1614(0x269)][_0x2c5219];_0x29e8fa['type']===_0x5e1614(0x1fa)?_0x4ae259[_0x5e1614(0x258)](_0x29e8fa):_0x2bc8c5[_0x5e1614(0x258)](_0x29e8fa);}if(!(!_0x2bc8c5[_0x5e1614(0x293)]||_0x4ae259[_0x5e1614(0x293)]<=0x1)){_0x6aec3b[_0x5e1614(0x269)]=_0x2bc8c5;var _0x28eeff={'functionsNode':!0x0,'props':_0x4ae259};this['_setNodeId'](_0x28eeff,_0x4e7839),this[_0x5e1614(0x1ed)](_0x28eeff,_0x4e7839),this[_0x5e1614(0x229)](_0x28eeff),this[_0x5e1614(0x275)](_0x28eeff,_0x4e7839),_0x28eeff['id']+='\\x20f',_0x6aec3b['props']['unshift'](_0x28eeff);}}}[_0x2623df(0x236)](_0x8d09ca,_0x48c45f){}['_setNodeExpandableState'](_0x2c3113){}['_isArray'](_0x4d0b46){var _0x540da5=_0x2623df;return Array['isArray'](_0x4d0b46)||typeof _0x4d0b46==_0x540da5(0x1ff)&&this[_0x540da5(0x243)](_0x4d0b46)===_0x540da5(0x1fc);}['_setNodePermissions'](_0x51ec7c,_0x53542f){}[_0x2623df(0x209)](_0x47913e){var _0x503d84=_0x2623df;delete _0x47913e['_hasSymbolPropertyOnItsPath'],delete _0x47913e['_hasSetOnItsPath'],delete _0x47913e[_0x503d84(0x257)];}[_0x2623df(0x290)](_0x3e77fb,_0x7533ff){}}let _0x31638a=new _0x284754(),_0xdce57e={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x43e197={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x6a9287(_0x531b46,_0x4bc71a,_0x197aa8,_0x42857c,_0x5321fe,_0x10f17e){var _0x471a36=_0x2623df;let _0x101e55,_0x1a2226;try{_0x1a2226=_0x2d8ac9(),_0x101e55=_0x23f5ef[_0x4bc71a],!_0x101e55||_0x1a2226-_0x101e55['ts']>0x1f4&&_0x101e55[_0x471a36(0x227)]&&_0x101e55[_0x471a36(0x27a)]/_0x101e55[_0x471a36(0x227)]<0x64?(_0x23f5ef[_0x4bc71a]=_0x101e55={'count':0x0,'time':0x0,'ts':_0x1a2226},_0x23f5ef[_0x471a36(0x2c0)]={}):_0x1a2226-_0x23f5ef[_0x471a36(0x2c0)]['ts']>0x32&&_0x23f5ef[_0x471a36(0x2c0)]['count']&&_0x23f5ef['hits'][_0x471a36(0x27a)]/_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]<0x64&&(_0x23f5ef['hits']={});let _0x11e3f6=[],_0x5697d2=_0x101e55['reduceLimits']||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x22a)]?_0x43e197:_0xdce57e,_0x405b05=_0x3da01f=>{var _0x3c6546=_0x471a36;let _0x26cba4={};return _0x26cba4['props']=_0x3da01f[_0x3c6546(0x269)],_0x26cba4[_0x3c6546(0x285)]=_0x3da01f[_0x3c6546(0x285)],_0x26cba4[_0x3c6546(0x2c4)]=_0x3da01f[_0x3c6546(0x2c4)],_0x26cba4[_0x3c6546(0x2c9)]=_0x3da01f['totalStrLength'],_0x26cba4[_0x3c6546(0x233)]=_0x3da01f[_0x3c6546(0x233)],_0x26cba4[_0x3c6546(0x240)]=_0x3da01f[_0x3c6546(0x240)],_0x26cba4['sortProps']=!0x1,_0x26cba4[_0x3c6546(0x1f0)]=!_0x425a99,_0x26cba4[_0x3c6546(0x230)]=0x1,_0x26cba4[_0x3c6546(0x216)]=0x0,_0x26cba4[_0x3c6546(0x238)]='root_exp_id',_0x26cba4[_0x3c6546(0x1ec)]=_0x3c6546(0x283),_0x26cba4[_0x3c6546(0x2b1)]=!0x0,_0x26cba4[_0x3c6546(0x260)]=[],_0x26cba4[_0x3c6546(0x250)]=0x0,_0x26cba4[_0x3c6546(0x26e)]=!0x0,_0x26cba4[_0x3c6546(0x214)]=0x0,_0x26cba4['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x26cba4;};for(var _0x23e276=0x0;_0x23e276<_0x5321fe[_0x471a36(0x293)];_0x23e276++)_0x11e3f6[_0x471a36(0x258)](_0x31638a[_0x471a36(0x20a)]({'timeNode':_0x531b46===_0x471a36(0x27a)||void 0x0},_0x5321fe[_0x23e276],_0x405b05(_0x5697d2),{}));if(_0x531b46==='trace'||_0x531b46===_0x471a36(0x223)){let _0x56cb28=Error['stackTraceLimit'];try{Error[_0x471a36(0x281)]=0x1/0x0,_0x11e3f6['push'](_0x31638a[_0x471a36(0x20a)]({'stackNode':!0x0},new Error()[_0x471a36(0x1f3)],_0x405b05(_0x5697d2),{'strLength':0x1/0x0}));}finally{Error[_0x471a36(0x281)]=_0x56cb28;}}return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':_0x11e3f6,'id':_0x4bc71a,'context':_0x10f17e}]};}catch(_0x141361){return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':[{'type':'unknown','error':_0x141361&&_0x141361[_0x471a36(0x2ce)]}],'id':_0x4bc71a,'context':_0x10f17e}]};}finally{try{if(_0x101e55&&_0x1a2226){let _0x53d3d0=_0x2d8ac9();_0x101e55['count']++,_0x101e55[_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x101e55['ts']=_0x53d3d0,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]++,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x23f5ef[_0x471a36(0x2c0)]['ts']=_0x53d3d0,(_0x101e55['count']>0x32||_0x101e55['time']>0x64)&&(_0x101e55[_0x471a36(0x22a)]=!0x0),(_0x23f5ef['hits'][_0x471a36(0x227)]>0x3e8||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]>0x12c)&&(_0x23f5ef['hits'][_0x471a36(0x22a)]=!0x0);}}catch{}}}return _0x6a9287;}((_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x598d24,_0x5d532f,_0x146311,_0x5c841c,_0x435457,_0x4af095)=>{var _0x178280=_0x52c85b;if(_0x5c57ad[_0x178280(0x273)])return _0x5c57ad[_0x178280(0x273)];if(!H(_0x5c57ad,_0x146311,_0x3deb3c))return _0x5c57ad[_0x178280(0x273)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x5c57ad['_console_ninja'];let _0x348138=B(_0x5c57ad),_0x4526fb=_0x348138[_0x178280(0x26b)],_0x4d4ffb=_0x348138[_0x178280(0x282)],_0x383918=_0x348138[_0x178280(0x2cc)],_0x42c1e2={'hits':{},'ts':{}},_0x5f1ccb=X(_0x5c57ad,_0x5c841c,_0x42c1e2,_0x598d24),_0xd940d5=_0x4e24ec=>{_0x42c1e2['ts'][_0x4e24ec]=_0x4d4ffb();},_0xea84f2=(_0x1e4f3c,_0x4cf578)=>{var _0x1bcce6=_0x178280;let _0x930c06=_0x42c1e2['ts'][_0x4cf578];if(delete _0x42c1e2['ts'][_0x4cf578],_0x930c06){let _0x1303d4=_0x4526fb(_0x930c06,_0x4d4ffb());_0xde4346(_0x5f1ccb(_0x1bcce6(0x27a),_0x1e4f3c,_0x383918(),_0x42be99,[_0x1303d4],_0x4cf578));}},_0x4f0396=_0x430740=>{var _0x16daef=_0x178280,_0x326829;return _0x3deb3c===_0x16daef(0x22f)&&_0x5c57ad[_0x16daef(0x2bf)]&&((_0x326829=_0x430740==null?void 0x0:_0x430740[_0x16daef(0x264)])==null?void 0x0:_0x326829[_0x16daef(0x293)])&&(_0x430740[_0x16daef(0x264)][0x0]['origin']=_0x5c57ad[_0x16daef(0x2bf)]),_0x430740;};_0x5c57ad['_console_ninja']={'consoleLog':(_0x389383,_0x33070f)=>{var _0xcc2784=_0x178280;_0x5c57ad[_0xcc2784(0x23c)]['log']['name']!=='disabledLog'&&_0xde4346(_0x5f1ccb(_0xcc2784(0x242),_0x389383,_0x383918(),_0x42be99,_0x33070f));},'consoleTrace':(_0x5a7462,_0x4ad9a0)=>{var _0x34222f=_0x178280,_0x4e5f09,_0x38cb70;_0x5c57ad['console']['log'][_0x34222f(0x261)]!==_0x34222f(0x286)&&((_0x38cb70=(_0x4e5f09=_0x5c57ad['process'])==null?void 0x0:_0x4e5f09[_0x34222f(0x249)])!=null&&_0x38cb70[_0x34222f(0x256)]&&(_0x5c57ad['_ninjaIgnoreNextError']=!0x0),_0xde4346(_0x4f0396(_0x5f1ccb(_0x34222f(0x239),_0x5a7462,_0x383918(),_0x42be99,_0x4ad9a0))));},'consoleError':(_0x56c660,_0x124401)=>{var _0x5a4dbf=_0x178280;_0x5c57ad[_0x5a4dbf(0x267)]=!0x0,_0xde4346(_0x4f0396(_0x5f1ccb(_0x5a4dbf(0x223),_0x56c660,_0x383918(),_0x42be99,_0x124401)));},'consoleTime':_0x2b72bf=>{_0xd940d5(_0x2b72bf);},'consoleTimeEnd':(_0xf42d7f,_0x231d2e)=>{_0xea84f2(_0x231d2e,_0xf42d7f);},'autoLog':(_0x34fc42,_0x1593ab)=>{_0xde4346(_0x5f1ccb('log',_0x1593ab,_0x383918(),_0x42be99,[_0x34fc42]));},'autoLogMany':(_0x1161f8,_0x1f890f)=>{var _0x432033=_0x178280;_0xde4346(_0x5f1ccb(_0x432033(0x242),_0x1161f8,_0x383918(),_0x42be99,_0x1f890f));},'autoTrace':(_0x1abd02,_0x1a1339)=>{var _0x23dceb=_0x178280;_0xde4346(_0x4f0396(_0x5f1ccb(_0x23dceb(0x239),_0x1a1339,_0x383918(),_0x42be99,[_0x1abd02])));},'autoTraceMany':(_0x5662b6,_0x1b0d24)=>{_0xde4346(_0x4f0396(_0x5f1ccb('trace',_0x5662b6,_0x383918(),_0x42be99,_0x1b0d24)));},'autoTime':(_0x4a4e0b,_0x1660f1,_0xecbc72)=>{_0xd940d5(_0xecbc72);},'autoTimeEnd':(_0x391986,_0x4e8b70,_0x41f58e)=>{_0xea84f2(_0x4e8b70,_0x41f58e);},'coverage':_0x5ae8d0=>{var _0x294a69=_0x178280;_0xde4346({'method':_0x294a69(0x203),'version':_0x598d24,'args':[{'id':_0x5ae8d0}]});}};let _0xde4346=q(_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x435457,_0x4af095),_0x42be99=_0x5c57ad[_0x178280(0x29d)];return _0x5c57ad[_0x178280(0x273)];})(globalThis,_0x52c85b(0x28b),_0x52c85b(0x28d),_0x52c85b(0x27b),_0x52c85b(0x2b8),'1.0.0',_0x52c85b(0x212),[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"DESKTOP-JE0DD9V\",\"192.168.1.6\"],_0x52c85b(0x265),_0x52c85b(0x24f),'1');");}catch(e){}};/* istanbul ignore next */function oo_oo(i,...v){try{oo_cm().consoleLog(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tr(i,...v){try{oo_cm().consoleTrace(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tx(i,...v){try{oo_cm().consoleError(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_ts(v){try{oo_cm().consoleTime(v);}catch(e){} return v;};/* istanbul ignore next */function oo_te(v, i){try{oo_cm().consoleTimeEnd(v, i);}catch(e){} return v;};/*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/middlewares/errorHandler.js.html b/Server/coverage/lcov-report/Server/middlewares/errorHandler.js.html new file mode 100644 index 0000000..b06ccd8 --- /dev/null +++ b/Server/coverage/lcov-report/Server/middlewares/errorHandler.js.html @@ -0,0 +1,217 @@ + + + + + + Code coverage report for Server/middlewares/errorHandler.js + + + + + + + + + +
+
+

All files / Server/middlewares errorHandler.js

+
+ +
+ 62.5% + Statements + 15/24 +
+ + +
+ 63.63% + Branches + 7/11 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 60.86% + Lines + 14/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45  +13x +13x +  +5x +5x +  +  +  +  +  +  +  +2x +2x +  +3x +  +3x +  +  +  +  +  +2x +2x +  +1x +  +  +1x +  +  +  +  +  +  +2x +  +  +  +  +  +  +13x
function errorHandler(err, req, res, next) {
+  /* eslint-disable */console.log(...oo_oo(`1960260339_2_2_2_46_4`,"🚀 ~ errorHandler ~ err:", err))
+  switch (err.name) {
+    case "JsonWebTokenError":
+      res.status(401).json({ message: `Invalid Token` });
+      break;
+    case "Forbidden":
+      res.status(403).json({ message: err.message });
+      break;
+    case "NotFound":
+      res.status(404).json({ message: err.message });
+      break;
+    case "NotAuthorized":
+      res.status(401).json({ message: err.message });
+      break;
+    case "SequelizeValidationError":
+      return res
+        .status(400)
+        .json({ message: err.errors.map((e) => e.message) })
+      break;
+    case "Conflict":
+      res.status(409).json({ message: err.message });
+      break;
+    case "BadReq":
+      res.status(409).json({ message: err.message });
+      break;
+    case "SequelizeUniqueConstraintError":
+      res
+        .status(409)
+        .json({ message:err.message });
+      break;
+ 
+    default:
+      res.status(500).json({ message: "Internal Server Error" });
+      break;
+  }
+}
+module.exports = errorHandler;
+ 
+ 
+ 
+ 
+ 
+ 
+/* istanbul ignore next *//* c8 ignore start *//* eslint-disable */;function oo_cm(){try{return (0,eval)("globalThis._console_ninja") || (0,eval)("/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x52c85b=_0x1765;(function(_0x3cd6dd,_0x5377ca){var _0x486f76=_0x1765,_0xaa2ebe=_0x3cd6dd();while(!![]){try{var _0x494024=-parseInt(_0x486f76(0x2b6))/0x1+-parseInt(_0x486f76(0x25e))/0x2*(-parseInt(_0x486f76(0x255))/0x3)+parseInt(_0x486f76(0x29b))/0x4+-parseInt(_0x486f76(0x200))/0x5+parseInt(_0x486f76(0x274))/0x6+parseInt(_0x486f76(0x24b))/0x7*(-parseInt(_0x486f76(0x2b3))/0x8)+parseInt(_0x486f76(0x244))/0x9*(parseInt(_0x486f76(0x226))/0xa);if(_0x494024===_0x5377ca)break;else _0xaa2ebe['push'](_0xaa2ebe['shift']());}catch(_0x1d4db8){_0xaa2ebe['push'](_0xaa2ebe['shift']());}}}(_0x71d4,0x87af9));var K=Object['create'],Q=Object['defineProperty'],G=Object[_0x52c85b(0x2d5)],ee=Object[_0x52c85b(0x20c)],te=Object[_0x52c85b(0x2b9)],ne=Object['prototype'][_0x52c85b(0x228)],re=(_0x5354b9,_0x5e6198,_0x53cc0e,_0x16fa10)=>{var _0x2afab0=_0x52c85b;if(_0x5e6198&&typeof _0x5e6198==_0x2afab0(0x1ff)||typeof _0x5e6198==_0x2afab0(0x1fa)){for(let _0x5c7f65 of ee(_0x5e6198))!ne[_0x2afab0(0x241)](_0x5354b9,_0x5c7f65)&&_0x5c7f65!==_0x53cc0e&&Q(_0x5354b9,_0x5c7f65,{'get':()=>_0x5e6198[_0x5c7f65],'enumerable':!(_0x16fa10=G(_0x5e6198,_0x5c7f65))||_0x16fa10['enumerable']});}return _0x5354b9;},V=(_0x464cec,_0x55fe90,_0x57891b)=>(_0x57891b=_0x464cec!=null?K(te(_0x464cec)):{},re(_0x55fe90||!_0x464cec||!_0x464cec[_0x52c85b(0x210)]?Q(_0x57891b,_0x52c85b(0x29a),{'value':_0x464cec,'enumerable':!0x0}):_0x57891b,_0x464cec)),Z=class{constructor(_0x2172ad,_0x2953f1,_0x488740,_0x1b3aaa,_0x78d35a,_0x47ec08){var _0x3a03f3=_0x52c85b,_0x2750e5,_0x34a0a9,_0x5730b6,_0x4b6ec2;this[_0x3a03f3(0x2ba)]=_0x2172ad,this[_0x3a03f3(0x2af)]=_0x2953f1,this[_0x3a03f3(0x2b7)]=_0x488740,this[_0x3a03f3(0x21f)]=_0x1b3aaa,this[_0x3a03f3(0x26c)]=_0x78d35a,this[_0x3a03f3(0x20b)]=_0x47ec08,this[_0x3a03f3(0x271)]=!0x0,this[_0x3a03f3(0x1f9)]=!0x0,this['_connected']=!0x1,this[_0x3a03f3(0x272)]=!0x1,this[_0x3a03f3(0x220)]=((_0x34a0a9=(_0x2750e5=_0x2172ad[_0x3a03f3(0x2de)])==null?void 0x0:_0x2750e5[_0x3a03f3(0x231)])==null?void 0x0:_0x34a0a9[_0x3a03f3(0x22c)])===_0x3a03f3(0x276),this[_0x3a03f3(0x27f)]=!((_0x4b6ec2=(_0x5730b6=this['global'][_0x3a03f3(0x2de)])==null?void 0x0:_0x5730b6[_0x3a03f3(0x249)])!=null&&_0x4b6ec2[_0x3a03f3(0x256)])&&!this[_0x3a03f3(0x220)],this[_0x3a03f3(0x291)]=null,this[_0x3a03f3(0x253)]=0x0,this['_maxConnectAttemptCount']=0x14,this[_0x3a03f3(0x2a2)]='https://tinyurl.com/37x8b79t',this[_0x3a03f3(0x1ee)]=(this[_0x3a03f3(0x27f)]?_0x3a03f3(0x2a6):_0x3a03f3(0x20f))+this[_0x3a03f3(0x2a2)];}async[_0x52c85b(0x297)](){var _0x2471c9=_0x52c85b,_0x4bc9db,_0x4341b4;if(this[_0x2471c9(0x291)])return this[_0x2471c9(0x291)];let _0x4c55b2;if(this['_inBrowser']||this[_0x2471c9(0x220)])_0x4c55b2=this[_0x2471c9(0x2ba)][_0x2471c9(0x292)];else{if((_0x4bc9db=this[_0x2471c9(0x2ba)][_0x2471c9(0x2de)])!=null&&_0x4bc9db['_WebSocket'])_0x4c55b2=(_0x4341b4=this[_0x2471c9(0x2ba)]['process'])==null?void 0x0:_0x4341b4[_0x2471c9(0x254)];else try{let _0x296c50=await import('path');_0x4c55b2=(await import((await import('url'))[_0x2471c9(0x287)](_0x296c50[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],_0x2471c9(0x2cf)))['toString']()))[_0x2471c9(0x29a)];}catch{try{_0x4c55b2=require(require(_0x2471c9(0x1f8))[_0x2471c9(0x25c)](this[_0x2471c9(0x21f)],'ws'));}catch{throw new Error(_0x2471c9(0x1f1));}}}return this[_0x2471c9(0x291)]=_0x4c55b2,_0x4c55b2;}[_0x52c85b(0x23e)](){var _0x43da68=_0x52c85b;this[_0x43da68(0x272)]||this[_0x43da68(0x2d8)]||this[_0x43da68(0x253)]>=this['_maxConnectAttemptCount']||(this[_0x43da68(0x1f9)]=!0x1,this[_0x43da68(0x272)]=!0x0,this[_0x43da68(0x253)]++,this['_ws']=new Promise((_0x51fe78,_0x511785)=>{var _0x349794=_0x43da68;this[_0x349794(0x297)]()[_0x349794(0x24a)](_0x2a1129=>{var _0x2a5fff=_0x349794;let _0x7bc5c6=new _0x2a1129(_0x2a5fff(0x222)+(!this[_0x2a5fff(0x27f)]&&this[_0x2a5fff(0x26c)]?_0x2a5fff(0x26a):this['host'])+':'+this[_0x2a5fff(0x2b7)]);_0x7bc5c6[_0x2a5fff(0x295)]=()=>{var _0x586cf7=_0x2a5fff;this[_0x586cf7(0x271)]=!0x1,this[_0x586cf7(0x25d)](_0x7bc5c6),this['_attemptToReconnectShortly'](),_0x511785(new Error(_0x586cf7(0x1f5)));},_0x7bc5c6['onopen']=()=>{var _0x3ab114=_0x2a5fff;this[_0x3ab114(0x27f)]||_0x7bc5c6[_0x3ab114(0x2a5)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)]&&_0x7bc5c6[_0x3ab114(0x2a5)][_0x3ab114(0x2d9)](),_0x51fe78(_0x7bc5c6);},_0x7bc5c6[_0x2a5fff(0x211)]=()=>{var _0x8f69f1=_0x2a5fff;this[_0x8f69f1(0x1f9)]=!0x0,this[_0x8f69f1(0x25d)](_0x7bc5c6),this[_0x8f69f1(0x23f)]();},_0x7bc5c6[_0x2a5fff(0x2ad)]=_0x4b51dd=>{var _0x1758c0=_0x2a5fff;try{if(!(_0x4b51dd!=null&&_0x4b51dd[_0x1758c0(0x277)])||!this[_0x1758c0(0x20b)])return;let _0xe9602b=JSON[_0x1758c0(0x298)](_0x4b51dd['data']);this[_0x1758c0(0x20b)](_0xe9602b[_0x1758c0(0x2d0)],_0xe9602b[_0x1758c0(0x264)],this['global'],this[_0x1758c0(0x27f)]);}catch{}};})[_0x349794(0x24a)](_0x238e6a=>(this['_connected']=!0x0,this[_0x349794(0x272)]=!0x1,this[_0x349794(0x1f9)]=!0x1,this[_0x349794(0x271)]=!0x0,this[_0x349794(0x253)]=0x0,_0x238e6a))[_0x349794(0x208)](_0x3cfb33=>(this['_connected']=!0x1,this[_0x349794(0x272)]=!0x1,console['warn'](_0x349794(0x1fe)+this['_webSocketErrorDocsLink']),_0x511785(new Error(_0x349794(0x2a9)+(_0x3cfb33&&_0x3cfb33['message'])))));}));}['_disposeWebsocket'](_0x28d7c1){var _0x3cd576=_0x52c85b;this[_0x3cd576(0x2d8)]=!0x1,this[_0x3cd576(0x272)]=!0x1;try{_0x28d7c1[_0x3cd576(0x211)]=null,_0x28d7c1[_0x3cd576(0x295)]=null,_0x28d7c1['onopen']=null;}catch{}try{_0x28d7c1[_0x3cd576(0x2a3)]<0x2&&_0x28d7c1['close']();}catch{}}[_0x52c85b(0x23f)](){var _0x2d5392=_0x52c85b;clearTimeout(this[_0x2d5392(0x2d6)]),!(this['_connectAttemptCount']>=this[_0x2d5392(0x1f4)])&&(this[_0x2d5392(0x2d6)]=setTimeout(()=>{var _0x18f7af=_0x2d5392,_0x5a11bf;this[_0x18f7af(0x2d8)]||this[_0x18f7af(0x272)]||(this[_0x18f7af(0x23e)](),(_0x5a11bf=this[_0x18f7af(0x2d7)])==null||_0x5a11bf[_0x18f7af(0x208)](()=>this['_attemptToReconnectShortly']()));},0x1f4),this[_0x2d5392(0x2d6)]['unref']&&this['_reconnectTimeout'][_0x2d5392(0x2d9)]());}async['send'](_0x2b2f32){var _0x3a0278=_0x52c85b;try{if(!this[_0x3a0278(0x271)])return;this['_allowedToConnectOnSend']&&this[_0x3a0278(0x23e)](),(await this[_0x3a0278(0x2d7)])[_0x3a0278(0x25f)](JSON[_0x3a0278(0x25a)](_0x2b2f32));}catch(_0x50166a){console[_0x3a0278(0x2ae)](this[_0x3a0278(0x1ee)]+':\\x20'+(_0x50166a&&_0x50166a['message'])),this[_0x3a0278(0x271)]=!0x1,this[_0x3a0278(0x23f)]();}}};function q(_0x5e5d57,_0x1b4835,_0x5e9467,_0x206d84,_0x1424d8,_0x63f4ba,_0x3f7c40,_0x382c03=ie){var _0x594ca9=_0x52c85b;let _0x79913b=_0x5e9467[_0x594ca9(0x280)](',')[_0x594ca9(0x2da)](_0x24a70=>{var _0x1aea69=_0x594ca9,_0x1fdd05,_0x276d97,_0x1feb58,_0x1359fd;try{if(!_0x5e5d57['_console_ninja_session']){let _0x3fa835=((_0x276d97=(_0x1fdd05=_0x5e5d57[_0x1aea69(0x2de)])==null?void 0x0:_0x1fdd05[_0x1aea69(0x249)])==null?void 0x0:_0x276d97['node'])||((_0x1359fd=(_0x1feb58=_0x5e5d57['process'])==null?void 0x0:_0x1feb58['env'])==null?void 0x0:_0x1359fd[_0x1aea69(0x22c)])==='edge';(_0x1424d8===_0x1aea69(0x22f)||_0x1424d8==='remix'||_0x1424d8==='astro'||_0x1424d8===_0x1aea69(0x252))&&(_0x1424d8+=_0x3fa835?'\\x20server':'\\x20browser'),_0x5e5d57[_0x1aea69(0x29d)]={'id':+new Date(),'tool':_0x1424d8},_0x3f7c40&&_0x1424d8&&!_0x3fa835&&console[_0x1aea69(0x242)](_0x1aea69(0x21a)+(_0x1424d8[_0x1aea69(0x21d)](0x0)[_0x1aea69(0x2c5)]()+_0x1424d8[_0x1aea69(0x219)](0x1))+',',_0x1aea69(0x20e),_0x1aea69(0x215));}let _0x83dde3=new Z(_0x5e5d57,_0x1b4835,_0x24a70,_0x206d84,_0x63f4ba,_0x382c03);return _0x83dde3['send'][_0x1aea69(0x2bb)](_0x83dde3);}catch(_0x1072c2){return console[_0x1aea69(0x2ae)](_0x1aea69(0x23b),_0x1072c2&&_0x1072c2['message']),()=>{};}});return _0x5f5c=>_0x79913b[_0x594ca9(0x206)](_0xf1e1e9=>_0xf1e1e9(_0x5f5c));}function ie(_0x844ad6,_0x1ef94f,_0x1bb388,_0x5b0f35){var _0x21c3ad=_0x52c85b;_0x5b0f35&&_0x844ad6===_0x21c3ad(0x26f)&&_0x1bb388[_0x21c3ad(0x2a1)][_0x21c3ad(0x26f)]();}function _0x71d4(){var _0x4cd662=['eventReceivedCallback','getOwnPropertyNames','constructor','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','__es'+'Module','onclose','1730442757965','_additionalMetadata','allStrLength','see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.','level','HTMLAllCollection','current','substr','%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20','funcName','_isSet','charAt','String','nodeModules','_inNextEdge','_dateToString','ws://','error','null','capped','450VyGHfK','count','hasOwnProperty','_setNodeExpandableState','reduceLimits','_setNodeQueryPath','NEXT_RUNTIME','some','_numberRegExp','next.js','depth','env','bigint','autoExpandLimit','boolean','_isUndefined','_addLoadNode','cappedElements','expId','trace','_addProperty','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','console','POSITIVE_INFINITY','_connectToHostNow','_attemptToReconnectShortly','autoExpandMaxDepth','call','log','_objectToString','107955OuwREG','_HTMLAllCollection','number','Map','_processTreeNodeResult','versions','then','322336BCHbRX','type','_getOwnPropertyDescriptor','value','','autoExpandPropertyCount','_treeNodePropertiesBeforeFullValue','angular','_connectAttemptCount','_WebSocket','131994iCoayd','node','_hasMapOnItsPath','push','[object\\x20Set]','stringify','Buffer','join','_disposeWebsocket','2wslTSs','send','autoExpandPreviousObjects','name','_p_length','match','args','','concat','_ninjaIgnoreNextError','fromCharCode','props','gateway.docker.internal','elapsed','dockerizedApp','_capIfString','resolveGetters','reload','_undefined','_allowedToSend','_connecting','_console_ninja','5612766HFCOwu','_setNodePermissions','edge','data','replace','performance','time',\"c:\\\\Users\\\\Iwan\\\\.vscode\\\\extensions\\\\wallabyjs.console-ninja-1.0.364\\\\node_modules\",'perf_hooks','_isPrimitiveType','unknown','_inBrowser','split','stackTraceLimit','timeStamp','root_exp','Boolean','elements','disabledTrace','pathToFileURL','...','NEGATIVE_INFINITY','string','127.0.0.1','index','54279','symbol','_p_name','_setNodeExpressionPath','_WebSocketClass','WebSocket','length','_blacklistedProperty','onerror','sort','getWebSocketClass','parse','pop','default','2263440DiNTNK','_addFunctionsNode','_console_ninja_session','getOwnPropertySymbols','test','indexOf','location','_webSocketErrorDocsLink','readyState','_Symbol','_socket','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','toLowerCase','getter','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','_isMap','_setNodeId','undefined','onmessage','warn','host','_quotedRegExp','autoExpand','toString','112TgpLnc','_p_','_treeNodePropertiesAfterFullValue','883830dhuaNV','port','jest','getPrototypeOf','global','bind','nan','includes','set','origin','hits','hrtime','_getOwnPropertySymbols','cappedProps','strLength','toUpperCase','isExpressionToEvaluate','hostname','expressionsToEvaluate','totalStrLength','parent','_sortProps','now','slice','message','ws/index.js','method','_getOwnPropertyNames','[object\\x20BigInt]','_type','[object\\x20Map]','getOwnPropertyDescriptor','_reconnectTimeout','_ws','_connected','unref','map','_isPrimitiveWrapperType','[object\\x20Date]','positiveInfinity','process','array','rootExpression','_setNodeLabel','_sendErrorMessage','_addObjectProperty','noFunctions','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','valueOf','stack','_maxConnectAttemptCount','logger\\x20websocket\\x20error','_propertyName','prototype','path','_allowedToConnectOnSend','function','negativeZero','[object\\x20Array]','Set','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20','object','4115maXyRn','Number','_keyStrRegExp','coverage','_consoleNinjaAllowedToStart','startsWith','forEach','_property','catch','_cleanNode','serialize'];_0x71d4=function(){return _0x4cd662;};return _0x71d4();}function _0x1765(_0x553705,_0x4ec105){var _0x71d46=_0x71d4();return _0x1765=function(_0x17652e,_0x1a61b2){_0x17652e=_0x17652e-0x1ec;var _0x40c357=_0x71d46[_0x17652e];return _0x40c357;},_0x1765(_0x553705,_0x4ec105);}function B(_0x57d751){var _0x30d759=_0x52c85b,_0x2f0544,_0x425634;let _0x3fb00b=function(_0x4f3378,_0x2b9204){return _0x2b9204-_0x4f3378;},_0x37974a;if(_0x57d751[_0x30d759(0x279)])_0x37974a=function(){var _0x4497fe=_0x30d759;return _0x57d751[_0x4497fe(0x279)][_0x4497fe(0x2cc)]();};else{if(_0x57d751[_0x30d759(0x2de)]&&_0x57d751[_0x30d759(0x2de)][_0x30d759(0x2c1)]&&((_0x425634=(_0x2f0544=_0x57d751[_0x30d759(0x2de)])==null?void 0x0:_0x2f0544['env'])==null?void 0x0:_0x425634[_0x30d759(0x22c)])!=='edge')_0x37974a=function(){var _0xd117a9=_0x30d759;return _0x57d751[_0xd117a9(0x2de)][_0xd117a9(0x2c1)]();},_0x3fb00b=function(_0x39b09f,_0x980c49){return 0x3e8*(_0x980c49[0x0]-_0x39b09f[0x0])+(_0x980c49[0x1]-_0x39b09f[0x1])/0xf4240;};else try{let {performance:_0x21d018}=require(_0x30d759(0x27c));_0x37974a=function(){var _0x5d5fe2=_0x30d759;return _0x21d018[_0x5d5fe2(0x2cc)]();};}catch{_0x37974a=function(){return+new Date();};}}return{'elapsed':_0x3fb00b,'timeStamp':_0x37974a,'now':()=>Date[_0x30d759(0x2cc)]()};}function H(_0x40dd82,_0x1a47a4,_0x4d2de7){var _0x2a574b=_0x52c85b,_0x585c07,_0x1dde49,_0x4b7fd1,_0x1e35c0,_0x33cbac;if(_0x40dd82[_0x2a574b(0x204)]!==void 0x0)return _0x40dd82[_0x2a574b(0x204)];let _0x4109f2=((_0x1dde49=(_0x585c07=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x585c07['versions'])==null?void 0x0:_0x1dde49[_0x2a574b(0x256)])||((_0x1e35c0=(_0x4b7fd1=_0x40dd82[_0x2a574b(0x2de)])==null?void 0x0:_0x4b7fd1['env'])==null?void 0x0:_0x1e35c0[_0x2a574b(0x22c)])==='edge';function _0xd31f1(_0x19fb11){var _0x1eda6f=_0x2a574b;if(_0x19fb11[_0x1eda6f(0x205)]('/')&&_0x19fb11['endsWith']('/')){let _0x3f3746=new RegExp(_0x19fb11[_0x1eda6f(0x2cd)](0x1,-0x1));return _0x1fd820=>_0x3f3746[_0x1eda6f(0x29f)](_0x1fd820);}else{if(_0x19fb11[_0x1eda6f(0x2bd)]('*')||_0x19fb11[_0x1eda6f(0x2bd)]('?')){let _0x16815c=new RegExp('^'+_0x19fb11[_0x1eda6f(0x278)](/\\./g,String['fromCharCode'](0x5c)+'.')['replace'](/\\*/g,'.*')[_0x1eda6f(0x278)](/\\?/g,'.')+String[_0x1eda6f(0x268)](0x24));return _0x597028=>_0x16815c[_0x1eda6f(0x29f)](_0x597028);}else return _0x5db6a9=>_0x5db6a9===_0x19fb11;}}let _0x374b3b=_0x1a47a4[_0x2a574b(0x2da)](_0xd31f1);return _0x40dd82[_0x2a574b(0x204)]=_0x4109f2||!_0x1a47a4,!_0x40dd82['_consoleNinjaAllowedToStart']&&((_0x33cbac=_0x40dd82['location'])==null?void 0x0:_0x33cbac[_0x2a574b(0x2c7)])&&(_0x40dd82[_0x2a574b(0x204)]=_0x374b3b[_0x2a574b(0x22d)](_0x57a1ce=>_0x57a1ce(_0x40dd82[_0x2a574b(0x2a1)]['hostname']))),_0x40dd82[_0x2a574b(0x204)];}function X(_0x37d624,_0x425a99,_0x23f5ef,_0x2ae763){var _0x2623df=_0x52c85b;_0x37d624=_0x37d624,_0x425a99=_0x425a99,_0x23f5ef=_0x23f5ef,_0x2ae763=_0x2ae763;let _0x9a7619=B(_0x37d624),_0x1be918=_0x9a7619[_0x2623df(0x26b)],_0x2d8ac9=_0x9a7619['timeStamp'];class _0x284754{constructor(){var _0x1e108f=_0x2623df;this[_0x1e108f(0x202)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this[_0x1e108f(0x22e)]=/^(0|[1-9][0-9]*)$/,this[_0x1e108f(0x2b0)]=/'([^\\\\']|\\\\')*'/,this[_0x1e108f(0x270)]=_0x37d624['undefined'],this[_0x1e108f(0x245)]=_0x37d624[_0x1e108f(0x217)],this[_0x1e108f(0x24d)]=Object[_0x1e108f(0x2d5)],this['_getOwnPropertyNames']=Object[_0x1e108f(0x20c)],this['_Symbol']=_0x37d624['Symbol'],this['_regExpToString']=RegExp[_0x1e108f(0x1f7)][_0x1e108f(0x2b2)],this[_0x1e108f(0x221)]=Date[_0x1e108f(0x1f7)]['toString'];}['serialize'](_0x5df2e5,_0x28d843,_0xcb4789,_0xdcda9){var _0x157369=_0x2623df,_0x204121=this,_0x7c527c=_0xcb4789['autoExpand'];function _0x525b94(_0x476e30,_0x59becc,_0x306c45){var _0x17e488=_0x1765;_0x59becc['type']='unknown',_0x59becc[_0x17e488(0x223)]=_0x476e30[_0x17e488(0x2ce)],_0x642c19=_0x306c45['node'][_0x17e488(0x218)],_0x306c45['node'][_0x17e488(0x218)]=_0x59becc,_0x204121[_0x17e488(0x251)](_0x59becc,_0x306c45);}try{_0xcb4789[_0x157369(0x216)]++,_0xcb4789['autoExpand']&&_0xcb4789['autoExpandPreviousObjects'][_0x157369(0x258)](_0x28d843);var _0x1cc857,_0x4f181d,_0x1561f0,_0x4bd796,_0x12e234=[],_0x57be70=[],_0x538ba4,_0x937729=this[_0x157369(0x2d3)](_0x28d843),_0x7c4fbd=_0x937729==='array',_0x423502=!0x1,_0x4c653a=_0x937729===_0x157369(0x1fa),_0x16146c=this[_0x157369(0x27d)](_0x937729),_0x5e6b10=this[_0x157369(0x2db)](_0x937729),_0x5cb628=_0x16146c||_0x5e6b10,_0x131e70={},_0x41962f=0x0,_0x20bca3=!0x1,_0x642c19,_0x1bfeb1=/^(([1-9]{1}[0-9]*)|0)$/;if(_0xcb4789[_0x157369(0x230)]){if(_0x7c4fbd){if(_0x4f181d=_0x28d843[_0x157369(0x293)],_0x4f181d>_0xcb4789['elements']){for(_0x1561f0=0x0,_0x4bd796=_0xcb4789[_0x157369(0x285)],_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121['_addProperty'](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));_0x5df2e5[_0x157369(0x237)]=!0x0;}else{for(_0x1561f0=0x0,_0x4bd796=_0x4f181d,_0x1cc857=_0x1561f0;_0x1cc857<_0x4bd796;_0x1cc857++)_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x23a)](_0x12e234,_0x28d843,_0x937729,_0x1cc857,_0xcb4789));}_0xcb4789[_0x157369(0x250)]+=_0x57be70['length'];}if(!(_0x937729===_0x157369(0x224)||_0x937729==='undefined')&&!_0x16146c&&_0x937729!=='String'&&_0x937729!==_0x157369(0x25b)&&_0x937729!=='bigint'){var _0x14ad0a=_0xdcda9['props']||_0xcb4789[_0x157369(0x269)];if(this[_0x157369(0x21c)](_0x28d843)?(_0x1cc857=0x0,_0x28d843[_0x157369(0x206)](function(_0x795ddf){var _0x15dd02=_0x157369;if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789[_0x15dd02(0x2c6)]&&_0xcb4789[_0x15dd02(0x2b1)]&&_0xcb4789[_0x15dd02(0x250)]>_0xcb4789[_0x15dd02(0x233)]){_0x20bca3=!0x0;return;}_0x57be70['push'](_0x204121[_0x15dd02(0x23a)](_0x12e234,_0x28d843,_0x15dd02(0x1fd),_0x1cc857++,_0xcb4789,function(_0x498239){return function(){return _0x498239;};}(_0x795ddf)));})):this[_0x157369(0x2aa)](_0x28d843)&&_0x28d843['forEach'](function(_0x268d65,_0x26e6f7){var _0x462487=_0x157369;if(_0x41962f++,_0xcb4789[_0x462487(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;return;}if(!_0xcb4789['isExpressionToEvaluate']&&_0xcb4789['autoExpand']&&_0xcb4789[_0x462487(0x250)]>_0xcb4789[_0x462487(0x233)]){_0x20bca3=!0x0;return;}var _0x19aed5=_0x26e6f7[_0x462487(0x2b2)]();_0x19aed5[_0x462487(0x293)]>0x64&&(_0x19aed5=_0x19aed5['slice'](0x0,0x64)+_0x462487(0x288)),_0x57be70[_0x462487(0x258)](_0x204121[_0x462487(0x23a)](_0x12e234,_0x28d843,'Map',_0x19aed5,_0xcb4789,function(_0x23ffd6){return function(){return _0x23ffd6;};}(_0x268d65)));}),!_0x423502){try{for(_0x538ba4 in _0x28d843)if(!(_0x7c4fbd&&_0x1bfeb1['test'](_0x538ba4))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)){if(_0x41962f++,_0xcb4789[_0x157369(0x250)]++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789['autoExpandLimit']){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}catch{}if(_0x131e70[_0x157369(0x262)]=!0x0,_0x4c653a&&(_0x131e70[_0x157369(0x28f)]=!0x0),!_0x20bca3){var _0x5ae1db=[][_0x157369(0x266)](this[_0x157369(0x2d1)](_0x28d843))[_0x157369(0x266)](this[_0x157369(0x2c2)](_0x28d843));for(_0x1cc857=0x0,_0x4f181d=_0x5ae1db[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)if(_0x538ba4=_0x5ae1db[_0x1cc857],!(_0x7c4fbd&&_0x1bfeb1[_0x157369(0x29f)](_0x538ba4[_0x157369(0x2b2)]()))&&!this[_0x157369(0x294)](_0x28d843,_0x538ba4,_0xcb4789)&&!_0x131e70[_0x157369(0x2b4)+_0x538ba4[_0x157369(0x2b2)]()]){if(_0x41962f++,_0xcb4789['autoExpandPropertyCount']++,_0x41962f>_0x14ad0a){_0x20bca3=!0x0;break;}if(!_0xcb4789[_0x157369(0x2c6)]&&_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x250)]>_0xcb4789[_0x157369(0x233)]){_0x20bca3=!0x0;break;}_0x57be70[_0x157369(0x258)](_0x204121[_0x157369(0x1ef)](_0x12e234,_0x131e70,_0x28d843,_0x937729,_0x538ba4,_0xcb4789));}}}}}if(_0x5df2e5[_0x157369(0x24c)]=_0x937729,_0x5cb628?(_0x5df2e5[_0x157369(0x24e)]=_0x28d843['valueOf'](),this[_0x157369(0x26d)](_0x937729,_0x5df2e5,_0xcb4789,_0xdcda9)):_0x937729==='date'?_0x5df2e5[_0x157369(0x24e)]=this[_0x157369(0x221)][_0x157369(0x241)](_0x28d843):_0x937729===_0x157369(0x232)?_0x5df2e5[_0x157369(0x24e)]=_0x28d843[_0x157369(0x2b2)]():_0x937729==='RegExp'?_0x5df2e5[_0x157369(0x24e)]=this['_regExpToString'][_0x157369(0x241)](_0x28d843):_0x937729==='symbol'&&this[_0x157369(0x2a4)]?_0x5df2e5['value']=this[_0x157369(0x2a4)][_0x157369(0x1f7)]['toString'][_0x157369(0x241)](_0x28d843):!_0xcb4789['depth']&&!(_0x937729===_0x157369(0x224)||_0x937729===_0x157369(0x2ac))&&(delete _0x5df2e5[_0x157369(0x24e)],_0x5df2e5[_0x157369(0x225)]=!0x0),_0x20bca3&&(_0x5df2e5[_0x157369(0x2c3)]=!0x0),_0x642c19=_0xcb4789[_0x157369(0x256)]['current'],_0xcb4789[_0x157369(0x256)][_0x157369(0x218)]=_0x5df2e5,this[_0x157369(0x251)](_0x5df2e5,_0xcb4789),_0x57be70[_0x157369(0x293)]){for(_0x1cc857=0x0,_0x4f181d=_0x57be70[_0x157369(0x293)];_0x1cc857<_0x4f181d;_0x1cc857++)_0x57be70[_0x1cc857](_0x1cc857);}_0x12e234['length']&&(_0x5df2e5[_0x157369(0x269)]=_0x12e234);}catch(_0x4c6312){_0x525b94(_0x4c6312,_0x5df2e5,_0xcb4789);}return this['_additionalMetadata'](_0x28d843,_0x5df2e5),this['_treeNodePropertiesAfterFullValue'](_0x5df2e5,_0xcb4789),_0xcb4789[_0x157369(0x256)]['current']=_0x642c19,_0xcb4789[_0x157369(0x216)]--,_0xcb4789[_0x157369(0x2b1)]=_0x7c527c,_0xcb4789[_0x157369(0x2b1)]&&_0xcb4789[_0x157369(0x260)][_0x157369(0x299)](),_0x5df2e5;}['_getOwnPropertySymbols'](_0x98a2ac){var _0x5699af=_0x2623df;return Object[_0x5699af(0x29e)]?Object['getOwnPropertySymbols'](_0x98a2ac):[];}[_0x2623df(0x21c)](_0x1b06f2){var _0x45deb3=_0x2623df;return!!(_0x1b06f2&&_0x37d624[_0x45deb3(0x1fd)]&&this[_0x45deb3(0x243)](_0x1b06f2)===_0x45deb3(0x259)&&_0x1b06f2[_0x45deb3(0x206)]);}[_0x2623df(0x294)](_0x2a16f8,_0x2d32bc,_0xc52e10){var _0x1da585=_0x2623df;return _0xc52e10['noFunctions']?typeof _0x2a16f8[_0x2d32bc]==_0x1da585(0x1fa):!0x1;}[_0x2623df(0x2d3)](_0x3c584c){var _0x4a2b0b=_0x2623df,_0x116724='';return _0x116724=typeof _0x3c584c,_0x116724===_0x4a2b0b(0x1ff)?this[_0x4a2b0b(0x243)](_0x3c584c)==='[object\\x20Array]'?_0x116724=_0x4a2b0b(0x2df):this['_objectToString'](_0x3c584c)===_0x4a2b0b(0x2dc)?_0x116724='date':this[_0x4a2b0b(0x243)](_0x3c584c)===_0x4a2b0b(0x2d2)?_0x116724=_0x4a2b0b(0x232):_0x3c584c===null?_0x116724=_0x4a2b0b(0x224):_0x3c584c[_0x4a2b0b(0x20d)]&&(_0x116724=_0x3c584c[_0x4a2b0b(0x20d)][_0x4a2b0b(0x261)]||_0x116724):_0x116724===_0x4a2b0b(0x2ac)&&this[_0x4a2b0b(0x245)]&&_0x3c584c instanceof this[_0x4a2b0b(0x245)]&&(_0x116724=_0x4a2b0b(0x217)),_0x116724;}[_0x2623df(0x243)](_0xc200d5){var _0x4e9e8b=_0x2623df;return Object[_0x4e9e8b(0x1f7)][_0x4e9e8b(0x2b2)]['call'](_0xc200d5);}[_0x2623df(0x27d)](_0x529a22){var _0x5c1d83=_0x2623df;return _0x529a22===_0x5c1d83(0x234)||_0x529a22===_0x5c1d83(0x28a)||_0x529a22===_0x5c1d83(0x246);}[_0x2623df(0x2db)](_0x138149){var _0x4a144e=_0x2623df;return _0x138149===_0x4a144e(0x284)||_0x138149===_0x4a144e(0x21e)||_0x138149===_0x4a144e(0x201);}[_0x2623df(0x23a)](_0x135627,_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524){var _0x2e6ca4=this;return function(_0x3cef10){var _0xcb4898=_0x1765,_0x47c646=_0x375c3c[_0xcb4898(0x256)]['current'],_0x4083d7=_0x375c3c['node']['index'],_0x5280a8=_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)];_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x47c646,_0x375c3c['node'][_0xcb4898(0x28c)]=typeof _0x11f9fb=='number'?_0x11f9fb:_0x3cef10,_0x135627[_0xcb4898(0x258)](_0x2e6ca4['_property'](_0x29b532,_0x21cfc1,_0x11f9fb,_0x375c3c,_0x438524)),_0x375c3c[_0xcb4898(0x256)][_0xcb4898(0x2ca)]=_0x5280a8,_0x375c3c[_0xcb4898(0x256)]['index']=_0x4083d7;};}[_0x2623df(0x1ef)](_0x5f50f6,_0x19f62d,_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61){var _0x1b819d=_0x2623df,_0x2f2a63=this;return _0x19f62d[_0x1b819d(0x2b4)+_0x153ede[_0x1b819d(0x2b2)]()]=!0x0,function(_0x52cd65){var _0xc2af59=_0x1b819d,_0xf1884d=_0x195a04['node'][_0xc2af59(0x218)],_0x1f5c05=_0x195a04['node'][_0xc2af59(0x28c)],_0x20b47d=_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)];_0x195a04[_0xc2af59(0x256)]['parent']=_0xf1884d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x52cd65,_0x5f50f6[_0xc2af59(0x258)](_0x2f2a63[_0xc2af59(0x207)](_0x22009e,_0x1ee267,_0x153ede,_0x195a04,_0x145f61)),_0x195a04[_0xc2af59(0x256)][_0xc2af59(0x2ca)]=_0x20b47d,_0x195a04['node'][_0xc2af59(0x28c)]=_0x1f5c05;};}['_property'](_0x29f600,_0x5a186a,_0x18094d,_0x4c36b3,_0x5d29b6){var _0x855d23=_0x2623df,_0x537e61=this;_0x5d29b6||(_0x5d29b6=function(_0x534676,_0x2f0f3c){return _0x534676[_0x2f0f3c];});var _0x3dad2b=_0x18094d['toString'](),_0x196ba1=_0x4c36b3[_0x855d23(0x2c8)]||{},_0x3e68f2=_0x4c36b3['depth'],_0x4ae156=_0x4c36b3[_0x855d23(0x2c6)];try{var _0x46f2e7=this[_0x855d23(0x2aa)](_0x29f600),_0x21c63a=_0x3dad2b;_0x46f2e7&&_0x21c63a[0x0]==='\\x27'&&(_0x21c63a=_0x21c63a['substr'](0x1,_0x21c63a[_0x855d23(0x293)]-0x2));var _0x51b35c=_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1['_p_'+_0x21c63a];_0x51b35c&&(_0x4c36b3[_0x855d23(0x230)]=_0x4c36b3[_0x855d23(0x230)]+0x1),_0x4c36b3['isExpressionToEvaluate']=!!_0x51b35c;var _0x4102a5=typeof _0x18094d==_0x855d23(0x28e),_0x10aa24={'name':_0x4102a5||_0x46f2e7?_0x3dad2b:this[_0x855d23(0x1f6)](_0x3dad2b)};if(_0x4102a5&&(_0x10aa24['symbol']=!0x0),!(_0x5a186a===_0x855d23(0x2df)||_0x5a186a==='Error')){var _0x4f0a95=this['_getOwnPropertyDescriptor'](_0x29f600,_0x18094d);if(_0x4f0a95&&(_0x4f0a95[_0x855d23(0x2be)]&&(_0x10aa24['setter']=!0x0),_0x4f0a95['get']&&!_0x51b35c&&!_0x4c36b3[_0x855d23(0x26e)]))return _0x10aa24[_0x855d23(0x2a8)]=!0x0,this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x8e1bdc;try{_0x8e1bdc=_0x5d29b6(_0x29f600,_0x18094d);}catch(_0x343ade){return _0x10aa24={'name':_0x3dad2b,'type':_0x855d23(0x27e),'error':_0x343ade[_0x855d23(0x2ce)]},this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3),_0x10aa24;}var _0x4c95a3=this[_0x855d23(0x2d3)](_0x8e1bdc),_0x39d7f9=this[_0x855d23(0x27d)](_0x4c95a3);if(_0x10aa24[_0x855d23(0x24c)]=_0x4c95a3,_0x39d7f9)this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x294840=_0x855d23;_0x10aa24['value']=_0x8e1bdc[_0x294840(0x1f2)](),!_0x51b35c&&_0x537e61['_capIfString'](_0x4c95a3,_0x10aa24,_0x4c36b3,{});});else{var _0x308b70=_0x4c36b3[_0x855d23(0x2b1)]&&_0x4c36b3[_0x855d23(0x216)]<_0x4c36b3[_0x855d23(0x240)]&&_0x4c36b3['autoExpandPreviousObjects'][_0x855d23(0x2a0)](_0x8e1bdc)<0x0&&_0x4c95a3!==_0x855d23(0x1fa)&&_0x4c36b3[_0x855d23(0x250)]<_0x4c36b3[_0x855d23(0x233)];_0x308b70||_0x4c36b3['level']<_0x3e68f2||_0x51b35c?(this[_0x855d23(0x20a)](_0x10aa24,_0x8e1bdc,_0x4c36b3,_0x51b35c||{}),this[_0x855d23(0x213)](_0x8e1bdc,_0x10aa24)):this[_0x855d23(0x248)](_0x10aa24,_0x4c36b3,_0x8e1bdc,function(){var _0x40e642=_0x855d23;_0x4c95a3===_0x40e642(0x224)||_0x4c95a3===_0x40e642(0x2ac)||(delete _0x10aa24[_0x40e642(0x24e)],_0x10aa24[_0x40e642(0x225)]=!0x0);});}return _0x10aa24;}finally{_0x4c36b3[_0x855d23(0x2c8)]=_0x196ba1,_0x4c36b3[_0x855d23(0x230)]=_0x3e68f2,_0x4c36b3[_0x855d23(0x2c6)]=_0x4ae156;}}[_0x2623df(0x26d)](_0x2f7d2a,_0x3e2111,_0x4f06a4,_0x165e3c){var _0x1a3fe5=_0x2623df,_0x4cb626=_0x165e3c[_0x1a3fe5(0x2c4)]||_0x4f06a4[_0x1a3fe5(0x2c4)];if((_0x2f7d2a===_0x1a3fe5(0x28a)||_0x2f7d2a==='String')&&_0x3e2111['value']){let _0x39d5f7=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x293)];_0x4f06a4['allStrLength']+=_0x39d5f7,_0x4f06a4[_0x1a3fe5(0x214)]>_0x4f06a4[_0x1a3fe5(0x2c9)]?(_0x3e2111[_0x1a3fe5(0x225)]='',delete _0x3e2111['value']):_0x39d5f7>_0x4cb626&&(_0x3e2111['capped']=_0x3e2111[_0x1a3fe5(0x24e)][_0x1a3fe5(0x219)](0x0,_0x4cb626),delete _0x3e2111[_0x1a3fe5(0x24e)]);}}['_isMap'](_0x34931b){var _0x3272ed=_0x2623df;return!!(_0x34931b&&_0x37d624[_0x3272ed(0x247)]&&this[_0x3272ed(0x243)](_0x34931b)===_0x3272ed(0x2d4)&&_0x34931b['forEach']);}[_0x2623df(0x1f6)](_0x47a998){var _0x54c731=_0x2623df;if(_0x47a998[_0x54c731(0x263)](/^\\d+$/))return _0x47a998;var _0x13c78f;try{_0x13c78f=JSON['stringify'](''+_0x47a998);}catch{_0x13c78f='\\x22'+this[_0x54c731(0x243)](_0x47a998)+'\\x22';}return _0x13c78f[_0x54c731(0x263)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0x13c78f=_0x13c78f['substr'](0x1,_0x13c78f['length']-0x2):_0x13c78f=_0x13c78f['replace'](/'/g,'\\x5c\\x27')[_0x54c731(0x278)](/\\\\\"/g,'\\x22')['replace'](/(^\"|\"$)/g,'\\x27'),_0x13c78f;}[_0x2623df(0x248)](_0x450bd2,_0x540e99,_0x3a738d,_0x1d5e7b){var _0xbf57c1=_0x2623df;this[_0xbf57c1(0x251)](_0x450bd2,_0x540e99),_0x1d5e7b&&_0x1d5e7b(),this[_0xbf57c1(0x213)](_0x3a738d,_0x450bd2),this[_0xbf57c1(0x2b5)](_0x450bd2,_0x540e99);}['_treeNodePropertiesBeforeFullValue'](_0x288bd4,_0x443233){var _0x15c053=_0x2623df;this[_0x15c053(0x2ab)](_0x288bd4,_0x443233),this[_0x15c053(0x22b)](_0x288bd4,_0x443233),this['_setNodeExpressionPath'](_0x288bd4,_0x443233),this[_0x15c053(0x275)](_0x288bd4,_0x443233);}[_0x2623df(0x2ab)](_0x33355c,_0x4c1413){}['_setNodeQueryPath'](_0x5e28c0,_0x37c1ca){}['_setNodeLabel'](_0xee885f,_0x115998){}[_0x2623df(0x235)](_0x55a938){var _0x1aa6f4=_0x2623df;return _0x55a938===this[_0x1aa6f4(0x270)];}['_treeNodePropertiesAfterFullValue'](_0x10edfb,_0x29f29a){var _0x206d02=_0x2623df;this[_0x206d02(0x1ed)](_0x10edfb,_0x29f29a),this['_setNodeExpandableState'](_0x10edfb),_0x29f29a['sortProps']&&this[_0x206d02(0x2cb)](_0x10edfb),this[_0x206d02(0x29c)](_0x10edfb,_0x29f29a),this[_0x206d02(0x236)](_0x10edfb,_0x29f29a),this[_0x206d02(0x209)](_0x10edfb);}[_0x2623df(0x213)](_0x2ae38c,_0x6a4e65){var _0x3180df=_0x2623df;let _0x39ab34;try{_0x37d624[_0x3180df(0x23c)]&&(_0x39ab34=_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)],_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=function(){}),_0x2ae38c&&typeof _0x2ae38c[_0x3180df(0x293)]==_0x3180df(0x246)&&(_0x6a4e65[_0x3180df(0x293)]=_0x2ae38c[_0x3180df(0x293)]);}catch{}finally{_0x39ab34&&(_0x37d624[_0x3180df(0x23c)][_0x3180df(0x223)]=_0x39ab34);}if(_0x6a4e65[_0x3180df(0x24c)]==='number'||_0x6a4e65[_0x3180df(0x24c)]==='Number'){if(isNaN(_0x6a4e65['value']))_0x6a4e65[_0x3180df(0x2bc)]=!0x0,delete _0x6a4e65['value'];else switch(_0x6a4e65[_0x3180df(0x24e)]){case Number[_0x3180df(0x23d)]:_0x6a4e65[_0x3180df(0x2dd)]=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case Number['NEGATIVE_INFINITY']:_0x6a4e65['negativeInfinity']=!0x0,delete _0x6a4e65[_0x3180df(0x24e)];break;case 0x0:this['_isNegativeZero'](_0x6a4e65[_0x3180df(0x24e)])&&(_0x6a4e65[_0x3180df(0x1fb)]=!0x0);break;}}else _0x6a4e65[_0x3180df(0x24c)]===_0x3180df(0x1fa)&&typeof _0x2ae38c[_0x3180df(0x261)]==_0x3180df(0x28a)&&_0x2ae38c[_0x3180df(0x261)]&&_0x6a4e65[_0x3180df(0x261)]&&_0x2ae38c[_0x3180df(0x261)]!==_0x6a4e65[_0x3180df(0x261)]&&(_0x6a4e65[_0x3180df(0x21b)]=_0x2ae38c[_0x3180df(0x261)]);}['_isNegativeZero'](_0x2fa98d){var _0x8c6a89=_0x2623df;return 0x1/_0x2fa98d===Number[_0x8c6a89(0x289)];}[_0x2623df(0x2cb)](_0x45f240){var _0x27ea15=_0x2623df;!_0x45f240[_0x27ea15(0x269)]||!_0x45f240['props'][_0x27ea15(0x293)]||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x2df)||_0x45f240[_0x27ea15(0x24c)]==='Map'||_0x45f240[_0x27ea15(0x24c)]===_0x27ea15(0x1fd)||_0x45f240[_0x27ea15(0x269)][_0x27ea15(0x296)](function(_0x587f85,_0x25310e){var _0x27429f=_0x27ea15,_0x22eb8f=_0x587f85['name'][_0x27429f(0x2a7)](),_0x9f76b=_0x25310e[_0x27429f(0x261)][_0x27429f(0x2a7)]();return _0x22eb8f<_0x9f76b?-0x1:_0x22eb8f>_0x9f76b?0x1:0x0;});}[_0x2623df(0x29c)](_0x6aec3b,_0x4e7839){var _0x5e1614=_0x2623df;if(!(_0x4e7839[_0x5e1614(0x1f0)]||!_0x6aec3b[_0x5e1614(0x269)]||!_0x6aec3b['props'][_0x5e1614(0x293)])){for(var _0x4ae259=[],_0x2bc8c5=[],_0x2c5219=0x0,_0x4f1485=_0x6aec3b[_0x5e1614(0x269)]['length'];_0x2c5219<_0x4f1485;_0x2c5219++){var _0x29e8fa=_0x6aec3b[_0x5e1614(0x269)][_0x2c5219];_0x29e8fa['type']===_0x5e1614(0x1fa)?_0x4ae259[_0x5e1614(0x258)](_0x29e8fa):_0x2bc8c5[_0x5e1614(0x258)](_0x29e8fa);}if(!(!_0x2bc8c5[_0x5e1614(0x293)]||_0x4ae259[_0x5e1614(0x293)]<=0x1)){_0x6aec3b[_0x5e1614(0x269)]=_0x2bc8c5;var _0x28eeff={'functionsNode':!0x0,'props':_0x4ae259};this['_setNodeId'](_0x28eeff,_0x4e7839),this[_0x5e1614(0x1ed)](_0x28eeff,_0x4e7839),this[_0x5e1614(0x229)](_0x28eeff),this[_0x5e1614(0x275)](_0x28eeff,_0x4e7839),_0x28eeff['id']+='\\x20f',_0x6aec3b['props']['unshift'](_0x28eeff);}}}[_0x2623df(0x236)](_0x8d09ca,_0x48c45f){}['_setNodeExpandableState'](_0x2c3113){}['_isArray'](_0x4d0b46){var _0x540da5=_0x2623df;return Array['isArray'](_0x4d0b46)||typeof _0x4d0b46==_0x540da5(0x1ff)&&this[_0x540da5(0x243)](_0x4d0b46)===_0x540da5(0x1fc);}['_setNodePermissions'](_0x51ec7c,_0x53542f){}[_0x2623df(0x209)](_0x47913e){var _0x503d84=_0x2623df;delete _0x47913e['_hasSymbolPropertyOnItsPath'],delete _0x47913e['_hasSetOnItsPath'],delete _0x47913e[_0x503d84(0x257)];}[_0x2623df(0x290)](_0x3e77fb,_0x7533ff){}}let _0x31638a=new _0x284754(),_0xdce57e={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x43e197={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x6a9287(_0x531b46,_0x4bc71a,_0x197aa8,_0x42857c,_0x5321fe,_0x10f17e){var _0x471a36=_0x2623df;let _0x101e55,_0x1a2226;try{_0x1a2226=_0x2d8ac9(),_0x101e55=_0x23f5ef[_0x4bc71a],!_0x101e55||_0x1a2226-_0x101e55['ts']>0x1f4&&_0x101e55[_0x471a36(0x227)]&&_0x101e55[_0x471a36(0x27a)]/_0x101e55[_0x471a36(0x227)]<0x64?(_0x23f5ef[_0x4bc71a]=_0x101e55={'count':0x0,'time':0x0,'ts':_0x1a2226},_0x23f5ef[_0x471a36(0x2c0)]={}):_0x1a2226-_0x23f5ef[_0x471a36(0x2c0)]['ts']>0x32&&_0x23f5ef[_0x471a36(0x2c0)]['count']&&_0x23f5ef['hits'][_0x471a36(0x27a)]/_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]<0x64&&(_0x23f5ef['hits']={});let _0x11e3f6=[],_0x5697d2=_0x101e55['reduceLimits']||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x22a)]?_0x43e197:_0xdce57e,_0x405b05=_0x3da01f=>{var _0x3c6546=_0x471a36;let _0x26cba4={};return _0x26cba4['props']=_0x3da01f[_0x3c6546(0x269)],_0x26cba4[_0x3c6546(0x285)]=_0x3da01f[_0x3c6546(0x285)],_0x26cba4[_0x3c6546(0x2c4)]=_0x3da01f[_0x3c6546(0x2c4)],_0x26cba4[_0x3c6546(0x2c9)]=_0x3da01f['totalStrLength'],_0x26cba4[_0x3c6546(0x233)]=_0x3da01f[_0x3c6546(0x233)],_0x26cba4[_0x3c6546(0x240)]=_0x3da01f[_0x3c6546(0x240)],_0x26cba4['sortProps']=!0x1,_0x26cba4[_0x3c6546(0x1f0)]=!_0x425a99,_0x26cba4[_0x3c6546(0x230)]=0x1,_0x26cba4[_0x3c6546(0x216)]=0x0,_0x26cba4[_0x3c6546(0x238)]='root_exp_id',_0x26cba4[_0x3c6546(0x1ec)]=_0x3c6546(0x283),_0x26cba4[_0x3c6546(0x2b1)]=!0x0,_0x26cba4[_0x3c6546(0x260)]=[],_0x26cba4[_0x3c6546(0x250)]=0x0,_0x26cba4[_0x3c6546(0x26e)]=!0x0,_0x26cba4[_0x3c6546(0x214)]=0x0,_0x26cba4['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x26cba4;};for(var _0x23e276=0x0;_0x23e276<_0x5321fe[_0x471a36(0x293)];_0x23e276++)_0x11e3f6[_0x471a36(0x258)](_0x31638a[_0x471a36(0x20a)]({'timeNode':_0x531b46===_0x471a36(0x27a)||void 0x0},_0x5321fe[_0x23e276],_0x405b05(_0x5697d2),{}));if(_0x531b46==='trace'||_0x531b46===_0x471a36(0x223)){let _0x56cb28=Error['stackTraceLimit'];try{Error[_0x471a36(0x281)]=0x1/0x0,_0x11e3f6['push'](_0x31638a[_0x471a36(0x20a)]({'stackNode':!0x0},new Error()[_0x471a36(0x1f3)],_0x405b05(_0x5697d2),{'strLength':0x1/0x0}));}finally{Error[_0x471a36(0x281)]=_0x56cb28;}}return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':_0x11e3f6,'id':_0x4bc71a,'context':_0x10f17e}]};}catch(_0x141361){return{'method':_0x471a36(0x242),'version':_0x2ae763,'args':[{'ts':_0x197aa8,'session':_0x42857c,'args':[{'type':'unknown','error':_0x141361&&_0x141361[_0x471a36(0x2ce)]}],'id':_0x4bc71a,'context':_0x10f17e}]};}finally{try{if(_0x101e55&&_0x1a2226){let _0x53d3d0=_0x2d8ac9();_0x101e55['count']++,_0x101e55[_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x101e55['ts']=_0x53d3d0,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x227)]++,_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]+=_0x1be918(_0x1a2226,_0x53d3d0),_0x23f5ef[_0x471a36(0x2c0)]['ts']=_0x53d3d0,(_0x101e55['count']>0x32||_0x101e55['time']>0x64)&&(_0x101e55[_0x471a36(0x22a)]=!0x0),(_0x23f5ef['hits'][_0x471a36(0x227)]>0x3e8||_0x23f5ef[_0x471a36(0x2c0)][_0x471a36(0x27a)]>0x12c)&&(_0x23f5ef['hits'][_0x471a36(0x22a)]=!0x0);}}catch{}}}return _0x6a9287;}((_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x598d24,_0x5d532f,_0x146311,_0x5c841c,_0x435457,_0x4af095)=>{var _0x178280=_0x52c85b;if(_0x5c57ad[_0x178280(0x273)])return _0x5c57ad[_0x178280(0x273)];if(!H(_0x5c57ad,_0x146311,_0x3deb3c))return _0x5c57ad[_0x178280(0x273)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x5c57ad['_console_ninja'];let _0x348138=B(_0x5c57ad),_0x4526fb=_0x348138[_0x178280(0x26b)],_0x4d4ffb=_0x348138[_0x178280(0x282)],_0x383918=_0x348138[_0x178280(0x2cc)],_0x42c1e2={'hits':{},'ts':{}},_0x5f1ccb=X(_0x5c57ad,_0x5c841c,_0x42c1e2,_0x598d24),_0xd940d5=_0x4e24ec=>{_0x42c1e2['ts'][_0x4e24ec]=_0x4d4ffb();},_0xea84f2=(_0x1e4f3c,_0x4cf578)=>{var _0x1bcce6=_0x178280;let _0x930c06=_0x42c1e2['ts'][_0x4cf578];if(delete _0x42c1e2['ts'][_0x4cf578],_0x930c06){let _0x1303d4=_0x4526fb(_0x930c06,_0x4d4ffb());_0xde4346(_0x5f1ccb(_0x1bcce6(0x27a),_0x1e4f3c,_0x383918(),_0x42be99,[_0x1303d4],_0x4cf578));}},_0x4f0396=_0x430740=>{var _0x16daef=_0x178280,_0x326829;return _0x3deb3c===_0x16daef(0x22f)&&_0x5c57ad[_0x16daef(0x2bf)]&&((_0x326829=_0x430740==null?void 0x0:_0x430740[_0x16daef(0x264)])==null?void 0x0:_0x326829[_0x16daef(0x293)])&&(_0x430740[_0x16daef(0x264)][0x0]['origin']=_0x5c57ad[_0x16daef(0x2bf)]),_0x430740;};_0x5c57ad['_console_ninja']={'consoleLog':(_0x389383,_0x33070f)=>{var _0xcc2784=_0x178280;_0x5c57ad[_0xcc2784(0x23c)]['log']['name']!=='disabledLog'&&_0xde4346(_0x5f1ccb(_0xcc2784(0x242),_0x389383,_0x383918(),_0x42be99,_0x33070f));},'consoleTrace':(_0x5a7462,_0x4ad9a0)=>{var _0x34222f=_0x178280,_0x4e5f09,_0x38cb70;_0x5c57ad['console']['log'][_0x34222f(0x261)]!==_0x34222f(0x286)&&((_0x38cb70=(_0x4e5f09=_0x5c57ad['process'])==null?void 0x0:_0x4e5f09[_0x34222f(0x249)])!=null&&_0x38cb70[_0x34222f(0x256)]&&(_0x5c57ad['_ninjaIgnoreNextError']=!0x0),_0xde4346(_0x4f0396(_0x5f1ccb(_0x34222f(0x239),_0x5a7462,_0x383918(),_0x42be99,_0x4ad9a0))));},'consoleError':(_0x56c660,_0x124401)=>{var _0x5a4dbf=_0x178280;_0x5c57ad[_0x5a4dbf(0x267)]=!0x0,_0xde4346(_0x4f0396(_0x5f1ccb(_0x5a4dbf(0x223),_0x56c660,_0x383918(),_0x42be99,_0x124401)));},'consoleTime':_0x2b72bf=>{_0xd940d5(_0x2b72bf);},'consoleTimeEnd':(_0xf42d7f,_0x231d2e)=>{_0xea84f2(_0x231d2e,_0xf42d7f);},'autoLog':(_0x34fc42,_0x1593ab)=>{_0xde4346(_0x5f1ccb('log',_0x1593ab,_0x383918(),_0x42be99,[_0x34fc42]));},'autoLogMany':(_0x1161f8,_0x1f890f)=>{var _0x432033=_0x178280;_0xde4346(_0x5f1ccb(_0x432033(0x242),_0x1161f8,_0x383918(),_0x42be99,_0x1f890f));},'autoTrace':(_0x1abd02,_0x1a1339)=>{var _0x23dceb=_0x178280;_0xde4346(_0x4f0396(_0x5f1ccb(_0x23dceb(0x239),_0x1a1339,_0x383918(),_0x42be99,[_0x1abd02])));},'autoTraceMany':(_0x5662b6,_0x1b0d24)=>{_0xde4346(_0x4f0396(_0x5f1ccb('trace',_0x5662b6,_0x383918(),_0x42be99,_0x1b0d24)));},'autoTime':(_0x4a4e0b,_0x1660f1,_0xecbc72)=>{_0xd940d5(_0xecbc72);},'autoTimeEnd':(_0x391986,_0x4e8b70,_0x41f58e)=>{_0xea84f2(_0x4e8b70,_0x41f58e);},'coverage':_0x5ae8d0=>{var _0x294a69=_0x178280;_0xde4346({'method':_0x294a69(0x203),'version':_0x598d24,'args':[{'id':_0x5ae8d0}]});}};let _0xde4346=q(_0x5c57ad,_0x1873d7,_0x288199,_0xbac8a7,_0x3deb3c,_0x435457,_0x4af095),_0x42be99=_0x5c57ad[_0x178280(0x29d)];return _0x5c57ad[_0x178280(0x273)];})(globalThis,_0x52c85b(0x28b),_0x52c85b(0x28d),_0x52c85b(0x27b),_0x52c85b(0x2b8),'1.0.0',_0x52c85b(0x212),[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"DESKTOP-JE0DD9V\",\"192.168.1.6\"],_0x52c85b(0x265),_0x52c85b(0x24f),'1');");}catch(e){}};/* istanbul ignore next */function oo_oo(i,...v){try{oo_cm().consoleLog(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tr(i,...v){try{oo_cm().consoleTrace(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_tx(i,...v){try{oo_cm().consoleError(i, v);}catch(e){} return v};/* istanbul ignore next */function oo_ts(v){try{oo_cm().consoleTime(v);}catch(e){} return v;};/* istanbul ignore next */function oo_te(v, i){try{oo_cm().consoleTimeEnd(v, i);}catch(e){} return v;};/*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/middlewares/index.html b/Server/coverage/lcov-report/Server/middlewares/index.html new file mode 100644 index 0000000..4f8c024 --- /dev/null +++ b/Server/coverage/lcov-report/Server/middlewares/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for Server/middlewares + + + + + + + + + +
+
+

All files Server/middlewares

+
+ +
+ 56.33% + Statements + 40/71 +
+ + +
+ 48.27% + Branches + 14/29 +
+ + +
+ 62.5% + Functions + 5/8 +
+ + +
+ 57.35% + Lines + 39/68 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
authentication.js +
+
65.21%15/2350%4/850%1/268.18%15/22
authorization.js +
+
41.66%10/2430%3/1033.33%1/343.47%10/23
errorHandler.js +
+
62.5%15/2463.63%7/11100%3/360.86%14/23
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/models/favorite.js.html b/Server/coverage/lcov-report/Server/models/favorite.js.html new file mode 100644 index 0000000..64f5f17 --- /dev/null +++ b/Server/coverage/lcov-report/Server/models/favorite.js.html @@ -0,0 +1,259 @@ + + + + + + Code coverage report for Server/models/favorite.js + + + + + + + + + +
+
+

All files / Server/models favorite.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59  +2x +2x +  +  +  +  +  +  +  +  +2x +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  + 
"use strict";
+const { Model } = require("sequelize");
+module.exports = (sequelize, DataTypes) => {
+  class Favorite extends Model {
+    /**
+     * Helper method for defining associations.
+     * This method is not a part of Sequelize lifecycle.
+     * The `models/index` file will call this method automatically.
+     */
+    static associate(models) {
+      // define association here
+      Favorite.belongsTo(models.User)
+    }
+  }
+  Favorite.init(
+    {
+      UserId: {
+        type: DataTypes.INTEGER,
+        allowNull: false,
+        validate: {
+          notNull: {
+            args: true,
+            msg: `User Id is required`,
+          },
+          notEmpty: {
+            args: true,
+            msg: `User Id is required`,
+          },
+        },
+      },
+      pokemonName: {
+        type: DataTypes.STRING,
+        allowNull: false,
+        validate: {
+          notNull: {
+            args: true,
+            msg: `Pokemon Name is required`,
+          },
+          notEmpty: {
+            args: true,
+            msg: `Pokemon Name is required`,
+          },
+        },
+      },
+    },
+    {
+      sequelize,
+      modelName: "Favorite",
+      indexes: [
+        {
+          unique: true,
+          fields: ["UserId", "pokemonName"],
+        },
+      ],
+    }
+  );
+  return Favorite;
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/models/index.html b/Server/coverage/lcov-report/Server/models/index.html new file mode 100644 index 0000000..ac512eb --- /dev/null +++ b/Server/coverage/lcov-report/Server/models/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for Server/models + + + + + + + + + +
+
+

All files Server/models

+
+ +
+ 97.61% + Statements + 41/42 +
+ + +
+ 70% + Branches + 7/10 +
+ + +
+ 100% + Functions + 10/10 +
+ + +
+ 97.61% + Lines + 41/42 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
favorite.js +
+
100%5/5100%0/0100%2/2100%5/5
index.js +
+
95.23%20/2170%7/10100%3/395.23%20/21
profile.js +
+
100%5/5100%0/0100%2/2100%5/5
user.js +
+
100%11/11100%0/0100%3/3100%11/11
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/models/index.js.html b/Server/coverage/lcov-report/Server/models/index.js.html new file mode 100644 index 0000000..cf60407 --- /dev/null +++ b/Server/coverage/lcov-report/Server/models/index.js.html @@ -0,0 +1,214 @@ + + + + + + Code coverage report for Server/models/index.js + + + + + + + + + +
+
+

All files / Server/models index.js

+
+ +
+ 95.23% + Statements + 20/21 +
+ + +
+ 70% + Branches + 7/10 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 95.23% + Lines + 20/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44  +  +2x +2x +2x +2x +2x +2x +2x +2x +  +  +2x +  +  +2x +  +  +2x +  +  +8x +  +  +  +  +  +  +  +6x +6x +  +  +2x +6x +6x +  +  +  +2x +2x +  +2x + 
'use strict';
+ 
+const fs = require('fs');
+const path = require('path');
+const Sequelize = require('sequelize');
+const process = require('process');
+const basename = path.basename(__filename);
+const env = process.env.NODE_ENV || 'development';
+const config = require(__dirname + '/../config/config.json')[env];
+const db = {};
+ 
+let sequelize;
+Iif (config.use_env_variable) {
+  sequelize = new Sequelize(process.env[config.use_env_variable], config);
+} else {
+  sequelize = new Sequelize(config.database, config.username, config.password, config);
+}
+ 
+fs
+  .readdirSync(__dirname)
+  .filter(file => {
+    return (
+      file.indexOf('.') !== 0 &&
+      file !== basename &&
+      file.slice(-3) === '.js' &&
+      file.indexOf('.test.js') === -1
+    );
+  })
+  .forEach(file => {
+    const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
+    db[model.name] = model;
+  });
+ 
+Object.keys(db).forEach(modelName => {
+  Eif (db[modelName].associate) {
+    db[modelName].associate(db);
+  }
+});
+ 
+db.sequelize = sequelize;
+db.Sequelize = Sequelize;
+ 
+module.exports = db;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/models/profile.js.html b/Server/coverage/lcov-report/Server/models/profile.js.html new file mode 100644 index 0000000..65d17a8 --- /dev/null +++ b/Server/coverage/lcov-report/Server/models/profile.js.html @@ -0,0 +1,202 @@ + + + + + + Code coverage report for Server/models/profile.js + + + + + + + + + +
+
+

All files / Server/models profile.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40  +  +  +2x +2x +  +  +  +  +  +  +  +  +2x +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x + 
'use strict';
+const {
+  Model
+} = require('sequelize');
+module.exports = (sequelize, DataTypes) => {
+  class Profile extends Model {
+    /**
+     * Helper method for defining associations.
+     * This method is not a part of Sequelize lifecycle.
+     * The `models/index` file will call this method automatically.
+     */
+    static associate(models) {
+      // define association here
+      Profile.hasMany(models.User)
+    }
+  }
+  Profile.init(
+    {
+      imgUrl: {
+        type: DataTypes.STRING,
+        allowNull: false,
+        validate: {
+          notNull: {
+            args: true,
+            msg: `Password is required`,
+          },
+          notEmpty: {
+            args: true,
+            msg: `Password is required`,
+          },
+        },
+      },
+    },
+    {
+      sequelize,
+      modelName: "Profile",
+    }
+  );
+  return Profile;
+};
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/Server/models/user.js.html b/Server/coverage/lcov-report/Server/models/user.js.html new file mode 100644 index 0000000..1e8342f --- /dev/null +++ b/Server/coverage/lcov-report/Server/models/user.js.html @@ -0,0 +1,343 @@ + + + + + + Code coverage report for Server/models/user.js + + + + + + + + + +
+
+

All files / Server/models user.js

+
+ +
+ 100% + Statements + 11/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +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  +  +  +  +2x +2x +2x +  +  +  +  +  +  +  +  +2x +2x +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +3x +3x +3x +  +2x + 
'use strict';
+const {
+  Model,
+  Sequelize
+} = require('sequelize');
+const bcrypt = require("bcrypt")
+module.exports = (sequelize, DataTypes) => {
+  class User extends Model {
+    /**
+     * Helper method for defining associations.
+     * This method is not a part of Sequelize lifecycle.
+     * The `models/index` file will call this method automatically.
+     */
+    static associate(models) {
+      // define association here
+      User.hasMany(models.Favorite)
+      User.belongsTo(models.Profile)
+    }
+  }
+  User.init(
+    {
+      email: {
+        type: DataTypes.STRING,
+        allowNull: false,
+        unique: {
+          args: true,
+          msg: `Email has already been used by another User`,
+        },
+        validate: {
+          notNull: {
+            args: true,
+            msg: `Email is required`,
+          },
+          notEmpty: {
+            args: true,
+            msg: `Email is required`,
+          },
+        },
+      },
+      password: {
+        type: DataTypes.STRING,
+        allowNull: false,
+        validate: {
+          notNull: {
+            args: true,
+            msg: `Password is required`,
+          },
+          notEmpty: {
+            args: true,
+            msg: `Password is required`,
+          },
+        },
+      },
+      userName: {
+        type: DataTypes.STRING,
+        allowNull: false,
+        validate: {
+          notNull: {
+            args: true,
+            msg: `User Name is required`,
+          },
+          notEmpty: {
+            args: true,
+            msg: `User Name is required`,
+          },
+        },
+      },
+      ProfileId: {
+        type: DataTypes.STRING,
+        allowNull: true,
+      },
+      role: {
+        type: DataTypes.STRING,
+      },
+    },
+    {
+      sequelize,
+      modelName: "User",
+    }
+  );
+  User.beforeCreate((e) => {
+    const salt = bcrypt.genSaltSync(10);
+    const password = bcrypt.hashSync(e.password, salt);
+    e.password = password;
+  });
+  return User;
+};
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/base.css b/Server/coverage/lcov-report/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/Server/coverage/lcov-report/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/Server/coverage/lcov-report/block-navigation.js b/Server/coverage/lcov-report/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/Server/coverage/lcov-report/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/Server/coverage/lcov-report/favicon.png b/Server/coverage/lcov-report/favicon.png new file mode 100644 index 0000000..c1525b8 Binary files /dev/null and b/Server/coverage/lcov-report/favicon.png differ diff --git a/Server/coverage/lcov-report/index.html b/Server/coverage/lcov-report/index.html new file mode 100644 index 0000000..7ab2e3d --- /dev/null +++ b/Server/coverage/lcov-report/index.html @@ -0,0 +1,176 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 69.91% + Statements + 172/246 +
+ + +
+ 58.18% + Branches + 32/55 +
+ + +
+ 80.64% + Functions + 25/31 +
+ + +
+ 70.24% + Lines + 170/242 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
Server +
+
100%27/2750%1/2100%0/0100%27/27
Server/controllers +
+
57.57%57/9971.42%10/1472.72%8/1157.14%56/98
Server/helpers +
+
100%7/7100%0/0100%2/2100%7/7
Server/middlewares +
+
56.33%40/7148.27%14/2962.5%5/857.35%39/68
Server/models +
+
97.61%41/4270%7/10100%10/1097.61%41/42
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/Server/coverage/lcov-report/prettify.css b/Server/coverage/lcov-report/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/Server/coverage/lcov-report/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/Server/coverage/lcov-report/prettify.js b/Server/coverage/lcov-report/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/Server/coverage/lcov-report/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/Server/coverage/lcov-report/sort-arrow-sprite.png b/Server/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000..6ed6831 Binary files /dev/null and b/Server/coverage/lcov-report/sort-arrow-sprite.png differ diff --git a/Server/coverage/lcov-report/sorter.js b/Server/coverage/lcov-report/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/Server/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/Server/coverage/lcov.info b/Server/coverage/lcov.info new file mode 100644 index 0000000..f043012 --- /dev/null +++ b/Server/coverage/lcov.info @@ -0,0 +1,449 @@ +TN: +SF:app.js +FNF:0 +FNH:0 +DA:1,2 +DA:2,2 +DA:3,2 +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,2 +DA:8,2 +DA:9,2 +DA:12,2 +DA:13,2 +DA:14,2 +DA:16,2 +DA:17,2 +DA:18,2 +DA:20,2 +DA:21,2 +DA:23,2 +DA:30,2 +DA:31,2 +DA:33,2 +DA:35,2 +DA:36,2 +DA:37,2 +DA:38,2 +DA:40,2 +DA:42,2 +LF:27 +LH:27 +BRDA:8,0,0,2 +BRDA:8,0,1,0 +BRF:2 +BRH:1 +end_of_record +TN: +SF:controllers\controller.js +FN:7,(anonymous_0) +FN:26,(anonymous_1) +FN:65,(anonymous_2) +FN:99,(anonymous_3) +FN:115,(anonymous_4) +FN:138,(anonymous_5) +FN:157,(anonymous_6) +FN:174,(anonymous_7) +FN:193,(anonymous_8) +FN:221,(anonymous_9) +FN:239,oo_cm +FNF:11 +FNH:8 +FNDA:5,(anonymous_0) +FNDA:7,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:1,(anonymous_3) +FNDA:1,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:1,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:1,(anonymous_9) +FNDA:5,oo_cm +DA:1,2 +DA:2,2 +DA:3,2 +DA:4,2 +DA:8,5 +DA:9,5 +DA:10,5 +DA:17,1 +DA:18,1 +DA:20,1 +DA:22,4 +DA:23,4 +DA:27,7 +DA:28,7 +DA:29,7 +DA:30,1 +DA:31,1 +DA:33,6 +DA:34,1 +DA:35,1 +DA:38,5 +DA:40,5 +DA:41,1 +DA:47,4 +DA:49,4 +DA:50,1 +DA:56,3 +DA:58,3 +DA:60,0 +DA:61,0 +DA:66,0 +DA:67,0 +DA:69,0 +DA:70,0 +DA:76,0 +DA:78,0 +DA:90,0 +DA:92,0 +DA:94,0 +DA:95,0 +DA:100,1 +DA:101,1 +DA:102,1 +DA:103,1 +DA:108,1 +DA:110,0 +DA:111,0 +DA:116,1 +DA:117,1 +DA:118,1 +DA:119,1 +DA:121,1 +DA:122,1 +DA:123,0 +DA:129,1 +DA:131,1 +DA:133,0 +DA:134,0 +DA:139,0 +DA:140,0 +DA:141,0 +DA:142,0 +DA:143,0 +DA:149,0 +DA:151,0 +DA:152,0 +DA:158,1 +DA:159,1 +DA:160,1 +DA:167,1 +DA:169,0 +DA:170,0 +DA:175,1 +DA:176,1 +DA:177,1 +DA:178,1 +DA:179,1 +DA:186,1 +DA:188,0 +DA:189,0 +DA:194,0 +DA:196,0 +DA:197,0 +DA:203,0 +DA:204,0 +DA:206,0 +DA:210,0 +DA:212,0 +DA:214,0 +DA:216,0 +DA:217,0 +DA:222,1 +DA:223,1 +DA:225,1 +DA:227,0 +DA:228,0 +DA:232,2 +DA:239,5 +LF:98 +LH:56 +BRDA:29,0,0,1 +BRDA:29,0,1,6 +BRDA:33,1,0,1 +BRDA:33,1,1,5 +BRDA:40,2,0,1 +BRDA:40,2,1,4 +BRDA:49,3,0,1 +BRDA:49,3,1,3 +BRDA:122,4,0,0 +BRDA:122,4,1,1 +BRDA:142,5,0,0 +BRDA:142,5,1,0 +BRDA:239,6,0,5 +BRDA:239,6,1,0 +BRF:14 +BRH:10 +end_of_record +TN: +SF:helpers\jwt.js +FN:5,(anonymous_0) +FN:9,(anonymous_1) +FNF:2 +FNH:2 +FNDA:3,(anonymous_0) +FNDA:5,(anonymous_1) +DA:1,2 +DA:3,2 +DA:5,2 +DA:6,3 +DA:9,2 +DA:10,5 +DA:13,2 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:middlewares\authentication.js +FN:4,authentication +FN:47,oo_cm +FNF:2 +FNH:1 +FNDA:10,authentication +FNDA:0,oo_cm +DA:1,2 +DA:2,2 +DA:5,10 +DA:7,10 +DA:8,5 +DA:9,5 +DA:12,5 +DA:15,5 +DA:16,0 +DA:17,0 +DA:21,5 +DA:22,5 +DA:24,5 +DA:25,5 +DA:26,0 +DA:27,0 +DA:31,5 +DA:32,5 +DA:34,0 +DA:35,0 +DA:40,2 +DA:47,0 +LF:22 +LH:15 +BRDA:7,0,0,5 +BRDA:7,0,1,5 +BRDA:15,1,0,0 +BRDA:15,1,1,5 +BRDA:25,2,0,0 +BRDA:25,2,1,5 +BRDA:47,3,0,0 +BRDA:47,3,1,0 +BRF:8 +BRH:4 +end_of_record +TN: +SF:middlewares\authorization.js +FN:3,updateDelete +FN:36,admin +FN:64,oo_cm +FNF:3 +FNH:1 +FNDA:1,updateDelete +FNDA:0,admin +FNDA:0,oo_cm +DA:1,2 +DA:4,1 +DA:10,1 +DA:11,0 +DA:14,1 +DA:15,1 +DA:16,1 +DA:18,1 +DA:19,0 +DA:22,1 +DA:23,1 +DA:25,0 +DA:31,0 +DA:32,0 +DA:37,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:50,0 +DA:53,0 +DA:54,0 +DA:57,2 +DA:64,0 +LF:23 +LH:10 +BRDA:10,0,0,0 +BRDA:10,0,1,1 +BRDA:18,1,0,0 +BRDA:18,1,1,1 +BRDA:22,2,0,1 +BRDA:22,2,1,0 +BRDA:44,3,0,0 +BRDA:44,3,1,0 +BRDA:64,4,0,0 +BRDA:64,4,1,0 +BRF:10 +BRH:3 +end_of_record +TN: +SF:middlewares\errorHandler.js +FN:1,errorHandler +FN:19,(anonymous_1) +FN:45,oo_cm +FNF:3 +FNH:3 +FNDA:13,errorHandler +FNDA:3,(anonymous_1) +FNDA:13,oo_cm +DA:2,13 +DA:3,13 +DA:5,5 +DA:6,5 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:14,2 +DA:15,2 +DA:17,3 +DA:19,3 +DA:20,0 +DA:22,0 +DA:23,0 +DA:25,2 +DA:26,2 +DA:28,1 +DA:31,1 +DA:34,0 +DA:35,0 +DA:38,2 +DA:45,13 +LF:23 +LH:14 +BRDA:3,0,0,5 +BRDA:3,0,1,0 +BRDA:3,0,2,0 +BRDA:3,0,3,2 +BRDA:3,0,4,3 +BRDA:3,0,5,0 +BRDA:3,0,6,2 +BRDA:3,0,7,1 +BRDA:3,0,8,0 +BRDA:45,1,0,13 +BRDA:45,1,1,2 +BRF:11 +BRH:7 +end_of_record +TN: +SF:models\favorite.js +FN:3,(anonymous_0) +FN:10,(anonymous_1) +FNF:2 +FNH:2 +FNDA:2,(anonymous_0) +FNDA:2,(anonymous_1) +DA:2,2 +DA:3,2 +DA:12,2 +DA:15,2 +DA:57,2 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:models\index.js +FN:21,(anonymous_0) +FN:29,(anonymous_1) +FN:34,(anonymous_2) +FNF:3 +FNH:3 +FNDA:8,(anonymous_0) +FNDA:6,(anonymous_1) +FNDA:6,(anonymous_2) +DA:3,2 +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,2 +DA:8,2 +DA:9,2 +DA:10,2 +DA:13,2 +DA:14,0 +DA:16,2 +DA:19,2 +DA:22,8 +DA:30,6 +DA:31,6 +DA:34,2 +DA:35,6 +DA:36,6 +DA:40,2 +DA:41,2 +DA:43,2 +LF:21 +LH:20 +BRDA:8,0,0,2 +BRDA:8,0,1,0 +BRDA:13,1,0,0 +BRDA:13,1,1,2 +BRDA:23,2,0,8 +BRDA:23,2,1,8 +BRDA:23,2,2,6 +BRDA:23,2,3,6 +BRDA:35,3,0,6 +BRDA:35,3,1,0 +BRF:10 +BRH:7 +end_of_record +TN: +SF:models\profile.js +FN:5,(anonymous_0) +FN:12,(anonymous_1) +FNF:2 +FNH:2 +FNDA:2,(anonymous_0) +FNDA:2,(anonymous_1) +DA:4,2 +DA:5,2 +DA:14,2 +DA:17,2 +DA:39,2 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:models\user.js +FN:7,(anonymous_0) +FN:14,(anonymous_1) +FN:81,(anonymous_2) +FNF:3 +FNH:3 +FNDA:2,(anonymous_0) +FNDA:2,(anonymous_1) +FNDA:3,(anonymous_2) +DA:5,2 +DA:6,2 +DA:7,2 +DA:16,2 +DA:17,2 +DA:20,2 +DA:81,2 +DA:82,3 +DA:83,3 +DA:84,3 +DA:86,2 +LF:11 +LH:11 +BRF:0 +BRH:0 +end_of_record diff --git a/Server/helpers/jwt.js b/Server/helpers/jwt.js new file mode 100644 index 0000000..b650144 --- /dev/null +++ b/Server/helpers/jwt.js @@ -0,0 +1,13 @@ +const jwt = require("jsonwebtoken"); + +let JWT_SECRET = `qwerty`; + +const signToken = (payload) => { + return jwt.sign(payload, JWT_SECRET); +}; + +const verifyToken = (token) => { + return jwt.verify(token, JWT_SECRET); +}; + +module.exports = { signToken, verifyToken }; diff --git a/Server/middlewares/authentication.js b/Server/middlewares/authentication.js new file mode 100644 index 0000000..85b503d --- /dev/null +++ b/Server/middlewares/authentication.js @@ -0,0 +1,40 @@ +const { User } = require("../models"); +const { verifyToken } = require("../helpers/jwt"); + +async function authentication(req, res, next) { + const bearerToken = req.headers.authorization; + // console.log(bearerToken); + if (!bearerToken) { + next({ name: "JsonWebTokenError" }); + return; + } + + const token = bearerToken.split(" ")[1]; + // console.log(token); + + if (!token) { + next({ name: "JsonWebTokenError" }); + return; + } + //console.log(token); + + try { + let data = verifyToken(token); + // console.log(data); + let user = await User.findByPk(data.UserId); + if (!user) { + next({ name: "JsonWebTokenError" }); + return; + } + // console.log(user); + + req.user = user; + next(); + } catch (error) { + console.log("🚀 ~ authentication ~ error:", error); + next(error); + } + // console.log("🚀 ~ authentication ~ req.headers:", req.headers); +} + +module.exports = authentication; diff --git a/Server/middlewares/authorization.js b/Server/middlewares/authorization.js new file mode 100644 index 0000000..943325f --- /dev/null +++ b/Server/middlewares/authorization.js @@ -0,0 +1,57 @@ +const { Favorite } = require("../models"); + +async function updateDelete(req, res, next) { + let user = req.user; + // console.log(req.params); + + // console.log("Request Params:", req.params); + // console.log("User from req:", user); + + if (!user) { + return next("JsonWebTokenError"); + } + + try { + const { pokemonName } = req.params; + const fav = await Favorite.findOne({ where: {pokemonName,UserId:user.id} }); + + if (!fav) { + return next({ name: `NotFound`, message: "Pokemon Not Found" }); + } + + if (fav.UserId === user.id) { + return next(); + } else { + return next({ + name: "Forbidden", + message: "Your are not Authorized", + }); + } + } catch (error) { + console.error("Authorization error:", error); + next(error); + } +} + +async function admin(req, res, next) { + let user = req.user; + // console.log(req.params); + + // console.log("Request Params:", req.params); + // console.log("User from req:", user); + + try { + if (user.role !== "admin") { + return next({ + name: "Forbidden", + message: "Your are not Authorized", + }); + }else{ + next() + } + } catch (error) { + console.error("Authorization error:", error); + next(error); + } +} +module.exports = { updateDelete,admin }; diff --git a/Server/middlewares/errorHandler.js b/Server/middlewares/errorHandler.js new file mode 100644 index 0000000..2028f60 --- /dev/null +++ b/Server/middlewares/errorHandler.js @@ -0,0 +1,38 @@ +function errorHandler(err, req, res, next) { + console.log("🚀 ~ errorHandler ~ err:", err) + switch (err.name) { + case "JsonWebTokenError": + res.status(401).json({ message: `Invalid Token` }); + break; + case "Forbidden": + res.status(403).json({ message: err.message }); + break; + case "NotFound": + res.status(404).json({ message: err.message }); + break; + case "NotAuthorized": + res.status(401).json({ message: err.message }); + break; + case "SequelizeValidationError": + return res + .status(400) + .json({ message: err.errors.map((e) => e.message) }) + break; + case "Conflict": + res.status(409).json({ message: err.message }); + break; + case "BadReq": + res.status(409).json({ message: err.message }); + break; + case "SequelizeUniqueConstraintError": + res + .status(409) + .json({ message:err.message }); + break; + + default: + res.status(500).json({ message: "Internal Server Error" }); + break; + } +} +module.exports = errorHandler; diff --git a/Server/migrations/20241028103011-create-profile.js b/Server/migrations/20241028103011-create-profile.js new file mode 100644 index 0000000..8a5f4dc --- /dev/null +++ b/Server/migrations/20241028103011-create-profile.js @@ -0,0 +1,28 @@ +'use strict'; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable('Profiles', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + imgUrl: { + type: Sequelize.STRING + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE + } + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable('Profiles'); + } +}; \ No newline at end of file diff --git a/Server/migrations/20241028103012-create-user.js b/Server/migrations/20241028103012-create-user.js new file mode 100644 index 0000000..fd80094 --- /dev/null +++ b/Server/migrations/20241028103012-create-user.js @@ -0,0 +1,48 @@ +'use strict'; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable("Users", { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + userName: { + type: Sequelize.STRING, + }, + email: { + type: Sequelize.STRING, + unique: true, + }, + password: { + type: Sequelize.STRING, + }, + role: { + type: Sequelize.STRING, + defaultValue:"user" + }, + ProfileId: { + type: Sequelize.INTEGER, + references: { + model: "Profiles", + key: "id", + }, + allowNull: true, + onDelete: "SET NULL", + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + }, + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable('Users'); + } +}; \ No newline at end of file diff --git a/Server/migrations/20241028105334-create-favorite.js b/Server/migrations/20241028105334-create-favorite.js new file mode 100644 index 0000000..c0254c5 --- /dev/null +++ b/Server/migrations/20241028105334-create-favorite.js @@ -0,0 +1,45 @@ +'use strict'; +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable( + "Favorites", + { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER, + }, + UserId: { + type: Sequelize.INTEGER, + references: { + model: "Users", + key: "id", + }, + }, + pokemonName: { + type: Sequelize.STRING, + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + }, + }, + { + uniqueKeys: { + unique_favorite: { + fields: ["UserId", "pokemonName"], + }, + }, + } + ); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable('Favorites'); + } +}; \ No newline at end of file diff --git a/Server/models/favorite.js b/Server/models/favorite.js new file mode 100644 index 0000000..53a75ff --- /dev/null +++ b/Server/models/favorite.js @@ -0,0 +1,58 @@ +"use strict"; +const { Model } = require("sequelize"); +module.exports = (sequelize, DataTypes) => { + class Favorite extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + Favorite.belongsTo(models.User) + } + } + Favorite.init( + { + UserId: { + type: DataTypes.INTEGER, + allowNull: false, + validate: { + notNull: { + args: true, + msg: `User Id is required`, + }, + notEmpty: { + args: true, + msg: `User Id is required`, + }, + }, + }, + pokemonName: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notNull: { + args: true, + msg: `Pokemon Name is required`, + }, + notEmpty: { + args: true, + msg: `Pokemon Name is required`, + }, + }, + }, + }, + { + sequelize, + modelName: "Favorite", + indexes: [ + { + unique: true, + fields: ["UserId", "pokemonName"], + }, + ], + } + ); + return Favorite; +}; diff --git a/Server/models/index.js b/Server/models/index.js new file mode 100644 index 0000000..024200e --- /dev/null +++ b/Server/models/index.js @@ -0,0 +1,43 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const Sequelize = require('sequelize'); +const process = require('process'); +const basename = path.basename(__filename); +const env = process.env.NODE_ENV || 'development'; +const config = require(__dirname + '/../config/config.json')[env]; +const db = {}; + +let sequelize; +if (config.use_env_variable) { + sequelize = new Sequelize(process.env[config.use_env_variable], config); +} else { + sequelize = new Sequelize(config.database, config.username, config.password, config); +} + +fs + .readdirSync(__dirname) + .filter(file => { + return ( + file.indexOf('.') !== 0 && + file !== basename && + file.slice(-3) === '.js' && + file.indexOf('.test.js') === -1 + ); + }) + .forEach(file => { + const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes); + db[model.name] = model; + }); + +Object.keys(db).forEach(modelName => { + if (db[modelName].associate) { + db[modelName].associate(db); + } +}); + +db.sequelize = sequelize; +db.Sequelize = Sequelize; + +module.exports = db; diff --git a/Server/models/profile.js b/Server/models/profile.js new file mode 100644 index 0000000..e420649 --- /dev/null +++ b/Server/models/profile.js @@ -0,0 +1,40 @@ +'use strict'; +const { + Model +} = require('sequelize'); +module.exports = (sequelize, DataTypes) => { + class Profile extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + Profile.hasMany(models.User) + } + } + Profile.init( + { + imgUrl: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notNull: { + args: true, + msg: `Password is required`, + }, + notEmpty: { + args: true, + msg: `Password is required`, + }, + }, + }, + }, + { + sequelize, + modelName: "Profile", + } + ); + return Profile; +}; \ No newline at end of file diff --git a/Server/models/user.js b/Server/models/user.js new file mode 100644 index 0000000..876b77c --- /dev/null +++ b/Server/models/user.js @@ -0,0 +1,87 @@ +'use strict'; +const { + Model, + Sequelize +} = require('sequelize'); +const bcrypt = require("bcrypt") +module.exports = (sequelize, DataTypes) => { + class User extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + User.hasMany(models.Favorite) + User.belongsTo(models.Profile) + } + } + User.init( + { + email: { + type: DataTypes.STRING, + allowNull: false, + unique: { + args: true, + msg: `Email has already been used by another User`, + }, + validate: { + notNull: { + args: true, + msg: `Email is required`, + }, + notEmpty: { + args: true, + msg: `Email is required`, + }, + }, + }, + password: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notNull: { + args: true, + msg: `Password is required`, + }, + notEmpty: { + args: true, + msg: `Password is required`, + }, + }, + }, + userName: { + type: DataTypes.STRING, + allowNull: false, + validate: { + notNull: { + args: true, + msg: `User Name is required`, + }, + notEmpty: { + args: true, + msg: `User Name is required`, + }, + }, + }, + ProfileId: { + type: DataTypes.STRING, + allowNull: true, + }, + role: { + type: DataTypes.STRING, + }, + }, + { + sequelize, + modelName: "User", + } + ); + User.beforeCreate((e) => { + const salt = bcrypt.genSaltSync(10); + const password = bcrypt.hashSync(e.password, salt); + e.password = password; + }); + return User; +}; \ No newline at end of file diff --git a/Server/package-lock.json b/Server/package-lock.json new file mode 100644 index 0000000..c87aa39 --- /dev/null +++ b/Server/package-lock.json @@ -0,0 +1,6362 @@ +{ + "name": "ip-rmt54", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ip-rmt54", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "bcrypt": "^5.1.1", + "cloudinary": "^2.5.1", + "cors": "^2.8.5", + "express": "^4.21.1", + "google-auth-library": "^9.14.2", + "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.1", + "pg": "^8.13.1", + "redux-thunk": "^3.1.0", + "sequelize": "^6.37.5" + }, + "devDependencies": { + "dotenv": "^16.4.5", + "jest": "^29.7.0", + "nodemon": "^3.1.7", + "sequelize-cli": "^6.6.2", + "supertest": "^7.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", + "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/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==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", + "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.26.0", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", + "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/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==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "dependencies": { + "undici-types": "~6.19.8" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/validator": { + "version": "13.12.2", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.2.tgz", + "integrity": "sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/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==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "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==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001673", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", + "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true + }, + "node_modules/cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cloudinary": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-2.5.1.tgz", + "integrity": "sha512-CNg6uU53Hl4FEVynkTGpt5bQEAQWDHi3H+Sm62FzKf5uQHipSN2v7qVqS8GRVqeb0T1WNV+22+75DOJeRXYeSQ==", + "dependencies": { + "lodash": "^4.17.21", + "q": "^1.5.1" + }, + "engines": { + "node": ">=9" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "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==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dottie": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.47", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", + "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "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 + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", + "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", + "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^2.0.0", + "once": "^1.4.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "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, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/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==" + }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/google-auth-library": { + "version": "9.14.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.14.2.tgz", + "integrity": "sha512-R+FRIfk1GBo3RdlRYWPdwk8nmtVUOn6+BkDomAC46KoU8kzXzE1HLmOasSCbWUByMMAGkknVF0G5kQ69Vj7dlA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-auth-library/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/google-auth-library/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gtoken/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/gtoken/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexoid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", + "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/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==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "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, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/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==", + "dev": true + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/js-beautify/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "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==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.46", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz", + "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "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 + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/nodemon": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz", + "integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, + "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==", + "dev": true, + "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/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + }, + "node_modules/pg": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", + "integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==", + "dependencies": { + "pg-connection-string": "^2.7.0", + "pg-pool": "^3.7.0", + "pg-protocol": "^1.7.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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==", + "peer": true + }, + "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==", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/retry-as-promised": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/sequelize": { + "version": "6.37.5", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.37.5.tgz", + "integrity": "sha512-10WA4poUb3XWnUROThqL2Apq9C2NhyV1xHPMZuybNMCucDsbbFuKg51jhmyvvAUyUqCiimwTZamc3AHhMoBr2Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "dependencies": { + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.9.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-cli": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.6.2.tgz", + "integrity": "sha512-V8Oh+XMz2+uquLZltZES6MVAD+yEnmMfwfn+gpXcDiwE3jyQygLt4xoI0zG8gKt6cRcs84hsKnXAKDQjG/JAgg==", + "dev": true, + "dependencies": { + "cli-color": "^2.0.3", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.5", + "lodash": "^4.17.21", + "resolve": "^1.22.1", + "umzug": "^2.3.0", + "yargs": "^16.2.0" + }, + "bin": { + "sequelize": "lib/sequelize", + "sequelize-cli": "lib/sequelize" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sequelize-cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/sequelize-cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize-cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/sequelize/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/sequelize/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==" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superagent": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", + "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^3.5.1", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/superagent/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/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==", + "dev": true + }, + "node_modules/supertest": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.0.0.tgz", + "integrity": "sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^9.0.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "dev": true, + "dependencies": { + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/Server/package.json b/Server/package.json new file mode 100644 index 0000000..0e4be8e --- /dev/null +++ b/Server/package.json @@ -0,0 +1,32 @@ +{ + "name": "ip-rmt54", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "jest --detectOpenHandles --coverage", + "dev": "npx nodemon bin/www" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "bcrypt": "^5.1.1", + "cloudinary": "^2.5.1", + "cors": "^2.8.5", + "express": "^4.21.1", + "google-auth-library": "^9.14.2", + "jsonwebtoken": "^9.0.2", + "multer": "^1.4.5-lts.1", + "pg": "^8.13.1", + "redux-thunk": "^3.1.0", + "sequelize": "^6.37.5" + }, + "devDependencies": { + "dotenv": "^16.4.5", + "jest": "^29.7.0", + "nodemon": "^3.1.7", + "sequelize-cli": "^6.6.2", + "supertest": "^7.0.0" + } +}