From c3a16177ebea869082571fd7affece127b02374b Mon Sep 17 00:00:00 2001 From: louiscklaw Date: Sat, 1 Feb 2025 02:02:25 +0800 Subject: [PATCH] update jamespong14205, --- gitUpdate.sh | 7 +- meta.md | 20 + task1/.gitignore | 1 + task1/README.md | 33 + task1/archive.zip | 3 + task1/backup.js | 59 + task1/clear_node_modules.js | 21 + task1/project/001_from_user/01.docx | Bin 0 -> 106812 bytes task1/project/001_from_user/notes.md | 5 + task1/project/002_notes/README.md | 29 + .../002_notes/design/admin_case_list.png | 3 + task1/project/002_notes/design/admin_edit.jpg | 3 + task1/project/002_notes/design/admin_home.png | 3 + .../project/002_notes/design/admin_login.png | 3 + .../project/002_notes/design/client_queue.png | 3 + .../002_notes/design/client_register.png | 3 + task1/project/002_notes/design/index.md | 39 + task1/project/002_notes/design/search.jpg | 3 + task1/project/003_src/client/.eslintignore | 1 + task1/project/003_src/client/.eslintrc.js | 73 + task1/project/003_src/client/.gitignore | 39 + task1/project/003_src/client/.husky/common.sh | 8 + .../project/003_src/client/.husky/pre-commit | 5 + task1/project/003_src/client/.prettierignore | 18 + task1/project/003_src/client/.prettierrc.js | 18 + .../003_src/client/.vscode/settings.json | 2 + task1/project/003_src/client/LICENCE.txt | 21 + task1/project/003_src/client/README.md | 31 + .../components/AdminQueueItemCard/index.js | 66 + .../client/components/Loading/index.js | 15 + .../NonUrgentQueueItemCard/index.js | 122 + .../SemiUrgentQueueItemCard/index.js | 118 + .../config/StyledMaterialThemeProvider.js | 15 + task1/project/003_src/client/config/theme.js | 37 + task1/project/003_src/client/db_seed/auth.js | 47 + task1/project/003_src/client/db_seed/model.js | 15 + .../client/db_seed/non_urgent_case_queue.js | 48 + .../003_src/client/db_seed/patient_queue.js | 33 + .../client/db_seed/semi_urgent_case_queue.js | 48 + task1/project/003_src/client/demo.sh | 11 + task1/project/003_src/client/entry.sh | 9 + task1/project/003_src/client/jsconfig.json | 24 + task1/project/003_src/client/next.config.js | 3 + task1/project/003_src/client/package.json | 69 + .../003_src/client/pages/AdminHome/index.js | 136 + .../003_src/client/pages/AdminLogin/index.js | 168 + .../client/pages/NonUrgentCaseEdit/[id].js | 246 + .../pages/NonUrgentCaseList/QueueIsEmpty.js | 40 + .../client/pages/NonUrgentCaseList/index.js | 114 + .../client/pages/PatientLanding/index.js | 40 + .../client/pages/PatientQueueDisplay/index.js | 119 + .../client/pages/PatientRegister/index.js | 318 ++ .../client/pages/SearchCase/NoResultFound.js | 21 + .../pages/SearchCase/PressSearchToStart.js | 21 + .../003_src/client/pages/SearchCase/index.js | 256 + .../client/pages/SemiUrgentCaseEdit/[id].js | 246 + .../pages/SemiUrgentCaseList/QueueIsEmpty.js | 40 + .../client/pages/SemiUrgentCaseList/index.js | 112 + task1/project/003_src/client/pages/_app.js | 18 + .../project/003_src/client/pages/_document.js | 98 + .../client/pages/api/auth/helloworld.js | 21 + .../003_src/client/pages/api/auth/login.js | 33 + .../003_src/client/pages/api/auth/model.js | 17 + .../003_src/client/pages/api/helloworld.js | 20 + .../api/patient_queue/delete_queue_item.js | 39 + .../client/pages/api/patient_queue/list.js | 25 + .../client/pages/api/patient_queue/model.js | 55 + .../api/patient_queue/non_urgent_case.js | 24 + .../api/patient_queue/read_queue_item.js | 46 + .../pages/api/patient_queue/register.js | 77 + .../client/pages/api/patient_queue/search.js | 51 + .../api/patient_queue/semi_urgent_case.js | 25 + .../patient_queue/tests/read_queue_item.js | 15 + .../pages/api/patient_queue/tests/register.js | 23 + .../pages/api/patient_queue/tests/search.js | 23 + .../patient_queue/tests/update_queue_item.js | 21 + .../api/patient_queue/update_queue_item.js | 89 + .../003_src/client/pages/debug/index.js | 104 + .../project/003_src/client/pages/index.css.js | 5 + task1/project/003_src/client/pages/index.js | 55 + .../project/003_src/client/public/favicon.ico | Bin 0 -> 25931 bytes .../project/003_src/client/public/vercel.svg | 4 + .../client/utils/is_development_plant.js | 1 + task1/project/003_src/client/utils/seed.js | 38 + .../003_src/client/utils/sequelize_config.js | 9 + task1/project/003_src/client/yarn.lock | 5050 +++++++++++++++++ task1/project/003_src/dc_up.sh | 13 + task1/project/003_src/docker-compose.yml | 50 + task1/project/003_src/setup.sh | 6 + task1/quotation.md | 11 + 90 files changed, 9071 insertions(+), 6 deletions(-) create mode 100644 meta.md create mode 100644 task1/.gitignore create mode 100644 task1/README.md create mode 100644 task1/archive.zip create mode 100644 task1/backup.js create mode 100644 task1/clear_node_modules.js create mode 100644 task1/project/001_from_user/01.docx create mode 100644 task1/project/001_from_user/notes.md create mode 100644 task1/project/002_notes/README.md create mode 100644 task1/project/002_notes/design/admin_case_list.png create mode 100644 task1/project/002_notes/design/admin_edit.jpg create mode 100644 task1/project/002_notes/design/admin_home.png create mode 100644 task1/project/002_notes/design/admin_login.png create mode 100644 task1/project/002_notes/design/client_queue.png create mode 100644 task1/project/002_notes/design/client_register.png create mode 100644 task1/project/002_notes/design/index.md create mode 100644 task1/project/002_notes/design/search.jpg create mode 100644 task1/project/003_src/client/.eslintignore create mode 100644 task1/project/003_src/client/.eslintrc.js create mode 100644 task1/project/003_src/client/.gitignore create mode 100644 task1/project/003_src/client/.husky/common.sh create mode 100644 task1/project/003_src/client/.husky/pre-commit create mode 100644 task1/project/003_src/client/.prettierignore create mode 100644 task1/project/003_src/client/.prettierrc.js create mode 100644 task1/project/003_src/client/.vscode/settings.json create mode 100644 task1/project/003_src/client/LICENCE.txt create mode 100644 task1/project/003_src/client/README.md create mode 100644 task1/project/003_src/client/components/AdminQueueItemCard/index.js create mode 100644 task1/project/003_src/client/components/Loading/index.js create mode 100644 task1/project/003_src/client/components/NonUrgentQueueItemCard/index.js create mode 100644 task1/project/003_src/client/components/SemiUrgentQueueItemCard/index.js create mode 100644 task1/project/003_src/client/config/StyledMaterialThemeProvider.js create mode 100644 task1/project/003_src/client/config/theme.js create mode 100644 task1/project/003_src/client/db_seed/auth.js create mode 100644 task1/project/003_src/client/db_seed/model.js create mode 100644 task1/project/003_src/client/db_seed/non_urgent_case_queue.js create mode 100644 task1/project/003_src/client/db_seed/patient_queue.js create mode 100644 task1/project/003_src/client/db_seed/semi_urgent_case_queue.js create mode 100755 task1/project/003_src/client/demo.sh create mode 100755 task1/project/003_src/client/entry.sh create mode 100644 task1/project/003_src/client/jsconfig.json create mode 100644 task1/project/003_src/client/next.config.js create mode 100644 task1/project/003_src/client/package.json create mode 100644 task1/project/003_src/client/pages/AdminHome/index.js create mode 100644 task1/project/003_src/client/pages/AdminLogin/index.js create mode 100644 task1/project/003_src/client/pages/NonUrgentCaseEdit/[id].js create mode 100644 task1/project/003_src/client/pages/NonUrgentCaseList/QueueIsEmpty.js create mode 100644 task1/project/003_src/client/pages/NonUrgentCaseList/index.js create mode 100644 task1/project/003_src/client/pages/PatientLanding/index.js create mode 100644 task1/project/003_src/client/pages/PatientQueueDisplay/index.js create mode 100644 task1/project/003_src/client/pages/PatientRegister/index.js create mode 100644 task1/project/003_src/client/pages/SearchCase/NoResultFound.js create mode 100644 task1/project/003_src/client/pages/SearchCase/PressSearchToStart.js create mode 100644 task1/project/003_src/client/pages/SearchCase/index.js create mode 100644 task1/project/003_src/client/pages/SemiUrgentCaseEdit/[id].js create mode 100644 task1/project/003_src/client/pages/SemiUrgentCaseList/QueueIsEmpty.js create mode 100644 task1/project/003_src/client/pages/SemiUrgentCaseList/index.js create mode 100644 task1/project/003_src/client/pages/_app.js create mode 100644 task1/project/003_src/client/pages/_document.js create mode 100644 task1/project/003_src/client/pages/api/auth/helloworld.js create mode 100644 task1/project/003_src/client/pages/api/auth/login.js create mode 100644 task1/project/003_src/client/pages/api/auth/model.js create mode 100644 task1/project/003_src/client/pages/api/helloworld.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/delete_queue_item.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/list.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/model.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/non_urgent_case.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/read_queue_item.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/register.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/search.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/semi_urgent_case.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/tests/read_queue_item.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/tests/register.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/tests/search.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/tests/update_queue_item.js create mode 100644 task1/project/003_src/client/pages/api/patient_queue/update_queue_item.js create mode 100644 task1/project/003_src/client/pages/debug/index.js create mode 100644 task1/project/003_src/client/pages/index.css.js create mode 100644 task1/project/003_src/client/pages/index.js create mode 100644 task1/project/003_src/client/public/favicon.ico create mode 100644 task1/project/003_src/client/public/vercel.svg create mode 100644 task1/project/003_src/client/utils/is_development_plant.js create mode 100644 task1/project/003_src/client/utils/seed.js create mode 100644 task1/project/003_src/client/utils/sequelize_config.js create mode 100644 task1/project/003_src/client/yarn.lock create mode 100755 task1/project/003_src/dc_up.sh create mode 100644 task1/project/003_src/docker-compose.yml create mode 100755 task1/project/003_src/setup.sh create mode 100644 task1/quotation.md diff --git a/gitUpdate.sh b/gitUpdate.sh index c96734f..38bfc2b 100755 --- a/gitUpdate.sh +++ b/gitUpdate.sh @@ -2,14 +2,9 @@ set -ex -git config --global http.version HTTP/1.1 -git config --global lfs.allowincompletepush true -git config --global lfs.locksverify true -git config --global http.postBuffer 5368709120 - git add . -git commit -m 'update,' +git commit -m"update jamespong14205," git push diff --git a/meta.md b/meta.md new file mode 100644 index 0000000..d1bd333 --- /dev/null +++ b/meta.md @@ -0,0 +1,20 @@ +--- +tags: js, app, db, nextjs, login, registration +--- + +# apps + +### ver 1: + +https://youtu.be/KOTr7nnr6uk + +balance: + +| item | amount | +| ------------------- | ---------- | +| quote | + HKD 2000 | +| deposit received | - HKD 500 | +| outstanding | HKD 1500 | +| | | +| vo (search page) | + HKD 350 | +| current outstanding | HKD 1850 | diff --git a/task1/.gitignore b/task1/.gitignore new file mode 100644 index 0000000..3b79ba6 --- /dev/null +++ b/task1/.gitignore @@ -0,0 +1 @@ +**/volumes/* diff --git a/task1/README.md b/task1/README.md new file mode 100644 index 0000000..8c6d571 --- /dev/null +++ b/task1/README.md @@ -0,0 +1,33 @@ +# README + +### known background requirement + +1. align `.wslconfig` for below parameters + +``` +[wsl2] +memory=4G +processors=4 +swap=16G +``` + +### start development/demo server + +```bash +# backup +$ node ./backup.js + +# 1. start docker +$ ./dc_up.sh + +# 2. +$ docker compose exec -it client bash + +# 3. into client, spin up dev server +$ yarn +$ yarn demo + +# 4. brows localhost -> http://localhost + + +``` diff --git a/task1/archive.zip b/task1/archive.zip new file mode 100644 index 0000000..a94b321 --- /dev/null +++ b/task1/archive.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fa287813a6c9ada4be97e7e9e74e0487db060d338a43fed9df2d3d2736b7e37 +size 20590809 diff --git a/task1/backup.js b/task1/backup.js new file mode 100644 index 0000000..d9a3d0f --- /dev/null +++ b/task1/backup.js @@ -0,0 +1,59 @@ +const execSync = require('child_process').execSync; +const fs = require('fs'); +const path = require('path'); + +// Function to get all subdirectories of a given directory +function getDirectories(srcPath, excludeDirs) { + return fs + .readdirSync(srcPath) + .filter(file => !excludeDirs.includes(file) && fs.lstatSync(path.join(srcPath, file)).isDirectory()) + .map(name => path.join(srcPath, name)); +} + +// Get current working directory +const cwd = process.cwd(); + +// Path to app-head directory +const appHeadDir = path.join(cwd, 'project'); + +// Check if app-head exists +if (!fs.existsSync(appHeadDir)) { + console.error(`Error: ${appHeadDir} does not exist.`); + process.exit(1); +} + +// Execute reset.bat scripts +try { + // execSync(`cmd /c "cd ${appHeadDir} && scripts\\reset.bat"`, { stdio: 'inherit' }); +} catch (err) { + console.error(`Error executing reset.bat script: ${err.message}`); + process.exit(1); +} + +// Define excluded directories +const excludedDirs = ['.next', 'node_modules', '.git', 'volumes']; + +// Copy app-head directory and its contents to a new directory with an increasing number suffix +let maxNum = 0; +const directories = getDirectories(cwd, excludedDirs); +for (const dir of directories) { + const match = dir.match(/^.+draft(\d+)$/); + if (match) { + const num = parseInt(match[1], 10); + if (num > maxNum) { + maxNum = num; + } + } +} + +var zerofilled = ('0000' + (maxNum + 1)).slice(-4); +const targetDir = path.join(cwd, `draft${zerofilled}`); +fs.mkdirSync(targetDir); + +// Copy app-head directory and its contents to targetDir, excluding specified directories +fs.cpSync(appHeadDir, targetDir, { + filter: src => !excludedDirs.includes(path.basename(src)), + recursive: true, +}); + +console.log(`Successfully copied ${appHeadDir} to ${targetDir}.`); diff --git a/task1/clear_node_modules.js b/task1/clear_node_modules.js new file mode 100644 index 0000000..7a87557 --- /dev/null +++ b/task1/clear_node_modules.js @@ -0,0 +1,21 @@ +const fs = require('fs'); +const path = require('path'); + +function removeNodeModules(dir) { + const entries = fs.readdirSync(dir, { withFileTypes: true }); + + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + + if (entry.isDirectory()) { + if (entry.name === 'node_modules') { + fs.rmSync(fullPath, { recursive: true }); + } else { + removeNodeModules(fullPath); + } + } + } +} + +removeNodeModules('.'); +console.log("All 'node_modules' directories have been removed."); diff --git a/task1/project/001_from_user/01.docx b/task1/project/001_from_user/01.docx new file mode 100644 index 0000000000000000000000000000000000000000..7faf3c17a6816f9f138f8ad4037b2b7c725f4489 GIT binary patch literal 106812 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 http://localhost + + +``` diff --git a/task1/project/002_notes/design/admin_case_list.png b/task1/project/002_notes/design/admin_case_list.png new file mode 100644 index 0000000..38e250b --- /dev/null +++ b/task1/project/002_notes/design/admin_case_list.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83b260b93b0242f9cd1d0771d8b988d43332e22730b3c5a23de3a2733b41025a +size 22662 diff --git a/task1/project/002_notes/design/admin_edit.jpg b/task1/project/002_notes/design/admin_edit.jpg new file mode 100644 index 0000000..dda8f33 --- /dev/null +++ b/task1/project/002_notes/design/admin_edit.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0358ad15fc9667d39f2ebff8a9d421122155758bdf4ec94aabee200c7e210a5d +size 39374 diff --git a/task1/project/002_notes/design/admin_home.png b/task1/project/002_notes/design/admin_home.png new file mode 100644 index 0000000..9609cd8 --- /dev/null +++ b/task1/project/002_notes/design/admin_home.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfd210ae88f4d3fab25a72bdeb3fbc107f22ff1d4e685024c290a3005ac893d8 +size 13376 diff --git a/task1/project/002_notes/design/admin_login.png b/task1/project/002_notes/design/admin_login.png new file mode 100644 index 0000000..3adc9c9 --- /dev/null +++ b/task1/project/002_notes/design/admin_login.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5c1b1bc05f1887822bc1f5fd7ba58561026bb246dd2307e6f3e2f6dfd3dccfc +size 14961 diff --git a/task1/project/002_notes/design/client_queue.png b/task1/project/002_notes/design/client_queue.png new file mode 100644 index 0000000..8e86b1b --- /dev/null +++ b/task1/project/002_notes/design/client_queue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40002760b6d815ea538e72b6669e66a44d098862f311bd3795518f3e3dafb1cd +size 19916 diff --git a/task1/project/002_notes/design/client_register.png b/task1/project/002_notes/design/client_register.png new file mode 100644 index 0000000..5bf9b89 --- /dev/null +++ b/task1/project/002_notes/design/client_register.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0347f49dd696db678bd4e82722a72822b34a04e63be913bf18e6674ba7008225 +size 28952 diff --git a/task1/project/002_notes/design/index.md b/task1/project/002_notes/design/index.md new file mode 100644 index 0000000..3ee266b --- /dev/null +++ b/task1/project/002_notes/design/index.md @@ -0,0 +1,39 @@ +# Digest + +### stack + +- app +- db + +### Registration form page (1page + 2 logic) + +![alt text](register.png) + +(Please add required fields checking for user didn't input data) + +- If user select more than three option will pass to semi-urgent waiting list, +- If user select advice include (nausea and vomiting) also pass to semi-urgent waiting list, +- otherwise > non - urgent waiting list) + +### Queue page (1 page + 2 logic) + +![alt text](queue.png) + +- DIsplay user waiting number +- waiting list type (semi-urgent /non-urgent) + +### admin login page (1 page + 1 logic) + +![alt text](admin_login.png) + +### Administrator page (1 page + 2 logic) + +![alt text](admin_home.png) + +### case list view (2 pages + 2 logic) + +![alt text](admin_case_list.png) + +- case can be modify +- save +- deleted diff --git a/task1/project/002_notes/design/search.jpg b/task1/project/002_notes/design/search.jpg new file mode 100644 index 0000000..8d19c2e --- /dev/null +++ b/task1/project/002_notes/design/search.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40d07aceec3329fb71f0eba37ae979349eaba27b923b46e2ec5070d06466e160 +size 30229 diff --git a/task1/project/003_src/client/.eslintignore b/task1/project/003_src/client/.eslintignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/task1/project/003_src/client/.eslintignore @@ -0,0 +1 @@ +node_modules diff --git a/task1/project/003_src/client/.eslintrc.js b/task1/project/003_src/client/.eslintrc.js new file mode 100644 index 0000000..e80f3b0 --- /dev/null +++ b/task1/project/003_src/client/.eslintrc.js @@ -0,0 +1,73 @@ +module.exports = { + env: { + browser: true, + es2021: true, + jest: true, + }, + extends: ['plugin:react/recommended', 'airbnb', 'prettier'], + globals: { + Atomics: 'readonly', + SharedArrayBuffer: 'readonly', + }, + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + ecmaVersion: 12, + sourceType: 'module', + }, + plugins: ['react', 'prettier'], + rules: { + 'react/react-in-jsx-scope': 'off', + 'import/no-duplicates': 'error', + 'import/no-unresolved': 'error', + 'import/named': 'error', + 'prettier/prettier': 'error', + 'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx'] }], + 'react/state-in-constructor': 'off', + 'react/prop-types': 'off', + 'react/no-access-state-in-setstate': 'error', + 'react/no-danger': 'error', + 'react/no-did-mount-set-state': 'error', + 'react/no-did-update-set-state': 'error', + 'react/no-will-update-set-state': 'error', + 'react/no-redundant-should-component-update': 'error', + 'react/no-this-in-sfc': 'error', + 'react/no-typos': 'error', + 'react/no-unused-state': 'error', + 'react/jsx-no-bind': 'error', + 'no-useless-call': 'error', + 'no-useless-computed-key': 'error', + 'no-useless-concat': 'error', + 'no-useless-constructor': 'error', + 'no-useless-rename': 'error', + 'no-useless-return': 'error', + 'react/jsx-props-no-spreading': 'off', + + // overriding recommended rules + 'no-constant-condition': ['error', { checkLoops: false }], + 'no-console': ['error', { allow: ['log', 'warn', 'error'] }], + 'no-unused-vars': ['error', { argsIgnorePattern: '^_' }], + 'no-underscore-dangle': ['error'], + + // + camelcase: 'off', + 'no-alert': 'off', + }, + settings: { + 'import/resolver': { + node: { + paths: ['.'], + }, + alias: { + map: [ + ['@/public', './public'], + ['@/config', './config'], + // Add more here + ], + extensions: ['.js', '.jsx'], + }, + }, + }, + ignorePatterns: ['*_*', '*test*', '**/*debug*', '**/*copy*', '*helloworld*'], +}; diff --git a/task1/project/003_src/client/.gitignore b/task1/project/003_src/client/.gitignore new file mode 100644 index 0000000..315c9c9 --- /dev/null +++ b/task1/project/003_src/client/.gitignore @@ -0,0 +1,39 @@ +**/*copy* +**/*.del +**/*.log + + +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# vercel +.vercel diff --git a/task1/project/003_src/client/.husky/common.sh b/task1/project/003_src/client/.husky/common.sh new file mode 100644 index 0000000..0f4ced8 --- /dev/null +++ b/task1/project/003_src/client/.husky/common.sh @@ -0,0 +1,8 @@ +command_exists () { + command -v "$1" >/dev/null 2>&1 +} + +# Workaround for Windows 10, Git Bash and Yarn +if command_exists winpty && test -t 1; then + exec < /dev/tty +fi \ No newline at end of file diff --git a/task1/project/003_src/client/.husky/pre-commit b/task1/project/003_src/client/.husky/pre-commit new file mode 100644 index 0000000..58a97a4 --- /dev/null +++ b/task1/project/003_src/client/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" +. "$(dirname "$0")/common.sh" + +yarn lint-staged \ No newline at end of file diff --git a/task1/project/003_src/client/.prettierignore b/task1/project/003_src/client/.prettierignore new file mode 100644 index 0000000..bba6c41 --- /dev/null +++ b/task1/project/003_src/client/.prettierignore @@ -0,0 +1,18 @@ +node_modules +.next +.DS_Store +static +.vercel +public/ +.github/ +.babelrc +README.md + +# ignore deployment files +/.now +/.serverless +/.serverless_nextjs +/.vercel +.vercel +.now +.env diff --git a/task1/project/003_src/client/.prettierrc.js b/task1/project/003_src/client/.prettierrc.js new file mode 100644 index 0000000..8cb37d4 --- /dev/null +++ b/task1/project/003_src/client/.prettierrc.js @@ -0,0 +1,18 @@ +module.exports = { + arrowParens: 'avoid', + bracketSpacing: true, + htmlWhitespaceSensitivity: 'css', + insertPragma: false, + bracketSameLine: false, + jsxSingleQuote: true, + printWidth: 120, + proseWrap: 'preserve', + quoteProps: 'as-needed', + requirePragma: false, + semi: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'all', + useTabs: false, + plugins: [require.resolve('prettier-plugin-organize-imports')], +}; diff --git a/task1/project/003_src/client/.vscode/settings.json b/task1/project/003_src/client/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/task1/project/003_src/client/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/task1/project/003_src/client/LICENCE.txt b/task1/project/003_src/client/LICENCE.txt new file mode 100644 index 0000000..fd2901e --- /dev/null +++ b/task1/project/003_src/client/LICENCE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Othneil Drew + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/task1/project/003_src/client/README.md b/task1/project/003_src/client/README.md new file mode 100644 index 0000000..489ae06 --- /dev/null +++ b/task1/project/003_src/client/README.md @@ -0,0 +1,31 @@ +### endpoints + +```bash +http://localhost/api/patient_queue/list +http://localhost/api/patient_queue/non_urgent_case +http://localhost/api/patient_queue/semi_urgent_case + +``` + +### start demo + +```bash +# start docker desktop in host +# inside wsl + +# 1. start docker +$ ./dc_up.sh + +# 2. get into container +$ docker compose exec -it client bash + +# 3. start demo +$ ./demo.sh + +# 4. browse http://localhost after complete +``` + +### test ac + +username: admin +password: nimda diff --git a/task1/project/003_src/client/components/AdminQueueItemCard/index.js b/task1/project/003_src/client/components/AdminQueueItemCard/index.js new file mode 100644 index 0000000..3f9dabb --- /dev/null +++ b/task1/project/003_src/client/components/AdminQueueItemCard/index.js @@ -0,0 +1,66 @@ +import Box from '@mui/material/Box'; + +const row = { + display: 'flex', + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', +}; + +const labelColumn = { + fontWeight: 'bold', + width: '25%', +}; + +const valueColumn = { + width: '75%', +}; + +const cardTitle = { + fontWeight: 'bold', + fontSize: '1.2rem', + display: 'flex', + flexDirection: 'row', + justifyContent: 'center', +}; + +export default function AdminQueueItemCard({ queue_data }) { + return ( + + + {`non-urgent-case ${queue_data.id}`} + + + Name + {queue_data.name || ''} + + + HKID + {queue_data.hkid || '-'} + + + Mobile + {queue_data.mobile || '-'} + + + + + ); +} diff --git a/task1/project/003_src/client/components/Loading/index.js b/task1/project/003_src/client/components/Loading/index.js new file mode 100644 index 0000000..31f81f4 --- /dev/null +++ b/task1/project/003_src/client/components/Loading/index.js @@ -0,0 +1,15 @@ +import { Box } from '@mui/material'; + +export default () => ( + + loading... + +); diff --git a/task1/project/003_src/client/components/NonUrgentQueueItemCard/index.js b/task1/project/003_src/client/components/NonUrgentQueueItemCard/index.js new file mode 100644 index 0000000..3a0b264 --- /dev/null +++ b/task1/project/003_src/client/components/NonUrgentQueueItemCard/index.js @@ -0,0 +1,122 @@ +import { Box, Button } from '@mui/material'; +import { useRouter } from 'next/dist/client/router'; +import { useState } from 'react'; + +const row = { + display: 'flex', + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', +}; + +const labelColumn = { + fontWeight: 'bold', + width: '25%', +}; + +const valueColumn = { + width: '75%', +}; + +const cardTitle = { + fontWeight: 'bold', + fontSize: '1.2rem', + display: 'flex', + flexDirection: 'row', + justifyContent: 'center', +}; + +export default ({ queue_data, show_edit_delete = true }) => { + const router = useRouter(); + + const [changing_page, setChangingPage] = useState(false); + + function handleDeleteItemClick({ queue_type, id }) { + setChangingPage(true); + fetch(`/api/patient_queue/delete_queue_item?queue_type=${queue_type}&id=${id}`, { + method: 'GET', + }) + .then(response => response.json()) + .then(data => { + if (data.status === 'OK') { + console.log('item deleted'); + alert('item deleted'); + router.reload(); + } else { + console.error(data.message); + } + }) + .catch(err => { + console.error(err); + alert('error during removing queue'); + }); + } + + function handleEditItemClick({ id }) { + setChangingPage(true); + router.push(`/NonUrgentCaseEdit/${id}`); + } + + return ( + + + {`non-urgent-case ${queue_data.id}`} + + + + + Name + {queue_data.name || ''} + + + HKID + {queue_data.hkid || '-'} + + + Mobile + {queue_data.mobile || '-'} + + + + + + + {/* */} + + + + + + ); +}; diff --git a/task1/project/003_src/client/components/SemiUrgentQueueItemCard/index.js b/task1/project/003_src/client/components/SemiUrgentQueueItemCard/index.js new file mode 100644 index 0000000..599ff09 --- /dev/null +++ b/task1/project/003_src/client/components/SemiUrgentQueueItemCard/index.js @@ -0,0 +1,118 @@ +import { Box, Button } from '@mui/material'; +import { useRouter } from 'next/dist/client/router'; +import { useState } from 'react'; + +const row = { + display: 'flex', + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', +}; + +const labelColumn = { + fontWeight: 'bold', + width: '25%', +}; + +const valueColumn = { + width: '75%', +}; + +const cardTitle = { + fontWeight: 'bold', + fontSize: '1.2rem', + display: 'flex', + flexDirection: 'row', + justifyContent: 'center', +}; + +export default ({ queue_data, show_edit_delete = true }) => { + const router = useRouter(); + const [changing_page, setChangingPage] = useState(false); + + function handleDeleteItemClick({ queue_type, id }) { + setChangingPage(true); + fetch(`/api/patient_queue/delete_queue_item?queue_type=${queue_type}&id=${id}`, { + method: 'GET', + }) + .then(response => response.json()) + .then(data => { + if (data.status === 'OK') { + console.log('item deleted'); + router.reload(); + } else { + console.error(data.message); + } + }) + .catch(err => { + console.error(err); + }); + } + + function handleEditItemClick({ id }) { + setChangingPage(true); + router.push(`/SemiUrgentCaseEdit/${id}`); + } + + return ( + + + {`semi-urgent-case ${queue_data.id}`} + + + + + Name + {queue_data.name || ''} + + + HKID + {queue_data.hkid || '-'} + + + Mobile + {queue_data.mobile || '-'} + + + + + + + + + + + + ); +}; diff --git a/task1/project/003_src/client/config/StyledMaterialThemeProvider.js b/task1/project/003_src/client/config/StyledMaterialThemeProvider.js new file mode 100644 index 0000000..a65ac5c --- /dev/null +++ b/task1/project/003_src/client/config/StyledMaterialThemeProvider.js @@ -0,0 +1,15 @@ +import CssBaseline from '@mui/material/CssBaseline'; +import { ThemeProvider as MuiThemeProvider } from '@mui/material/styles'; +import { StylesProvider } from '@mui/styles'; +import { ThemeProvider as StyledThemeProvider } from 'styled-components'; + +const MyThemeProvider = ({ theme, children }) => ( + + + + {children} + + +); + +export default MyThemeProvider; diff --git a/task1/project/003_src/client/config/theme.js b/task1/project/003_src/client/config/theme.js new file mode 100644 index 0000000..23553e6 --- /dev/null +++ b/task1/project/003_src/client/config/theme.js @@ -0,0 +1,37 @@ +import { red } from '@mui/material/colors'; +import { createTheme } from '@mui/material/styles'; + +// Create a theme instance. +const theme = createTheme({ + palette: { + primary: { + main: '#556cd6', + }, + secondary: { + main: '#19857b', + }, + error: { + main: red.A400, + }, + }, + components: { + MuiTypography: { + defaultProps: { + variantMapping: { + h1: 'h2', + h2: 'h2', + h3: 'h2', + h4: 'h2', + h5: 'h2', + h6: 'h2', + subtitle1: 'h2', + subtitle2: 'h2', + body1: 'span', + body2: 'span', + }, + }, + }, + }, +}); + +export default theme; diff --git a/task1/project/003_src/client/db_seed/auth.js b/task1/project/003_src/client/db_seed/auth.js new file mode 100644 index 0000000..9d634d7 --- /dev/null +++ b/task1/project/003_src/client/db_seed/auth.js @@ -0,0 +1,47 @@ +const { DataTypes } = require('sequelize'); +const bcrypt = require('bcrypt'); +const { sequelize } = require('./model'); + +const Auth = sequelize.define( + 'Auths', + { + uid: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + username: { type: DataTypes.STRING, allowNull: false }, + password: { type: DataTypes.STRING, allowNull: false }, + session: { type: DataTypes.STRING, allowNull: false, defaultValue: '' }, + role: { type: DataTypes.STRING, allowNull: false, defaultValue: 'customer' }, + }, + { timestamps: false }, +); + +async function hashPassword(plainTextPassword) { + const saltRounds = 10; + return await bcrypt.hash(plainTextPassword, saltRounds); +} + +(async () => { + try { + await sequelize.authenticate(); + console.log('Connection has been established successfully.'); + + // create table + await Auth.drop(); + await sequelize.sync(); + + let user_row; + let password; + user_row = await Auth.create({ + username: 'admin', + password: 'nimda', + role: 'admin', + }); + + user_row = await Auth.create({ username: 'pat1', password: await hashPassword('1tap') }); + user_row = await Auth.create({ username: 'pat2', password: await hashPassword('2tap') }); + user_row = await Auth.create({ username: 'pat3', password: await hashPassword('3tap') }); + + await sequelize.close(); + } catch (error) { + console.error('Unable to connect to the database:', error); + } +})(); diff --git a/task1/project/003_src/client/db_seed/model.js b/task1/project/003_src/client/db_seed/model.js new file mode 100644 index 0000000..9bf36e0 --- /dev/null +++ b/task1/project/003_src/client/db_seed/model.js @@ -0,0 +1,15 @@ +const { Sequelize } = require('sequelize'); + +const sequelize = new Sequelize('app_db', 'db_user', 'db_user_pass', { + host: 'mysql', + port: 3306, + dialect: 'mysql', +}); + +const sequelize_config = new Sequelize('app_db', 'db_user', 'db_user_pass', { + host: 'mysql', + port: 3306, + dialect: 'mysql', +}); + +module.exports = { sequelize, sequelize_config }; diff --git a/task1/project/003_src/client/db_seed/non_urgent_case_queue.js b/task1/project/003_src/client/db_seed/non_urgent_case_queue.js new file mode 100644 index 0000000..84aad50 --- /dev/null +++ b/task1/project/003_src/client/db_seed/non_urgent_case_queue.js @@ -0,0 +1,48 @@ +const { Sequelize, DataTypes } = require('sequelize'); +// const { sequelize } = require('./model'); // abonded +const sequelize_config = require('../utils/sequelize_config'); + +const Item = sequelize_config.define( + 'NonUrgentQueue', + { + id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + name: { type: DataTypes.STRING, allowNull: false }, + hkid: { type: DataTypes.STRING, allowNull: false }, + mobile: { type: DataTypes.STRING, allowNull: false }, + age: { type: DataTypes.INTEGER, allowNull: false }, + description: { type: DataTypes.STRING, allowNull: false }, + // + bruisesScratchesMinorBurns: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + chestPain: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + headache: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + myMuiCheck: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + nauseaAndVomiting: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + runnyOrStuffyNose: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + soreThroat: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + }, + { timestamps: false }, +); + +(async () => { + try { + await sequelize_config.authenticate(); + console.log('Connection has been established successfully.'); + + await Item.drop(); + + await sequelize_config.sync(); + for (let i = 0; i < 3; i++) { + await Item.create({ + name: `non-urgent-patient ${i}`, + hkid: `A123456(${i})`, + mobile: `9123456${i}`, + age: i + 10, + description: `non-urgent queue ${i}`, + }); + } + + await sequelize_config.close(); + } catch (error) { + console.error('Unable to connect to the database:', error); + } +})(); diff --git a/task1/project/003_src/client/db_seed/patient_queue.js b/task1/project/003_src/client/db_seed/patient_queue.js new file mode 100644 index 0000000..ef1bfb0 --- /dev/null +++ b/task1/project/003_src/client/db_seed/patient_queue.js @@ -0,0 +1,33 @@ +const { Sequelize, DataTypes } = require('sequelize'); +const { sequelize } = require('./model'); + +const Item = sequelize.define( + 'PatientQueue', + { + id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + description: { type: DataTypes.STRING, allowNull: false }, + }, + { timestamps: false }, +); + +(async () => { + try { + await sequelize.authenticate(); + console.log('Connection has been established successfully.'); + + await Item.drop(); + + await sequelize.sync(); + for (let i = 0; i < 10; i++) { + await Item.create({ + // get remainder of i divided by 3 + // pid: (i % 25) + 1, + description: `test item ${i}`, + }); + } + + await sequelize.close(); + } catch (error) { + console.error('Unable to connect to the database:', error); + } +})(); diff --git a/task1/project/003_src/client/db_seed/semi_urgent_case_queue.js b/task1/project/003_src/client/db_seed/semi_urgent_case_queue.js new file mode 100644 index 0000000..107e093 --- /dev/null +++ b/task1/project/003_src/client/db_seed/semi_urgent_case_queue.js @@ -0,0 +1,48 @@ +const { Sequelize, DataTypes } = require('sequelize'); +// const { sequelize } = require('./model'); //abonded +const sequelize_config = require('../utils/sequelize_config'); + +const Item = sequelize_config.define( + 'SemiUrgentQueue', + { + id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + name: { type: DataTypes.STRING, allowNull: false }, + hkid: { type: DataTypes.STRING, allowNull: false }, + mobile: { type: DataTypes.STRING, allowNull: false }, + age: { type: DataTypes.INTEGER, allowNull: false }, + description: { type: DataTypes.STRING, allowNull: false }, + // + bruisesScratchesMinorBurns: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + chestPain: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + headache: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + myMuiCheck: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + nauseaAndVomiting: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + runnyOrStuffyNose: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + soreThroat: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + }, + { timestamps: false }, +); + +(async () => { + try { + await sequelize_config.authenticate(); + console.log('Connection has been established successfully.'); + + await Item.drop(); + + await sequelize_config.sync(); + for (let i = 5; i < 8; i++) { + await Item.create({ + name: `semi-urgent-patient ${i}`, + hkid: `A123456(${i})`, + mobile: `9123456${i}`, + age: i + 20, + description: `semi-urgent queue ${i}`, + }); + } + + await sequelize_config.close(); + } catch (error) { + console.error('Unable to connect to the database:', error); + } +})(); diff --git a/task1/project/003_src/client/demo.sh b/task1/project/003_src/client/demo.sh new file mode 100755 index 0000000..55d01e2 --- /dev/null +++ b/task1/project/003_src/client/demo.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -ex + +rm -rf .next node_modules/* + +yarn --dev + +yarn build + +yarn demo diff --git a/task1/project/003_src/client/entry.sh b/task1/project/003_src/client/entry.sh new file mode 100755 index 0000000..01ea44a --- /dev/null +++ b/task1/project/003_src/client/entry.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -ex + +yarn --dev + +yarn seed + +yarn dev diff --git a/task1/project/003_src/client/jsconfig.json b/task1/project/003_src/client/jsconfig.json new file mode 100644 index 0000000..2e6b7e3 --- /dev/null +++ b/task1/project/003_src/client/jsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es6", + "lib": ["dom", "dom.iterable", "esnext"], + "baseUrl": ".", + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "paths": { + "@/config/*": ["./config/*"], + "@/public/*": ["./public"] + }, + "plugins": [] + }, + "include": ["**/*.js", "**/*.jsx"], + "exclude": ["node_modules", "**/*copy*", "**/*.del"] +} diff --git a/task1/project/003_src/client/next.config.js b/task1/project/003_src/client/next.config.js new file mode 100644 index 0000000..da1bb77 --- /dev/null +++ b/task1/project/003_src/client/next.config.js @@ -0,0 +1,3 @@ +module.exports = { + reactStrictMode: true, +}; diff --git a/task1/project/003_src/client/package.json b/task1/project/003_src/client/package.json new file mode 100644 index 0000000..7b418b7 --- /dev/null +++ b/task1/project/003_src/client/package.json @@ -0,0 +1,69 @@ +{ + "name": "next-mui-boilerplate", + "private": true, + "description": "A JavaScript Nextjs boilerplate complete with material ui, eslint, airbnb react style guides and husky pre-commit hooks", + "keywords": [ + "nextjs", + "mui", + "material-ui", + "airbnb-style-guides", + "husky", + "prettier", + "eslint" + ], + "scripts": { + "build:w": "npx nodemon -w . --exec 'yarn build'", + "build": "yarn run clear && next build", + "clear": "rm -rf .next", + "demo": "yarn seed && yarn start", + "dev": "next dev -H 0.0.0.0", + "format": "prettier --ignore-path .prettierignore --write .", + "lint-fix:w": "npx nodemon -w . --exec 'yarn lint-fix'", + "lint-fix": "eslint --fix --ext .js,.jsx .", + "lint": "eslint **/*.js --report-unused-disable-directives", + "prepare_disabled": "husky install", + "seed": "cd db_seed && node ./auth.js && node ./patient_queue.js && node ./semi_urgent_case_queue.js && node ./non_urgent_case_queue.js", + "seed1": "cd db_seed && node ./auth.js && node ./patient_queue.js", + "start": "next start" + }, + "lint-staged": { + "*js": [ + "yarn lint --fix", + "yarn format" + ] + }, + "dependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/icons-material": "^6.1.3", + "@mui/lab": "^6.0.0-beta.12", + "@mui/material": "^5.1.0", + "@mui/styles": "^5.1.0", + "bcrypt": "^5.1.1", + "dotenv": "^16.4.5", + "formik": "^2.4.6", + "mysql2": "^3.11.3", + "next": "12.0.3", + "prettier-plugin-organize-imports": "^4.1.0", + "react": "17.0.2", + "react-dom": "17.0.2", + "sequelize": "^6.37.4", + "styled-components": "^5.3.3", + "typescript": "^5.6.3", + "yup": "^1.4.0" + }, + "devDependencies": { + "eslint": "<8.0.0", + "eslint-config-airbnb": "^18.2.1", + "eslint-config-next": "12.0.2", + "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-react-hooks": "^4.2.0", + "husky": "^7.0.0", + "lint-staged": "^11.2.6", + "prettier": "^2.4.1" + } +} diff --git a/task1/project/003_src/client/pages/AdminHome/index.js b/task1/project/003_src/client/pages/AdminHome/index.js new file mode 100644 index 0000000..668d417 --- /dev/null +++ b/task1/project/003_src/client/pages/AdminHome/index.js @@ -0,0 +1,136 @@ +import React, { useState } from 'react'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import MenuIcon from '@mui/icons-material/Menu'; +import { + Box, + Button, + Drawer, + IconButton, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, +} from '@mui/material'; +import { useRouter } from 'next/dist/client/router'; +import Head from 'next/head'; + +export default function Home() { + const [open, setOpen] = React.useState(false); + const router = useRouter(); + + const [changing_page, setChangingPage] = useState(false); + + const toggleDrawer = newOpen => () => { + setOpen(newOpen); + }; + + const DrawerList = ( + + + + { + setChangingPage(true); + router.push('/AdminLogin'); + }} + > + + + + + + + + + ); + + return ( + <> + + admin dashboard + + + + + + + + + + Admin dashboard + + + + + + + + + + + + + + + + + + + + + {DrawerList} + + + ); +} diff --git a/task1/project/003_src/client/pages/AdminLogin/index.js b/task1/project/003_src/client/pages/AdminLogin/index.js new file mode 100644 index 0000000..ccc6daa --- /dev/null +++ b/task1/project/003_src/client/pages/AdminLogin/index.js @@ -0,0 +1,168 @@ +import { Box, Button, TextField } from '@mui/material'; +import Head from 'next/head'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import LoginIcon from '@mui/icons-material/Login'; +import { useFormik } from 'formik'; +import { useRouter } from 'next/dist/client/router'; +import React from 'react'; +import is_development_plant from 'utils/is_development_plant'; +import * as yup from 'yup'; + +let default_init_values = { + username: '', + passwod: '', +}; + +if (is_development_plant) { + console.log('development plant'); + + default_init_values = { + username: 'admi', + password: 'nimda', + }; +} + +const validationSchema = yup.object({ + username: yup + .string('Enter your username') + .min(5, 'Username should be of minimum 5 characters length') + .required('Username is required'), + password: yup + .string('Enter your password') + .min(5, 'Password should be of minimum 5 characters length') + .required('Password is required'), +}); + +export default function Home() { + const router = useRouter(); + const [changing_page, setChangingPage] = React.useState(false); + + const formik = useFormik({ + initialValues: default_init_values, + validationSchema, + onSubmit: values => { + fetch('/api/auth/login', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(values), + }) + .then(res => res.json()) + .then(data => { + if (data.success) { + router.push('/AdminHome'); + } else { + alert(data.message); + formik.resetForm(); + } + }) + .catch(err => { + console.error(err); + alert('server error'); + }); + }, + }); + + return ( + <> + + admin login page + + + + + + +
+ + Admin Login Page + + + + + + + + + +
+
+ + ); +} diff --git a/task1/project/003_src/client/pages/NonUrgentCaseEdit/[id].js b/task1/project/003_src/client/pages/NonUrgentCaseEdit/[id].js new file mode 100644 index 0000000..661e265 --- /dev/null +++ b/task1/project/003_src/client/pages/NonUrgentCaseEdit/[id].js @@ -0,0 +1,246 @@ +import React, { useEffect, useState } from 'react'; + +import { Box, Button, TextField } from '@mui/material'; +import Head from 'next/head'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import Loading from 'components/Loading'; +import { useFormik } from 'formik'; +import { useRouter } from 'next/dist/client/router'; +import * as yup from 'yup'; + +const validationSchema = yup.object({ + patient_name: yup + .string('Enter your name') + .min(2, 'Name should be of minimum 2 characters length') + .required('Name is required'), + patient_hkid: yup + .string('Enter your HKID') + .matches(/^[A-Z]{1,2}[0-9]{6}\([0-9]\)$/, 'HKID should be in format of XX123456(1-9)') + .required('HKID is required'), + patient_age: yup + .number('Enter your age') + .min(1, 'Age should be greater than 0') + .max(90, 'Age should be less than 90') + .required('Age is required'), + patient_mobile: yup + .string('Enter your mobile number') + .matches(/^[0-9]{8}$/, 'Mobile number should be 8 numbers') + .required('Mobile number is required'), +}); + +export default () => { + const router = useRouter(); + const { id } = router.query; + + const [loading, setLoading] = React.useState(true); + const [changing_page, setChangingPage] = useState(false); + + const formik = useFormik({ + enableReinitialize: true, + initialValues: { + patient_name: '', + patient_hkid: '', + patient_age: 0, + patient_mobile: '', + bruisesScratchesMinorBurns: false, + chestPain: false, + headache: false, + myMuiCheck: false, + nauseaAndVomiting: false, + runnyOrStuffyNose: false, + soreThroat: false, + }, + validationSchema, + onSubmit: values => { + fetch('/api/patient_queue/update_queue_item', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ id, queue_type: 'non-urgent', values }), + }) + .then(response => response.json()) + .then(data => { + if (data.status) { + alert('saved !'); + router.reload(); + } else { + // alert(data.message); + alert('sorry there are something wrong, please try again'); + } + }) + .catch(err => { + console.error(err); + alert('server error'); + }); + }, + }); + + useEffect(() => { + console.log({ t: `/api/patient_queue/read_queue_item?queue_type=non-urgent&id=${id}` }); + if (id) { + fetch(`/api/patient_queue/read_queue_item?queue_type=non-urgent&id=${id}`, { + method: 'GET', + }) + .then(response => response.json()) + .then(data => { + if (data.status) { + console.log(data); + + const { + name, + hkid, + mobile, + age, + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + } = data.queueItem; + + formik.setValues({ + patient_name: name, + patient_hkid: hkid, + patient_mobile: mobile, + patient_age: age, + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + }); + } else { + alert(data.message); + } + + setLoading(false); + }) + .catch(err => { + console.error(err); + alert('server error'); + }) + .finally(() => { + setLoading(false); + }); + } + }, [id]); + + if (loading) { + return ; + } + + return ( + <> + + dashboard - non-urgent case + + + + + +
+ + + Edit Registration + + + + + + + + + {/* */} + + + +
+
+ + ); +}; diff --git a/task1/project/003_src/client/pages/NonUrgentCaseList/QueueIsEmpty.js b/task1/project/003_src/client/pages/NonUrgentCaseList/QueueIsEmpty.js new file mode 100644 index 0000000..9fddf59 --- /dev/null +++ b/task1/project/003_src/client/pages/NonUrgentCaseList/QueueIsEmpty.js @@ -0,0 +1,40 @@ +import { ChevronLeftOutlined } from '@mui/icons-material'; +import { Box, Button } from '@mui/material'; +import { useRouter } from 'next/dist/client/router'; +import { useState } from 'react'; + +export default () => { + const [changing_page, setChangingPage] = useState(false); + const router = useRouter(); + + return ( + + Queue is empty + + + ); +}; diff --git a/task1/project/003_src/client/pages/NonUrgentCaseList/index.js b/task1/project/003_src/client/pages/NonUrgentCaseList/index.js new file mode 100644 index 0000000..418e6a7 --- /dev/null +++ b/task1/project/003_src/client/pages/NonUrgentCaseList/index.js @@ -0,0 +1,114 @@ +import MenuIcon from '@mui/icons-material/Menu'; +import React, { useEffect, useState } from 'react'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import { Box, Drawer, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; +import Loading from 'components/Loading'; +import NonUrgentQueueItemCard from 'components/NonUrgentQueueItemCard'; +import { useRouter } from 'next/dist/client/router'; +import Head from 'next/head'; +import QueueIsEmpty from './QueueIsEmpty'; + +export default () => { + const [open, setOpen] = React.useState(false); + const [p_queue, setPQueue] = React.useState([]); + const router = useRouter(); + const [loading, setLoading] = React.useState(true); + + const [changing_page, setChangingPage] = useState(false); + + const toggleDrawer = newOpen => () => { + setOpen(newOpen); + }; + + useEffect(() => { + fetch('/api/patient_queue/non_urgent_case') + .then(response => response.json()) + .then(data => { + setPQueue(data.patient_queues); + setLoading(false); + }); + }, []); + + const DrawerList = ( + + + + { + setChangingPage(true); + router.push('/AdminHome'); + }} + > + + + + + + + + + ); + + if (loading) { + return ; + } + + return ( + <> + + dashboard - non-urgent case + + + + + + + + + + All Non-Urgent Cases + + {/* */} + + {p_queue.length === 0 ? ( + + ) : ( + <> + {p_queue.map(queue_data => ( + + ))} + + --end of list-- + + + )} + + helloworld + + + + {DrawerList} + + + ); +}; diff --git a/task1/project/003_src/client/pages/PatientLanding/index.js b/task1/project/003_src/client/pages/PatientLanding/index.js new file mode 100644 index 0000000..7be3373 --- /dev/null +++ b/task1/project/003_src/client/pages/PatientLanding/index.js @@ -0,0 +1,40 @@ +import { Box, Button } from '@mui/material'; +import { useRouter } from 'next/dist/client/router'; +import { useState } from 'react'; + +export default () => { + const router = useRouter(); + const [changing_page, setChangingPage] = useState(false); + + return ( + <> + + Patient Landing + + + + + + + + ); +}; diff --git a/task1/project/003_src/client/pages/PatientQueueDisplay/index.js b/task1/project/003_src/client/pages/PatientQueueDisplay/index.js new file mode 100644 index 0000000..6b2e245 --- /dev/null +++ b/task1/project/003_src/client/pages/PatientQueueDisplay/index.js @@ -0,0 +1,119 @@ +import React, { useEffect, useState } from 'react'; + +import { Box, Button } from '@mui/material'; +import Loading from 'components/Loading'; +import { useRouter } from 'next/dist/client/router'; +import Head from 'next/head'; + +export default () => { + const [loading, setLoading] = React.useState(true); + const router = useRouter(); + const [changing_page, setChangingPage] = useState(false); + + const [queue_type, setQueueType] = useState(''); + const [queue_id, setQueueId] = useState(''); + + useEffect(() => { + let temp; + temp = localStorage.getItem('queue_type'); + if (temp) setQueueType(temp); + + temp = localStorage.getItem('queue_id'); + if (temp) setQueueId(temp); + + setLoading(false); + }, []); + + if (loading) { + return ; + } + + return ( + <> + + dashboard - non-urgent case + + + + + + Queue Number + + {queue_id} + + + + {queue_type !== '' ? ( + <> + Your waiting list category + {queue_type} + + ) : ( + <> + )} + + + + please screen capture + for saving your Queue Number + + + + + + + + ); +}; diff --git a/task1/project/003_src/client/pages/PatientRegister/index.js b/task1/project/003_src/client/pages/PatientRegister/index.js new file mode 100644 index 0000000..6309768 --- /dev/null +++ b/task1/project/003_src/client/pages/PatientRegister/index.js @@ -0,0 +1,318 @@ +import React, { useEffect } from 'react'; + +import MailIcon from '@mui/icons-material/Mail'; +import InboxIcon from '@mui/icons-material/MoveToInbox'; +import { + Box, + Button, + Checkbox, + Divider, + Drawer, + FormControlLabel, + FormGroup, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, + TextField, +} from '@mui/material'; +import Head from 'next/head'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import Loading from 'components/Loading'; +import { useFormik } from 'formik'; +import { useRouter } from 'next/dist/client/router'; +import * as yup from 'yup'; + +const validationSchema = yup.object({ + patient_name: yup + .string('Enter your name') + .min(2, 'Name should be of minimum 2 characters length') + .required('Name is required'), + patient_hkid: yup + .string('Enter your HKID') + .matches(/^[A-Z]{1,2}[0-9]{6}\([0-9]\)$/, 'HKID should be in format of XX123456(1-9)') + .required('HKID is required'), + patient_age: yup + .number('Enter your age') + .min(1, 'Age should be greater than 0') + .max(90, 'Age should be less than 90') + .required('Age is required'), + patient_mobile: yup + .string('Enter your mobile number') + .matches(/^[0-9]{8}$/, 'Mobile number should be 8 numbers') + .required('Mobile number is required'), +}); + +export default () => { + const [open, setOpen] = React.useState(false); + const [loading, setLoading] = React.useState(true); + const [one_symptoms_selected, setOneSymptomsSelected] = React.useState(false); + const router = useRouter(); + + const toggleDrawer = newOpen => () => { + setOpen(newOpen); + }; + + const formik = useFormik({ + initialValues: { + patient_name: '', + patient_hkid: '', + patient_age: 0, + patient_mobile: '', + bruisesScratchesMinorBurns: false, + chestPain: false, + headache: false, + myMuiCheck: false, + nauseaAndVomiting: false, + runnyOrStuffyNose: true, + soreThroat: false, + }, + validationSchema, + onSubmit: values => { + // alert(JSON.stringify(values, null, 2)); + fetch('/api/patient_queue/register', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ values }), + }) + .then(response => response.json()) + .then(data => { + if (data.success) { + if (data.queue) { + alert(`registered successfully, will assign you to ${data.queue} queue`); + } else { + alert(`registered successfully`); + } + localStorage.setItem('queue_type', data.queue); + localStorage.setItem('queue_id', data.result.id); + localStorage.setItem('queue_name', data.result.name); + localStorage.setItem('queue_hkid', data.result.hkid); + localStorage.setItem('queue_mobile', data.result.mobile); + localStorage.setItem('queue_description', data.result.description); + + router.push('/PatientQueueDisplay'); + } else { + // alert(data.message); + alert('sorry there are something wrong, please try again'); + } + }) + .catch(err => { + console.error(err); + alert('server error'); + }); + }, + }); + + useEffect(() => { + setOneSymptomsSelected( + !( + formik.values.bruisesScratchesMinorBurns || + formik.values.chestPain || + formik.values.headache || + formik.values.myMuiCheck || + formik.values.nauseaAndVomiting || + formik.values.runnyOrStuffyNose || + formik.values.soreThroat + ), + ); + }, [formik.values]); + + const DrawerList = ( + + + {['Inbox', 'Starred', 'Send email', 'Drafts'].map((text, index) => ( + + + {index % 2 === 0 ? : } + + + + ))} + + + + {['All mail', 'Trash', 'Spam'].map((text, index) => ( + + + {index % 2 === 0 ? : } + + + + ))} + + + ); + + useEffect(() => { + if (localStorage.getItem('queue_id')) { + router.push('/PatientQueueDisplay'); + } else { + setLoading(false); + } + }, []); + + if (loading) { + return ; + } + + return ( + <> + + dashboard - non-urgent case + + + + + +
+ + + Electronic Diagnosis Registration + + + + + + + + + Reason for seeking medical advice + {formik.dirty && one_symptoms_selected ? ( + + Please select at least one symptom + + ) : ( + <> + )} + + } + label='Runny or stuffy nose' + checked={formik.values.runnyOrStuffyNose} + onChange={() => formik.setFieldValue('runnyOrStuffyNose', !formik.values.runnyOrStuffyNose)} + /> + } + label='sore throat' + checked={formik.values.soreThroat} + onChange={() => formik.setFieldValue('soreThroat', !formik.values.soreThroat)} + /> + + } + label='nausea and vomiting' + checked={formik.values.nauseaAndVomiting} + onChange={() => formik.setFieldValue('nauseaAndVomiting', !formik.values.nauseaAndVomiting)} + /> + } + label='Headache (Semi-urgent)' + checked={formik.values.headache} + onChange={() => formik.setFieldValue('headache', !formik.values.headache)} + /> + } + label='chest pain (Semi-urgent)' + checked={formik.values.chestPain} + onChange={() => formik.setFieldValue('chestPain', !formik.values.chestPain)} + /> + } + label='Bruises, scratches, minor burns (Semi-urgent)' + checked={formik.values.bruisesScratchesMinorBurns} + onChange={() => + formik.setFieldValue('bruisesScratchesMinorBurns', !formik.values.bruisesScratchesMinorBurns) + } + /> + + + + + {/* */} + + + +
+
+ + + {DrawerList} + + + ); +}; diff --git a/task1/project/003_src/client/pages/SearchCase/NoResultFound.js b/task1/project/003_src/client/pages/SearchCase/NoResultFound.js new file mode 100644 index 0000000..b98a544 --- /dev/null +++ b/task1/project/003_src/client/pages/SearchCase/NoResultFound.js @@ -0,0 +1,21 @@ +import { Box } from '@mui/material'; + +export default () => ( + + No result found + +); diff --git a/task1/project/003_src/client/pages/SearchCase/PressSearchToStart.js b/task1/project/003_src/client/pages/SearchCase/PressSearchToStart.js new file mode 100644 index 0000000..3f2a7eb --- /dev/null +++ b/task1/project/003_src/client/pages/SearchCase/PressSearchToStart.js @@ -0,0 +1,21 @@ +import { Box } from '@mui/material'; + +export default () => ( + + Press Search to start + +); diff --git a/task1/project/003_src/client/pages/SearchCase/index.js b/task1/project/003_src/client/pages/SearchCase/index.js new file mode 100644 index 0000000..0b5f408 --- /dev/null +++ b/task1/project/003_src/client/pages/SearchCase/index.js @@ -0,0 +1,256 @@ +import MenuIcon from '@mui/icons-material/Menu'; +import React, { useState } from 'react'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import { + Box, + Button, + Checkbox, + Drawer, + FormControlLabel, + IconButton, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, + TextField, +} from '@mui/material'; +import NonUrgentQueueItemCard from 'components/NonUrgentQueueItemCard'; +import SemiUrgentQueueItemCard from 'components/SemiUrgentQueueItemCard'; +import { useFormik } from 'formik'; +import { useRouter } from 'next/dist/client/router'; +import Head from 'next/head'; +import * as yup from 'yup'; +import NoResultFound from './NoResultFound'; +import PressSearchToStart from './PressSearchToStart'; + +const default_init_values = { + semi_urgent_case: true, + non_urgent_case: true, + hkid: '', + mobile: '', +}; + +const validationSchema = yup.object({}); + +const search_input_row_sx = { + width: '100%', + padding: '1rem', + display: 'flex', + flexDirection: 'column', + justifyContent: 'flex-start', + gap: '0.25rem', + fontWeight: 'bold', +}; + +const row_button_sx = { + width: '100%', + padding: '1rem', + display: 'flex', + justifyContent: 'space-around', + gap: '0.5rem', +}; + +export default () => { + const [open, setOpen] = React.useState(false); + const [p_queue, setPQueue] = React.useState([]); + const router = useRouter(); + const [not_search_yet, setNotSearchYet] = React.useState(true); + const [changing_page, setChangingPage] = useState(false); + + const toggleDrawer = newOpen => () => { + setOpen(newOpen); + }; + + const formik = useFormik({ + initialValues: default_init_values, + validationSchema, + onSubmit: values => { + setNotSearchYet(false); + + fetch('/api/patient_queue/search', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(values), + }) + .then(res => res.json()) + .then(data => { + setPQueue(data.patient_queues); + formik.setSubmitting(false); + }) + .catch(err => { + console.error(err); + alert('server error'); + }); + }, + }); + + const DrawerList = ( + + + + { + setChangingPage(true); + router.push('/AdminHome'); + }} + > + + + + + + + + + ); + + return ( + <> + + dashboard - non-urgent case + + + + + + + + + + Search case + + + +
+ + Search by case type: + } + label='semi-urgent case' + checked={formik.values.semi_urgent_case} + onChange={() => formik.setFieldValue('semi_urgent_case', !formik.values.semi_urgent_case)} + /> + } + label='non-urgent case' + checked={formik.values.non_urgent_case} + onChange={() => formik.setFieldValue('non_urgent_case', !formik.values.non_urgent_case)} + /> + + + + + + + + + + + + + +
+
+ + + {not_search_yet ? ( + + ) : ( + <> + {p_queue.length === 0 ? ( + + ) : ( + <> + {p_queue.map(queue_data => { + if (queue_data.queue_type === 'non-urgent') + return ( + + ); + if (queue_data.queue_type === 'semi-urgent') + return ( + + ); + + return <>; + })} + + --end of list-- + + + )} + + )} + +
+ + + {DrawerList} + + + ); +}; diff --git a/task1/project/003_src/client/pages/SemiUrgentCaseEdit/[id].js b/task1/project/003_src/client/pages/SemiUrgentCaseEdit/[id].js new file mode 100644 index 0000000..8ed3897 --- /dev/null +++ b/task1/project/003_src/client/pages/SemiUrgentCaseEdit/[id].js @@ -0,0 +1,246 @@ +import React, { useEffect } from 'react'; + +import { Box, Button, TextField } from '@mui/material'; +import Head from 'next/head'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import Loading from 'components/Loading'; +import { useFormik } from 'formik'; +import { useRouter } from 'next/dist/client/router'; +import * as yup from 'yup'; + +const validationSchema = yup.object({ + patient_name: yup + .string('Enter your name') + .min(2, 'Name should be of minimum 2 characters length') + .required('Name is required'), + patient_hkid: yup + .string('Enter your HKID') + .matches(/^[A-Z]{1,2}[0-9]{6}\([0-9]\)$/, 'HKID should be in format of XX123456(1-9)') + .required('HKID is required'), + patient_age: yup + .number('Enter your age') + .min(1, 'Age should be greater than 0') + .max(90, 'Age should be less than 90') + .required('Age is required'), + patient_mobile: yup + .string('Enter your mobile number') + .matches(/^[0-9]{8}$/, 'Mobile number should be 8 numbers') + .required('Mobile number is required'), +}); + +export default () => { + const router = useRouter(); + const { id } = router.query; + const [changing_page, setChangingPage] = React.useState(false); + + const [loading, setLoading] = React.useState(true); + + const formik = useFormik({ + enableReinitialize: true, + initialValues: { + patient_name: '', + patient_hkid: '', + patient_age: 0, + patient_mobile: '', + // + bruisesScratchesMinorBurns: false, + chestPain: false, + headache: false, + myMuiCheck: false, + nauseaAndVomiting: false, + runnyOrStuffyNose: false, + soreThroat: false, + }, + validationSchema, + onSubmit: values => { + fetch('/api/patient_queue/update_queue_item', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ id, queue_type: 'semi-urgent', values }), + }) + .then(response => response.json()) + .then(data => { + if (data.status) { + alert('saved !'); + router.reload(); + } else { + // alert(data.message); + alert('sorry there are something wrong, please try again'); + } + }) + .catch(err => { + console.error(err); + alert('server error'); + }); + }, + }); + + useEffect(() => { + console.log({ t: `/api/patient_queue/read_queue_item?queue_type=semi-urgent&id=${id}` }); + if (id) { + fetch(`/api/patient_queue/read_queue_item?queue_type=semi-urgent&id=${id}`, { + method: 'GET', + }) + .then(response => response.json()) + .then(data => { + if (data.status) { + console.log(data); + + const { + name, + hkid, + mobile, + age, + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + } = data.queueItem; + + formik.setValues({ + patient_name: name, + patient_hkid: hkid, + patient_mobile: mobile, + patient_age: age, + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + }); + } else { + alert(data.message); + } + + setLoading(false); + }) + .catch(err => { + console.error(err); + alert('server error'); + }) + .finally(() => { + setLoading(false); + }); + } + }, [id]); + + if (loading) { + return ; + } + + return ( + <> + + dashboard - non-urgent case + + + + + +
+ + + Edit Registration + + + + + + + + + {/* */} + + + +
+
+ + ); +}; diff --git a/task1/project/003_src/client/pages/SemiUrgentCaseList/QueueIsEmpty.js b/task1/project/003_src/client/pages/SemiUrgentCaseList/QueueIsEmpty.js new file mode 100644 index 0000000..9fddf59 --- /dev/null +++ b/task1/project/003_src/client/pages/SemiUrgentCaseList/QueueIsEmpty.js @@ -0,0 +1,40 @@ +import { ChevronLeftOutlined } from '@mui/icons-material'; +import { Box, Button } from '@mui/material'; +import { useRouter } from 'next/dist/client/router'; +import { useState } from 'react'; + +export default () => { + const [changing_page, setChangingPage] = useState(false); + const router = useRouter(); + + return ( + + Queue is empty + + + ); +}; diff --git a/task1/project/003_src/client/pages/SemiUrgentCaseList/index.js b/task1/project/003_src/client/pages/SemiUrgentCaseList/index.js new file mode 100644 index 0000000..ef80833 --- /dev/null +++ b/task1/project/003_src/client/pages/SemiUrgentCaseList/index.js @@ -0,0 +1,112 @@ +import React, { useEffect, useState } from 'react'; + +import { ChevronLeftOutlined } from '@mui/icons-material'; +import MenuIcon from '@mui/icons-material/Menu'; +import { Box, Drawer, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; +import Loading from 'components/Loading'; +import SemiUrgentQueueItemCard from 'components/SemiUrgentQueueItemCard'; +import { useRouter } from 'next/dist/client/router'; +import Head from 'next/head'; +import QueueIsEmpty from './QueueIsEmpty'; + +export default () => { + const [open, setOpen] = React.useState(false); + const [p_queue, setPQueue] = React.useState([]); + const router = useRouter(); + const [loading, setLoading] = React.useState(true); + const [changing_page, setChangingPage] = useState(false); + + const toggleDrawer = newOpen => () => { + setOpen(newOpen); + }; + + useEffect(() => { + fetch('/api/patient_queue/semi_urgent_case') + .then(response => response.json()) + .then(data => { + setPQueue(data.patient_queues); + setLoading(false); + }); + }, []); + + const DrawerList = ( + + + + { + setChangingPage(true); + router.push('/AdminHome'); + }} + > + + + + + + + + + ); + + if (loading) { + return ; + } + + return ( + <> + + dashboard - semi-urgent case + + + + + + + + + + All Semi-Urgent Cases + + + + {p_queue.length === 0 ? ( + + ) : ( + <> + {p_queue.map(queue_data => ( + + ))} + + --end of list-- + + + )} + + + + + {DrawerList} + + + ); +}; diff --git a/task1/project/003_src/client/pages/_app.js b/task1/project/003_src/client/pages/_app.js new file mode 100644 index 0000000..b98d3bb --- /dev/null +++ b/task1/project/003_src/client/pages/_app.js @@ -0,0 +1,18 @@ +import ThemeProvider from '@/config/StyledMaterialThemeProvider'; +import theme from '@/config/theme'; +import Head from 'next/head'; + +function MyApp({ Component, pageProps }) { + return ( + <> + + + + + + + + ); +} + +export default MyApp; diff --git a/task1/project/003_src/client/pages/_document.js b/task1/project/003_src/client/pages/_document.js new file mode 100644 index 0000000..dbfcba2 --- /dev/null +++ b/task1/project/003_src/client/pages/_document.js @@ -0,0 +1,98 @@ +import { ServerStyleSheets } from '@mui/styles'; +import Document, { Head, Html, Main, NextScript } from 'next/document'; +import { ServerStyleSheet } from 'styled-components'; + +import theme from '@/config/theme'; + +export default class MyDocument extends Document { + componentDidMount() {} + + render() { + return ( + + + + {/* PWA primary color */} + + + + +
+ + + + ); + } +} + +MyDocument.getInitialProps = async ctx => { + // Resolution order + // + // On the server: + // 1. app.getInitialProps + // 2. page.getInitialProps + // 3. document.getInitialProps + // 4. app.render + // 5. page.render + // 6. document.render + // + // On the server with error: + // 1. document.getInitialProps + // 2. app.render + // 3. page.render + // 4. document.render + // + // On the client + // 1. app.getInitialProps + // 2. page.getInitialProps + // 3. app.render + // 4. page.render + + // Render app and page and get the context of the page with collected side effects. + const sheets = new ServerStyleSheets(); + const sheet = new ServerStyleSheet(); + const originalRenderPage = ctx.renderPage; + + try { + ctx.renderPage = () => + originalRenderPage({ + enhanceApp: App => props => sheet.collectStyles(sheets.collect()), + }); + + const initialProps = await Document.getInitialProps(ctx); + + return { + ...initialProps, + // Styles fragment is rendered after the app and page rendering finish. + styles: ( + <> + {initialProps.styles} + {sheets.getStyleElement()} + {sheet.getStyleElement()} + {/* {flush() || null} */} + + ), + }; + } finally { + sheet.seal(); + } +}; diff --git a/task1/project/003_src/client/pages/api/auth/helloworld.js b/task1/project/003_src/client/pages/api/auth/helloworld.js new file mode 100644 index 0000000..7297126 --- /dev/null +++ b/task1/project/003_src/client/pages/api/auth/helloworld.js @@ -0,0 +1,21 @@ +async function helloworld(req) { + try { + return { status: 'OK' }; + } catch (error) { + console.error(error); + return { status: 'ERROR' }; + } +} + +async function handler(req, res) { + try { + let result = await helloworld(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'helloworld error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/auth/login.js b/task1/project/003_src/client/pages/api/auth/login.js new file mode 100644 index 0000000..bd117a5 --- /dev/null +++ b/task1/project/003_src/client/pages/api/auth/login.js @@ -0,0 +1,33 @@ +import Auth from './model'; + +async function login(req) { + try { + console.log({ test: req.body }); + const { username: incoming_username, password: incoming_password } = req.body; + const users = await Auth.findAll(); + for (let i = 0; i < users.length; i += 1) { + const user = users[i]; + console.log(users); + if (user.username === incoming_username && user.password === incoming_password) { + return { success: 'login success' }; + } + } + + return { message: 'login failed' }; + } catch (error) { + console.error(error); + return { message: 'login failed' }; + } +} + +async function handler(req, res) { + try { + const result = await login(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'helloworld error' }); + } +} +export default handler; diff --git a/task1/project/003_src/client/pages/api/auth/model.js b/task1/project/003_src/client/pages/api/auth/model.js new file mode 100644 index 0000000..0aff97f --- /dev/null +++ b/task1/project/003_src/client/pages/api/auth/model.js @@ -0,0 +1,17 @@ +import sequelize_config from 'utils/sequelize_config'; + +const { DataTypes } = require('sequelize'); + +const Auth = sequelize_config.define( + 'Auths', + { + uid: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + username: { type: DataTypes.STRING, allowNull: false }, + password: { type: DataTypes.STRING, allowNull: false }, + session: { type: DataTypes.STRING, allowNull: false, defaultValue: '' }, + role: { type: DataTypes.STRING, allowNull: false }, + }, + { timestamps: false }, +); + +export default Auth; diff --git a/task1/project/003_src/client/pages/api/helloworld.js b/task1/project/003_src/client/pages/api/helloworld.js new file mode 100644 index 0000000..21b99cc --- /dev/null +++ b/task1/project/003_src/client/pages/api/helloworld.js @@ -0,0 +1,20 @@ +async function helloworld(req) { + try { + return { status: 'OK' }; + } catch (error) { + console.error(error); + } +} + +async function handler(req, res) { + try { + let result = await helloworld(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + res.status(200).send({ status: 'error', message: 'helloworld error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/delete_queue_item.js b/task1/project/003_src/client/pages/api/patient_queue/delete_queue_item.js new file mode 100644 index 0000000..72541b5 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/delete_queue_item.js @@ -0,0 +1,39 @@ +import { NonUrgentQueue, SemiUrgentQueue } from './model'; + +async function deleteQueueById(req, res) { + try { + const { id } = req.query; + const { queue_type } = req.query; + + if (!id || !queue_type) { + return res.status(400).send({ status: 'error', message: 'id and queue_type are required' }); + } + + switch (queue_type) { + case 'semi-urgent': + await SemiUrgentQueue.destroy({ where: { id } }); + return { status: 'OK' }; + case 'non-urgent': + await NonUrgentQueue.destroy({ where: { id } }); + return { status: 'OK' }; + default: + return res.status(400).send({ status: 'error', message: 'invalid queue_type' }); + } + } catch (error) { + console.error(error); + return { status: 'error' }; + } +} + +async function handler(req, res) { + try { + const result = await deleteQueueById(req, res); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/list.js b/task1/project/003_src/client/pages/api/patient_queue/list.js new file mode 100644 index 0000000..5e203cd --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/list.js @@ -0,0 +1,25 @@ +import { PatientQueue } from './model'; + +async function list() { + try { + const patient_queues = await PatientQueue.findAll(); + + return { status: 'OK', patient_queues }; + } catch (error) { + console.error(error); + return { status: 'ERROR' }; + } +} + +async function handler(req, res) { + try { + const result = await list(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/model.js b/task1/project/003_src/client/pages/api/patient_queue/model.js new file mode 100644 index 0000000..e724fb4 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/model.js @@ -0,0 +1,55 @@ +const { DataTypes } = require('sequelize'); +const sequelize_config = require('../../../utils/sequelize_config'); + +const PatientQueue = sequelize_config.define( + 'PatientQueue', + { + id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + description: { type: DataTypes.STRING, allowNull: false }, + }, + { timestamps: false }, +); + +const SemiUrgentQueue = sequelize_config.define( + 'SemiUrgentQueue', + { + id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + name: { type: DataTypes.STRING, allowNull: false }, + hkid: { type: DataTypes.STRING, allowNull: false }, + mobile: { type: DataTypes.STRING, allowNull: false }, + age: { type: DataTypes.INTEGER, allowNull: false }, + description: { type: DataTypes.STRING, allowNull: false }, + // + bruisesScratchesMinorBurns: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + chestPain: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + headache: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + myMuiCheck: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + nauseaAndVomiting: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + runnyOrStuffyNose: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + soreThroat: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + }, + { timestamps: false }, +); + +const NonUrgentQueue = sequelize_config.define( + 'NonUrgentQueue', + { + id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, unique: true }, + name: { type: DataTypes.STRING, allowNull: false }, + hkid: { type: DataTypes.STRING, allowNull: false }, + mobile: { type: DataTypes.STRING, allowNull: false }, + age: { type: DataTypes.INTEGER, allowNull: false }, + description: { type: DataTypes.STRING, allowNull: false }, + // + bruisesScratchesMinorBurns: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + chestPain: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + headache: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + myMuiCheck: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + nauseaAndVomiting: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + runnyOrStuffyNose: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + soreThroat: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, + }, + { timestamps: false }, +); + +export { NonUrgentQueue, PatientQueue, SemiUrgentQueue }; diff --git a/task1/project/003_src/client/pages/api/patient_queue/non_urgent_case.js b/task1/project/003_src/client/pages/api/patient_queue/non_urgent_case.js new file mode 100644 index 0000000..3b27670 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/non_urgent_case.js @@ -0,0 +1,24 @@ +import { NonUrgentQueue } from './model'; + +async function list() { + try { + const patient_queues = await NonUrgentQueue.findAll(); + + return { status: 'OK', patient_queues }; + } catch (error) { + console.error(error); + } +} + +async function handler(req, res) { + try { + const result = await list(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/read_queue_item.js b/task1/project/003_src/client/pages/api/patient_queue/read_queue_item.js new file mode 100644 index 0000000..1a0c29c --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/read_queue_item.js @@ -0,0 +1,46 @@ +import { NonUrgentQueue, SemiUrgentQueue } from './model'; + +async function readQueueById(req, res) { + try { + const { id } = req.query; + const { queue_type } = req.query; + + if (!id || !queue_type) { + return res.status(400).send({ status: 'error', message: 'id and queue_type are required' }); + } + + let queueItem; + switch (queue_type) { + case 'semi-urgent': + queueItem = await SemiUrgentQueue.findOne({ where: { id } }); + break; + case 'non-urgent': + queueItem = await NonUrgentQueue.findOne({ where: { id } }); + break; + default: + return res.status(400).send({ status: 'error', message: 'invalid queue_type' }); + } + + if (!queueItem) { + return res.status(404).send({ status: 'error', message: 'No queue item found' }); + } + + return { status: 'OK', queueItem }; + } catch (error) { + console.error(error); + return { status: 'error' }; + } +} + +async function handler(req, res) { + try { + const result = await readQueueById(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/register.js b/task1/project/003_src/client/pages/api/patient_queue/register.js new file mode 100644 index 0000000..26c80bd --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/register.js @@ -0,0 +1,77 @@ +import { NonUrgentQueue, SemiUrgentQueue } from './model'; + +async function list(req) { + let output = {}; + + const { + patient_name: name, + patient_hkid: hkid, + patient_age: age, + patient_mobile: mobile, + // + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + } = req.body.values; + + try { + if (headache || chestPain || bruisesScratchesMinorBurns) { + console.log('headache || chestPain || bruisesScratchesMinorBurns, classified to a SemiUrgentQueue'); + const result = await SemiUrgentQueue.create({ + name, + hkid, + mobile, + age, + description: '', + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + }); + + output = { success: 'OK', queue: 'semi-urgent', result }; + } else { + console.log('headache == false, classified to a NonUrgentQueue'); + const result = await NonUrgentQueue.create({ + name, + hkid, + mobile, + age, + description: '', + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + }); + + output = { success: 'OK', queue: 'non-urgent', result }; + } + } catch (error) { + output = { message: 'error' }; + } + + return output; +} + +async function handler(req, res) { + try { + const result = await list(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/search.js b/task1/project/003_src/client/pages/api/patient_queue/search.js new file mode 100644 index 0000000..82a347c --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/search.js @@ -0,0 +1,51 @@ +import { Op, Sequelize } from 'sequelize'; +import { NonUrgentQueue, SemiUrgentQueue } from './model'; + +async function search_queue(req) { + try { + let n_u_result = []; + let s_u_result = []; + + const { semi_urgent_case, non_urgent_case } = req.body; + const criteria = ['hkid', 'mobile'] + .filter(key => req.body[key] !== '') + .map(key => ({ + [key]: Sequelize.where(Sequelize.fn('LOWER', Sequelize.col(key)), 'LIKE', `%${req.body[key].toLowerCase()}%`), + })); + + if (non_urgent_case) { + n_u_result = await NonUrgentQueue.findAll({ where: { [Op.or]: criteria } }); + // if (n_u_result === undefined) n_u_result = []; + n_u_result.forEach(q => { + q.dataValues.queue_type = 'non-urgent'; + }); + } + + if (semi_urgent_case) { + s_u_result = await SemiUrgentQueue.findAll({ where: { [Op.or]: criteria } }); + // if (s_u_result === undefined) s_u_result = []; + s_u_result.forEach(q => { + q.dataValues.queue_type = 'semi-urgent'; + }); + } + + console.log({ s_u_result }); + return { status: 'OK', patient_queues: [...n_u_result, ...s_u_result] }; + } catch (error) { + console.error(error); + return { status: 'ERROR' }; + } +} + +async function handler(req, res) { + try { + const result = await search_queue(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/semi_urgent_case.js b/task1/project/003_src/client/pages/api/patient_queue/semi_urgent_case.js new file mode 100644 index 0000000..8b85217 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/semi_urgent_case.js @@ -0,0 +1,25 @@ +import { SemiUrgentQueue } from './model'; + +async function list() { + try { + const patient_queues = await SemiUrgentQueue.findAll(); + + return { status: 'OK', patient_queues }; + } catch (error) { + console.error(error); + return { status: 'ERROR' }; + } +} + +async function handler(req, res) { + try { + const result = await list(req); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/api/patient_queue/tests/read_queue_item.js b/task1/project/003_src/client/pages/api/patient_queue/tests/read_queue_item.js new file mode 100644 index 0000000..ae285f8 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/tests/read_queue_item.js @@ -0,0 +1,15 @@ +fetch("http://localhost/api/patient_queue/read_queue_item?queue_type=non-urgent&id=4", { + "headers": { + "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"", + "sec-ch-ua-mobile": "?1", + "sec-ch-ua-platform": "\"Android\"", + "Referer": "http://localhost/NonUrgentCaseEdit/1", + "Referrer-Policy": "strict-origin-when-cross-origin" + }, + "body": null, + "method": "GET" +}) + .then(response => response.json()) + .then(data => console.log(data)) + .catch(error => console.error('Error:', error)); + diff --git a/task1/project/003_src/client/pages/api/patient_queue/tests/register.js b/task1/project/003_src/client/pages/api/patient_queue/tests/register.js new file mode 100644 index 0000000..66cd11c --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/tests/register.js @@ -0,0 +1,23 @@ +fetch("http://localhost/api/patient_queue/register", { + "headers": { + "accept": "*/*", + "accept-language": "en-US,en;q=0.9,zh-TW;q=0.8,zh-CN;q=0.7,zh;q=0.6", + "cache-control": "no-cache", + "content-type": "application/json", + "pragma": "no-cache", + "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"", + "sec-ch-ua-mobile": "?1", + "sec-ch-ua-platform": "\"Android\"", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + "cookie": "pma_lang=en; phpMyAdmin=51ff7da1fa656cafa38dce7a6be8a79d", + "Referer": "http://localhost/PatientRegister", + "Referrer-Policy": "strict-origin-when-cross-origin" + }, + "body": "{\"values\":{\"patient_name\":\"p1\",\"patient_hkid\":\"A123456(7)\",\"patient_age\":\"32\",\"patient_mobile\":\"91234567\",\"bruisesScratchesMinorBurns\":true,\"chestPain\":false,\"headache\":false,\"myMuiCheck\":false,\"nauseaAndVomiting\":false,\"runnyOrStuffyNose\":true,\"soreThroat\":false}}", + "method": "POST" +}) + .then(response => response.json()) + .then(data => console.log(data)) + .catch(error => console.error('Error:', error)); diff --git a/task1/project/003_src/client/pages/api/patient_queue/tests/search.js b/task1/project/003_src/client/pages/api/patient_queue/tests/search.js new file mode 100644 index 0000000..9a9b052 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/tests/search.js @@ -0,0 +1,23 @@ +fetch('http://localhost/api/patient_queue/search', { + headers: { + accept: '*/*', + 'accept-language': 'en-US,en;q=0.9,zh-TW;q=0.8,zh-CN;q=0.7,zh;q=0.6', + 'cache-control': 'no-cache', + 'content-type': 'application/json', + pragma: 'no-cache', + 'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"', + 'sec-ch-ua-mobile': '?1', + 'sec-ch-ua-platform': '"Android"', + 'sec-fetch-dest': 'empty', + 'sec-fetch-mode': 'cors', + 'sec-fetch-site': 'same-origin', + cookie: 'pma_lang=en', + Referer: 'http://localhost/SearchCase', + 'Referrer-Policy': 'strict-origin-when-cross-origin', + }, + body: '{"semi_urgent_case":true,"non_urgent_case":false,"hkid":"","mobile":"91234567"}', + method: 'POST', +}) + .then(response => response.json()) + .then(data => console.log(data)) + .catch(error => console.error('Error:', error)); diff --git a/task1/project/003_src/client/pages/api/patient_queue/tests/update_queue_item.js b/task1/project/003_src/client/pages/api/patient_queue/tests/update_queue_item.js new file mode 100644 index 0000000..6345803 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/tests/update_queue_item.js @@ -0,0 +1,21 @@ +fetch("http://localhost/api/patient_queue/update_queue_item", { + "headers": { + "accept": "*/*", + "accept-language": "en-US,en;q=0.9,zh-TW;q=0.8,zh-CN;q=0.7,zh;q=0.6", + "content-type": "application/json", + "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"", + "sec-ch-ua-mobile": "?1", + "sec-ch-ua-platform": "\"Android\"", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + "cookie": "pma_lang=en; phpMyAdmin=51ff7da1fa656cafa38dce7a6be8a79d", + "Referer": "http://localhost/NonUrgentCaseEdit/4", + "Referrer-Policy": "strict-origin-when-cross-origin" + }, + "body": "{\"id\":\"4\",\"queue_type\":\"non-urgent\",\"values\":{\"patient_name\":\"non-urgent-patient 3 update\",\"patient_hkid\":\"A123456(3)\",\"patient_mobile\":\"91234563\",\"patient_age\":13}}", + "method": "POST" +}) + .then(response => response.json()) + .then(data => console.log(data)) + .catch(error => console.error('Error:', error)); diff --git a/task1/project/003_src/client/pages/api/patient_queue/update_queue_item.js b/task1/project/003_src/client/pages/api/patient_queue/update_queue_item.js new file mode 100644 index 0000000..9a9a128 --- /dev/null +++ b/task1/project/003_src/client/pages/api/patient_queue/update_queue_item.js @@ -0,0 +1,89 @@ +import { NonUrgentQueue, SemiUrgentQueue } from './model'; + +async function updateQueueById(req, res) { + try { + const { id, queue_type } = req.body; + console.log({ t: req.body }); + + if (!id || !queue_type) { + return res.status(400).send({ status: 'error', message: 'id and queue_type are required' }); + } + + const { + patient_name: name, + patient_hkid: hkid, + patient_age: age, + patient_mobile: mobile, + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + } = req.body.values; + + switch (queue_type) { + case 'non-urgent': + await NonUrgentQueue.update( + { + name, + hkid, + age, + mobile, + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + }, + { where: { id } }, + ); + return { status: 'OK' }; + + case 'semi-urgent': + await SemiUrgentQueue.update( + { + name, + hkid, + age, + mobile, + bruisesScratchesMinorBurns, + chestPain, + headache, + myMuiCheck, + nauseaAndVomiting, + runnyOrStuffyNose, + soreThroat, + }, + { where: { id } }, + ); + return { status: 'OK' }; + + default: + return res.status(400).send({ status: 'error', message: 'invalid queue_type' }); + } + } catch (error) { + console.error(error); + return { status: 'error' }; + } +} + +async function handler(req, res) { + if (req.method === 'POST') { + try { + const result = await updateQueueById(req, res); + + return res.status(200).send(result); + } catch (err) { + console.log(err); + return res.status(200).send({ status: 'error', message: 'list error' }); + } + } else { + return res.status(405).send({ status: 'error', message: 'method not allowed' }); + } +} + +export default handler; diff --git a/task1/project/003_src/client/pages/debug/index.js b/task1/project/003_src/client/pages/debug/index.js new file mode 100644 index 0000000..7876fac --- /dev/null +++ b/task1/project/003_src/client/pages/debug/index.js @@ -0,0 +1,104 @@ +import React from 'react'; + +import MailIcon from '@mui/icons-material/Mail'; +import InboxIcon from '@mui/icons-material/MoveToInbox'; +import { Box, Divider, Drawer, Link, List, ListItem, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; +import Head from 'next/head'; + +import { useFormik } from 'formik'; +import * as yup from 'yup'; + +const validationSchema = yup.object({ + // email: yup.string('Enter your email').email('Enter a valid email').required('Email is required'), + // password: yup + // .string('Enter your password') + // .min(8, 'Password should be of minimum 8 characters length') + // .required('Password is required'), +}); + +export default function Home() { + const [open, setOpen] = React.useState(false); + + const toggleDrawer = newOpen => () => { + setOpen(newOpen); + }; + + const formik = useFormik({ + initialValues: { + email: 'foobar@example.com', + password: 'foobar', + patient_name: 'default patient name', + patient_hkid: 'A213456(7)', + patient_age: 37, + patient_mobile: '91234567', + bruisesScratchesMinorBurns: false, + chestPain: false, + headache: false, + myMuiCheck: false, + nauseaAndVomiting: false, + runnyOrStuffyNose: false, + soreThroat: false, + }, + validationSchema: validationSchema, + onSubmit: values => { + alert(JSON.stringify(values, null, 2)); + }, + }); + + const DrawerList = ( + + + {['Inbox', 'Starred', 'Send email', 'Drafts'].map((text, index) => ( + + + {index % 2 === 0 ? : } + + + + ))} + + + + {['All mail', 'Trash', 'Spam'].map((text, index) => ( + + + {index % 2 === 0 ? : } + + + + ))} + + + ); + + return ( + <> + + dashboard - non-urgent case + + + + + + PatientRegister + PatientQueueDisplay + AdminLogin + AdminHome + SemiUrgentCaseList + NonUrgentCaseList + + + + {DrawerList} + + + ); +} diff --git a/task1/project/003_src/client/pages/index.css.js b/task1/project/003_src/client/pages/index.css.js new file mode 100644 index 0000000..a62e99d --- /dev/null +++ b/task1/project/003_src/client/pages/index.css.js @@ -0,0 +1,5 @@ +export default () => ` + padding:0; + margin:0; + +`; diff --git a/task1/project/003_src/client/pages/index.js b/task1/project/003_src/client/pages/index.js new file mode 100644 index 0000000..f71b275 --- /dev/null +++ b/task1/project/003_src/client/pages/index.js @@ -0,0 +1,55 @@ +import { Box, Button } from '@mui/material'; +import Head from 'next/head'; +import { useRouter } from 'next/router'; +import { useState } from 'react'; + +export default () => { + const [changing_page, setChangingPage] = useState(false); + const router = useRouter(); + + return ( + <> + + dashboard - non-urgent case + + + + + + + Demo Patient Queue system + + + + + + ); +}; diff --git a/task1/project/003_src/client/public/favicon.ico b/task1/project/003_src/client/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/task1/project/003_src/client/public/vercel.svg b/task1/project/003_src/client/public/vercel.svg new file mode 100644 index 0000000..fbf0e25 --- /dev/null +++ b/task1/project/003_src/client/public/vercel.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/task1/project/003_src/client/utils/is_development_plant.js b/task1/project/003_src/client/utils/is_development_plant.js new file mode 100644 index 0000000..72117e9 --- /dev/null +++ b/task1/project/003_src/client/utils/is_development_plant.js @@ -0,0 +1 @@ +export default process.env.NODE_ENV === 'development'; diff --git a/task1/project/003_src/client/utils/seed.js b/task1/project/003_src/client/utils/seed.js new file mode 100644 index 0000000..fd7f8a3 --- /dev/null +++ b/task1/project/003_src/client/utils/seed.js @@ -0,0 +1,38 @@ +const { Sequelize } = require('sequelize'); + +const sequelize = new Sequelize('app_db', 'db_user', 'db_user_pass', { + host: 'mysql', + port: 3306, + dialect: 'mysql', +}); + +const User = sequelize.define( + 'User', + { + firstName: { type: Sequelize.STRING, allowNull: false }, + lastName: { type: Sequelize.STRING, allowNull: false }, + email: { type: Sequelize.STRING, allowNull: false }, + role: { type: Sequelize.STRING, allowNull: false }, + }, + { timestamps: false }, +); + +(async () => { + try { + await sequelize.authenticate(); + console.log('Connection has been established successfully.'); + + // create table + await sequelize.sync(); + + const user = await User.create({ firstName: 'John', lastName: 'Doe' }); + console.log('Created user: ', user); + + const users = await User.findAll(); + console.log('Found all users: ', users); + + await sequelize.close(); + } catch (error) { + console.error('Unable to connect to the database:', error); + } +})(); diff --git a/task1/project/003_src/client/utils/sequelize_config.js b/task1/project/003_src/client/utils/sequelize_config.js new file mode 100644 index 0000000..d65b4b2 --- /dev/null +++ b/task1/project/003_src/client/utils/sequelize_config.js @@ -0,0 +1,9 @@ +const { Sequelize } = require('sequelize'); + +const sequelize_config = new Sequelize('app_db', 'db_user', 'db_user_pass', { + host: 'mysql', + port: 3306, + dialect: 'mysql', +}); + +module.exports = sequelize_config; diff --git a/task1/project/003_src/client/yarn.lock b/task1/project/003_src/client/yarn.lock new file mode 100644 index 0000000..58aacc7 --- /dev/null +++ b/task1/project/003_src/client/yarn.lock @@ -0,0 +1,5050 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" + integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== + dependencies: + "@babel/highlight" "^7.25.7" + picocolors "^1.0.0" + +"@babel/generator@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" + integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== + dependencies: + "@babel/types" "^7.25.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz#63f02dbfa1f7cb75a9bdb832f300582f30bb8972" + integrity sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA== + dependencies: + "@babel/types" "^7.25.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" + integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" + integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== + +"@babel/helper-string-parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" + integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== + +"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5" + integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" + integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.25.7": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2" + integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ== + dependencies: + "@babel/types" "^7.25.8" + +"@babel/plugin-syntax-jsx@7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" + integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz#5352d398d11ea5e7ef330c854dea1dae0bf18165" + integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + +"@babel/runtime@7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" + integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.9", "@babel/runtime@^7.25.7", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" + integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" + integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/types" "^7.25.7" + +"@babel/traverse@^7.25.7", "@babel/traverse@^7.4.5": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" + integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + +"@babel/types@^7.25.7", "@babel/types@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1" + integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg== + dependencies: + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + to-fast-properties "^2.0.0" + +"@emotion/babel-plugin@^11.12.0": + version "11.12.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" + integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/serialize" "^1.2.0" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + +"@emotion/cache@^11.11.0", "@emotion/cache@^11.13.0", "@emotion/cache@^11.13.1": + version "11.13.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7" + integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw== + dependencies: + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" + stylis "4.2.0" + +"@emotion/hash@^0.9.1", "@emotion/hash@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" + integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== + +"@emotion/is-prop-valid@^1.1.0", "@emotion/is-prop-valid@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240" + integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw== + dependencies: + "@emotion/memoize" "^0.9.0" + +"@emotion/memoize@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" + integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== + +"@emotion/react@^11.5.0": + version "11.13.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4" + integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.12.0" + "@emotion/cache" "^11.13.0" + "@emotion/serialize" "^1.3.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0", "@emotion/serialize@^1.3.1", "@emotion/serialize@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a" + integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA== + dependencies: + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== + +"@emotion/styled@^11.3.0": + version "11.13.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.13.0.tgz#633fd700db701472c7a5dbef54d6f9834e9fb190" + integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.12.0" + "@emotion/is-prop-valid" "^1.3.0" + "@emotion/serialize" "^1.3.0" + "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" + "@emotion/utils" "^1.4.0" + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/use-insertion-effect-with-fallbacks@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf" + integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw== + +"@emotion/utils@^1.4.0", "@emotion/utils@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad" + integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA== + +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@floating-ui/core@^1.6.0": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12" + integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== + dependencies: + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/dom@^1.0.0": + version "1.6.11" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723" + integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/react-dom@^2.1.1": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" + integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== + +"@hapi/accept@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523" + integrity sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw== + dependencies: + "@hapi/boom" "9.x.x" + "@hapi/hoek" "9.x.x" + +"@hapi/boom@9.x.x": + version "9.1.4" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6" + integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/hoek@9.x.x": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@mapbox/node-pre-gyp@^1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" + 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" + +"@mui/base@5.0.0-beta.59": + version "5.0.0-beta.59" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.59.tgz#c50a35fb03f4c6f2da31242bc200cbdb75e6149a" + integrity sha512-LQZ2907rPMut/2Lq6qSnyP+nqOHLO3buMv91m7SdLpqp/lXU5+8vUXcf5oOwTNis6hfSvYGSQJ493Q00OzxDmQ== + dependencies: + "@babel/runtime" "^7.25.7" + "@floating-ui/react-dom" "^2.1.1" + "@mui/types" "^7.2.18" + "@mui/utils" "^6.1.4" + "@popperjs/core" "^2.11.8" + clsx "^2.1.1" + prop-types "^15.8.1" + +"@mui/core-downloads-tracker@^5.16.7": + version "5.16.7" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz#182a325a520f7ebd75de051fceabfc0314cfd004" + integrity sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ== + +"@mui/icons-material@^6.1.3": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-6.1.4.tgz#4772fccea24d6529d44e0dd9a3f591134b734f5c" + integrity sha512-nhXBNSP3WkY0pz8dg25VIYIXJkhdRLRKZtD50f9OuHVQ1eh8b+enmvaZQF0o5M8cs1sR6wQHwZYwG34qDZeG0g== + dependencies: + "@babel/runtime" "^7.25.7" + +"@mui/lab@^6.0.0-beta.12": + version "6.0.0-beta.12" + resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-6.0.0-beta.12.tgz#9f0411fa3c20372383dcfc6e91b6e1cbfc543e90" + integrity sha512-tcnCs2j3MsEjyvTSRWbFrlLqx65R1EQ+wh5RGRGscgwso+DVicF1eLGSgtTpJ5GhUvwXTgTNGxILSmZdobN+IA== + dependencies: + "@babel/runtime" "^7.25.7" + "@mui/base" "5.0.0-beta.59" + "@mui/system" "^6.1.4" + "@mui/types" "^7.2.18" + "@mui/utils" "^6.1.4" + clsx "^2.1.1" + prop-types "^15.8.1" + +"@mui/material@^5.1.0": + version "5.16.7" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.16.7.tgz#6e814e2eefdaf065a769cecf549c3569e107a50b" + integrity sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/core-downloads-tracker" "^5.16.7" + "@mui/system" "^5.16.7" + "@mui/types" "^7.2.15" + "@mui/utils" "^5.16.6" + "@popperjs/core" "^2.11.8" + "@types/react-transition-group" "^4.4.10" + clsx "^2.1.0" + csstype "^3.1.3" + prop-types "^15.8.1" + react-is "^18.3.1" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.16.6": + version "5.16.6" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.16.6.tgz#547671e7ae3f86b68d1289a0b90af04dfcc1c8c9" + integrity sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/utils" "^5.16.6" + prop-types "^15.8.1" + +"@mui/private-theming@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-6.1.4.tgz#a2d05721f99c518ae04ce007931fcdfd9a2120f8" + integrity sha512-FPa+W5BSrRM/1QI5Gf/GwJinJ2WsrKPpJB6xMmmXMXSUIp31YioIVT04i28DQUXFFB3yZY12ukcZi51iLvPljw== + dependencies: + "@babel/runtime" "^7.25.7" + "@mui/utils" "^6.1.4" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.16.6": + version "5.16.6" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.16.6.tgz#60110c106dd482dfdb7e2aa94fd6490a0a3f8852" + integrity sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g== + dependencies: + "@babel/runtime" "^7.23.9" + "@emotion/cache" "^11.11.0" + csstype "^3.1.3" + prop-types "^15.8.1" + +"@mui/styled-engine@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-6.1.4.tgz#80a25e8ba41495a4bef0296c0f55b9113b351e14" + integrity sha512-D+aiIDtJsU9OVJ7dgayhCDABJHT7jTlnz1FKyxa5mNVHsxjjeG1M4OpLsRQvx4dcvJfDywnU2cE+nFm4Ln2aFQ== + dependencies: + "@babel/runtime" "^7.25.7" + "@emotion/cache" "^11.13.1" + "@emotion/serialize" "^1.3.2" + "@emotion/sheet" "^1.4.0" + csstype "^3.1.3" + prop-types "^15.8.1" + +"@mui/styles@^5.1.0": + version "5.16.7" + resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.16.7.tgz#cf052f0243d283fab837d2505f4901e5207a0575" + integrity sha512-FfXhHP/2MlqH+vLs2tIHMeCChmqSRgkOALVNLKkPrDsvtoq5J8OraOutCn1scpvRjr9mO8ZhW6jKx2t/vUDxtQ== + dependencies: + "@babel/runtime" "^7.23.9" + "@emotion/hash" "^0.9.1" + "@mui/private-theming" "^5.16.6" + "@mui/types" "^7.2.15" + "@mui/utils" "^5.16.6" + clsx "^2.1.0" + csstype "^3.1.3" + hoist-non-react-statics "^3.3.2" + jss "^10.10.0" + jss-plugin-camel-case "^10.10.0" + jss-plugin-default-unit "^10.10.0" + jss-plugin-global "^10.10.0" + jss-plugin-nested "^10.10.0" + jss-plugin-props-sort "^10.10.0" + jss-plugin-rule-value-function "^10.10.0" + jss-plugin-vendor-prefixer "^10.10.0" + prop-types "^15.8.1" + +"@mui/system@^5.16.7": + version "5.16.7" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.16.7.tgz#4583ca5bf3b38942e02c15a1e622ba869ac51393" + integrity sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/private-theming" "^5.16.6" + "@mui/styled-engine" "^5.16.6" + "@mui/types" "^7.2.15" + "@mui/utils" "^5.16.6" + clsx "^2.1.0" + csstype "^3.1.3" + prop-types "^15.8.1" + +"@mui/system@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-6.1.4.tgz#a237555b1fcf607e990ffd8e5d5355d230064a5c" + integrity sha512-lCveY/UtDhYwMg1WnLc3wEEuGymLi6YI79VOwFV9zfZT5Et+XEw/e1It26fiKwUZ+mB1+v1iTYMpJnwnsrn2aQ== + dependencies: + "@babel/runtime" "^7.25.7" + "@mui/private-theming" "^6.1.4" + "@mui/styled-engine" "^6.1.4" + "@mui/types" "^7.2.18" + "@mui/utils" "^6.1.4" + clsx "^2.1.1" + csstype "^3.1.3" + prop-types "^15.8.1" + +"@mui/types@^7.2.15", "@mui/types@^7.2.18": + version "7.2.18" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.18.tgz#4b6385ed2f7828ef344113cdc339d6fdf8e4bc23" + integrity sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg== + +"@mui/utils@^5.16.6": + version "5.16.6" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.16.6.tgz#905875bbc58d3dcc24531c3314a6807aba22a711" + integrity sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA== + dependencies: + "@babel/runtime" "^7.23.9" + "@mui/types" "^7.2.15" + "@types/prop-types" "^15.7.12" + clsx "^2.1.1" + prop-types "^15.8.1" + react-is "^18.3.1" + +"@mui/utils@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-6.1.4.tgz#44deebc8e576695836c9bda870d755c8f079e54d" + integrity sha512-v0wXkyh3/Hpw48ivlNvgs4ZT6M8BIEAMdLgvct59rQBggYFhoAVKyliKDzdj37CnIlYau3DYIn7x5bHlRYFBow== + dependencies: + "@babel/runtime" "^7.25.7" + "@mui/types" "^7.2.18" + "@types/prop-types" "^15.7.13" + clsx "^2.1.1" + prop-types "^15.8.1" + react-is "^18.3.1" + +"@napi-rs/triples@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c" + integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA== + +"@next/env@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.0.3.tgz#e676b4d1454d8b6be433a348e99f2b8276ab6cd7" + integrity sha512-QcdlpcwIH9dYcVlNAU+gXaqHA/omskbRlb+R3vN7LlB2EgLt+9WQwbokcHOsNyt4pI7kDM67W4tr9l7dWnlGdQ== + +"@next/eslint-plugin-next@12.0.2": + version "12.0.2" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.0.2.tgz#9dd96fbae043cf967572d805f3054b9f0aaf5b3a" + integrity sha512-mmMlik6cuTkcHFi6CTdLeX0aPUceBi6gP3/k9dxjMjpiTBL5qXO+zwsGmGyg01MeeSC3tJpUEqOZVnxaFvKccA== + dependencies: + glob "7.1.7" + +"@next/polyfill-module@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-12.0.3.tgz#4217e5284762124bf9fe2505622c4de89998f7a2" + integrity sha512-fgjVjdCk0Jq627d/N33oQIJjWrcKtzw6Dfa2PfypoIJ35/xFIKgs6mPyvq8cg3Ao5b7dEn9+Rw45PGjlY5e7JA== + +"@next/react-dev-overlay@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-12.0.3.tgz#d85a609bf7d75eb190940d0fc64eff94c0e4a478" + integrity sha512-gHfDEVHFeTUpQMcyytzvkuOu+5DQXjXbCbQHuavFftYrlHqXfzYFsa+wERff+g4/0IzEvcYVp3F4gdmynWfUog== + dependencies: + "@babel/code-frame" "7.12.11" + anser "1.4.9" + chalk "4.0.0" + classnames "2.2.6" + css.escape "1.5.1" + data-uri-to-buffer "3.0.1" + platform "1.3.6" + shell-quote "1.7.3" + source-map "0.8.0-beta.0" + stacktrace-parser "0.1.10" + strip-ansi "6.0.1" + +"@next/react-refresh-utils@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-12.0.3.tgz#1389b0370e258634432d6dd78f889c09a8328e10" + integrity sha512-YPtlfvkYh/4MvNNm5w3uwo+1KPMg67snzr5CuexbRewsu2ITaF7f0bh0Jcayi20wztk8SgWjNz1bmF8j9qbWIw== + +"@next/swc-android-arm64@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.0.3.tgz#8b99b3e7f13dda1f4c3c6dc83af73d8f40afecd5" + integrity sha512-40sOl9/50aamX0dEMrecqJQcUrRK47D7S9F66ulrZmz+5Ujp0lnP1rBOXngo0PZMecfU1tr7zbNubiAMDxfCxw== + +"@next/swc-darwin-arm64@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.0.3.tgz#a385e610fb4a20c47355520b82a79d08e0f6441e" + integrity sha512-iKSe2hCMB51Ft41cNAxZk6St1rBlqSRtBSl4oO0zJlGu7bCxXCGCJ058/OLvYxcNWgz7ODOApObm3Yjv8XEvxg== + +"@next/swc-darwin-x64@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.0.3.tgz#0405a3838a652b7bb44c5cd5d920c11240194385" + integrity sha512-/BcnfLyhIj4rgU3yVDfD8uXK2TcNYIdflYHKkjFxd3/J1GWOtBN31m0dB8fL0h5LdW11kzaXvVvab3f5ilkEww== + +"@next/swc-linux-arm-gnueabihf@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.0.3.tgz#f5d43be7314044526fd9f1eef34337bb95f02e01" + integrity sha512-2HNPhBJuN9L6JzqqqdYB4TKfFFmaKkpF0X3C1s83Xp61mR2sx8gOthHQtZqWDs4ZLnKZU0j2flGU1uuqpHPCpg== + +"@next/swc-linux-arm64-gnu@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.0.3.tgz#6f1cda1dadabcc4d4f13bd6f5ce23b9879bc6d73" + integrity sha512-NXTON1XK7zi2i+A+bY1PVLi1g5b8cSwgzbnuVR0vAgOtU+3at7FqAKOWfuFIXY7eBEK65uu0Fu5gADhMj0uanQ== + +"@next/swc-linux-arm64-musl@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.0.3.tgz#1eedc1f1fcafc9862ef7e83205ada96bf320a694" + integrity sha512-8D0q22VavhcIl2ZQErEffgh5q6mChaG84uTluAoFfjwrgYtPDZX0M5StqkTZL6T5gA5RLHboNVoscIKGZWMojQ== + +"@next/swc-linux-x64-gnu@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.0.3.tgz#eca85107b01a7571957ae25104d11042e9835a49" + integrity sha512-4mkimH9nMzbuQfLmZ152NYSHdrII9AeqrkrHszexL1Lup2TLMPuxlXj55eVnyyeKFXRLlnqbCu7aOIND68RbOA== + +"@next/swc-linux-x64-musl@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.0.3.tgz#758656b8e36a520c03763d154c366bec889c56b3" + integrity sha512-MXvx+IDYoSsSM7KcwbQAVo9r+ZeklHeDQiUEmyRRzQE1Q4JvkWwMdPu/NfFdyxur+RfKjRoUoWFdPi5MBKTpkw== + +"@next/swc-win32-arm64-msvc@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.0.3.tgz#3f8ab8fa3367d729e49b3072fb24f9d0f8af7c21" + integrity sha512-8GusumFZLp/mtVix+3JZVTGqzqntTsrTIFZ+GpcLMwyVjB3KkBwHiwJaa38WGleUinJSpJvgmhTWgppsiSKW3A== + +"@next/swc-win32-ia32-msvc@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.0.3.tgz#e3df153a4e0c896a5871f1d26c7e176fa1ceec72" + integrity sha512-mF7bkxSZ++QiB+E0HFqay/etvPF+ZFcCuG27lSwFIM00J+TE0IRqMyMx66vJ8g1h6khpwXPI0o2hrwIip/r8cQ== + +"@next/swc-win32-x64-msvc@12.0.3": + version "12.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.0.3.tgz#c3e4af29cd74190b89461ccc26b932ae4c27f99d" + integrity sha512-eXFwyf46UFFggMQ3k2tJsOmB3SuKjWaSiZJH0tTDUsLw74lyqyzJqMCVA4yY0gWSlEnSjmX5nrCBknVZd3joaA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@popperjs/core@^2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + +"@rushstack/eslint-patch@^1.0.6": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1" + integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA== + +"@types/debug@^4.1.8": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + +"@types/hoist-non-react-statics@^3.3.1": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" + integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/ms@*": + version "0.7.34" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + +"@types/node@*": + version "22.7.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.7.tgz#6cd9541c3dccb4f7e8b141b491443f4a1570e307" + integrity sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q== + dependencies: + undici-types "~6.19.2" + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prop-types@*", "@types/prop-types@^15.7.12", "@types/prop-types@^15.7.13": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + +"@types/react-transition-group@^4.4.10": + version "4.4.11" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5" + integrity sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.3.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.11.tgz#9d530601ff843ee0d7030d4227ea4360236bd537" + integrity sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/validator@^13.7.17": + version "13.12.2" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.12.2.tgz#760329e756e18a4aab82fc502b51ebdfebbe49f5" + integrity sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA== + +"@typescript-eslint/parser@^4.20.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== + dependencies: + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== + dependencies: + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" + integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ajv@^8.0.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +anser@1.4.9: + version "1.4.9" + resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760" + integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-includes@^3.1.6, array-includes@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + 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" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlast@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== + 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" + +array.prototype.findlastindex@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + 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" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== + 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" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + 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" + +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assert@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +aws-ssl-profiles@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz#157dd77e9f19b1d123678e93f120e6f193022641" + integrity sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g== + +axe-core@^4.10.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.1.tgz#7d2589b0183f05b0f23e55c2f4cdf97b5bdc66d9" + integrity sha512-qPC9o+kD8Tir0lzNGLeghbOrWMr3ZJpaRlCIb6Uobt/7N4FiEDvqUMnxzCHRHmg8vOg14kr5gVNyScRmbMaJ9g== + +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +"babel-plugin-styled-components@>= 1.12.0": + version "2.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz#9a1f37c7f32ef927b4b008b529feb4a2c82b1092" + integrity sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + lodash "^4.17.21" + picomatch "^2.3.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/bcrypt/-/bcrypt-5.1.1.tgz#0f732c6dcb4e12e5b70a25e326a72965879ba6e2" + integrity sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.11" + node-addon-api "^5.0.0" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" + integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== + dependencies: + bn.js "^5.2.1" + randombytes "^2.1.0" + safe-buffer "^5.2.1" + +browserify-sign@^4.0.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" + integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.5" + hash-base "~3.0" + inherits "^2.0.4" + parse-asn1 "^5.1.7" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + +browserify-zlib@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.16.6: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + 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" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + +caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== + +chalk@2.4.2, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +classnames@2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@2.1.0, cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +clsx@^2.1.0, clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@^1.2.2, colorette@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +colorette@^2.0.16: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^8.2.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +constants-browserify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + +convert-source-map@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== + dependencies: + "@babel/runtime" "^7.8.3" + is-in-browser "^1.0.2" + +css.escape@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssnano-preset-simple@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-3.0.2.tgz#5d9d0caf4de7a76319b8716a789bb989a028054c" + integrity sha512-7c6EOw3oZshKOZc20Jh+cs2dIKxp0viV043jdal/t1iGVQkoyAQio3rrFWhPgAlkXMu+PRXsslqLhosFTmLhmQ== + dependencies: + caniuse-lite "^1.0.30001202" + +cssnano-simple@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-3.0.0.tgz#a4b8ccdef4c7084af97e19bc5b93b4ecf211e90f" + integrity sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg== + dependencies: + cssnano-preset-simple "^3.0.0" + +csstype@^3.0.2, csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-uri-to-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" + integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== + +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +debug@2: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +deep-equal@^2.0.5: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + 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" + +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +domain-browser@4.19.0: + version "4.19.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1" + integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ== + +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +dottie@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.6.tgz#34564ebfc6ec5e5772272d466424ad5b696484d4" + integrity sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA== + +electron-to-chromium@^1.3.723: + version "1.5.41" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz#eae1ba6c49a1a61d84cf8263351d3513b2bcc534" + integrity sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ== + +elliptic@^6.5.3, elliptic@^6.5.5: + version "6.5.7" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" + integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== + +encoding@0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +enquirer@^2.3.5, enquirer@^2.3.6: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + 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" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-iterator-helpers@^1.0.19: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz#f6d745d342aea214fe09497e7152170dc333a7a6" + integrity sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw== + 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" + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-airbnb-base@^14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-airbnb@^18.2.1: + version "18.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9" + integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== + dependencies: + eslint-config-airbnb-base "^14.2.1" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-config-next@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.0.2.tgz#87ea50cf062d5701294948182cea9217ac0a45a4" + integrity sha512-Tck3Ga3IQ+/6ziTraLc1CTQ9kw2jWzjgZtB6wsBOAvMauK25a/ociCW8SFXsYWVFb899tdqPemrTZEeXjXjrvQ== + dependencies: + "@next/eslint-plugin-next" "12.0.2" + "@rushstack/eslint-patch" "^1.0.6" + "@typescript-eslint/parser" "^4.20.0" + eslint-import-resolver-node "^0.3.4" + eslint-import-resolver-typescript "^2.4.0" + eslint-plugin-import "^2.22.1" + eslint-plugin-jsx-a11y "^6.4.1" + eslint-plugin-react "^7.23.1" + eslint-plugin-react-hooks "^4.2.0" + +eslint-config-prettier@^8.3.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== + +eslint-import-resolver-alias@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz#297062890e31e4d6651eb5eba9534e1f6e68fc97" + integrity sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w== + +eslint-import-resolver-node@^0.3.4, eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^2.4.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" + integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== + dependencies: + debug "^4.3.4" + glob "^7.2.0" + is-glob "^4.0.3" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.22.1, eslint-plugin-import@^2.25.2: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" + semver "^6.3.1" + string.prototype.trimend "^1.0.8" + tsconfig-paths "^3.15.0" + +eslint-plugin-jsx-a11y@^6.4.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz#36fb9dead91cafd085ddbe3829602fb10ef28339" + integrity sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg== + dependencies: + aria-query "~5.1.3" + array-includes "^3.1.8" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "^4.10.0" + axobject-query "^4.1.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.19" + hasown "^2.0.2" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.0" + +eslint-plugin-prettier@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@^4.2.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== + +eslint-plugin-react@^7.23.1: + version "7.37.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd" + integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg== + 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.0.19" + 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" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@<8.0.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +events@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + 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" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-uri@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +formik@^2.4.6: + version "2.4.6" + resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.6.tgz#4da75ca80f1a827ab35b08fd98d5a76e928c9686" + integrity sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g== + dependencies: + "@types/hoist-non-react-statics" "^3.3.1" + deepmerge "^2.1.1" + hoist-non-react-statics "^3.3.0" + lodash "^4.17.21" + lodash-es "^4.17.21" + react-fast-compare "^2.0.1" + tiny-warning "^1.0.2" + tslib "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + 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" + +generate-function@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== + dependencies: + is-property "^1.0.2" + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + 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" + +get-orientation@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-orientation/-/get-orientation-1.1.2.tgz#20507928951814f8a91ded0a0e67b29dfab98947" + integrity sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ== + dependencies: + stream-parser "^0.3.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +glob-parent@^5.1.2, glob-parent@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3, globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-base@~3.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +http-errors@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +https-browserify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +husky@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== + +hyphenate-style-name@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" + integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2, iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +image-size@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750" + integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw== + dependencies: + queue "6.0.2" + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflection@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.4.tgz#65aa696c4e2da6225b148d7a154c449366633a32" + integrity sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.4, internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +is-arguments@^1.0.4, is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.10, is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== + +is-map@^2.0.2, is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-property@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-set@^2.0.2, is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.13, is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" + integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iterator.prototype@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c" + integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== + 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" + +jest-worker@27.0.0-next.5: + version "27.0.0-next.5" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.5.tgz#5985ee29b12a4e191f4aae4bb73b97971d86ec28" + integrity sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.1, json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jss-plugin-camel-case@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz#27ea159bab67eb4837fa0260204eb7925d4daa1c" + integrity sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.10.0" + +jss-plugin-default-unit@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz#db3925cf6a07f8e1dd459549d9c8aadff9804293" + integrity sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-global@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz#1c55d3c35821fab67a538a38918292fc9c567efd" + integrity sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-nested@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz#db872ed8925688806e77f1fc87f6e62264513219" + integrity sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz#67f4dd4c70830c126f4ec49b4b37ccddb680a5d7" + integrity sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + +jss-plugin-rule-value-function@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz#7d99e3229e78a3712f78ba50ab342e881d26a24b" + integrity sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.10.0" + tiny-warning "^1.0.2" + +jss-plugin-vendor-prefixer@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz#c01428ef5a89f2b128ec0af87a314d0c767931c7" + integrity sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.8" + jss "10.10.0" + +jss@10.10.0, jss@^10.10.0: + version "10.10.0" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.10.0.tgz#a75cc85b0108c7ac8c7b7d296c520a3e4fbc6ccc" + integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^3.0.2" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +language-subtag-registry@^0.3.20: + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^11.2.6: + version "11.2.6" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.2.6.tgz#f477b1af0294db054e5937f171679df63baa4c43" + integrity sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg== + dependencies: + cli-truncate "2.1.0" + colorette "^1.4.0" + commander "^8.2.0" + cosmiconfig "^7.0.1" + debug "^4.3.2" + enquirer "^2.3.6" + execa "^5.1.1" + listr2 "^3.12.2" + micromatch "^4.0.4" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "3.3.0" + supports-color "8.1.1" + +listr2@^3.12.2: + version "3.14.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.1" + through "^2.3.8" + wrap-ansi "^7.0.0" + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +long@^5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +lru.min@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/lru.min/-/lru.min-1.1.1.tgz#146e01e3a183fa7ba51049175de04667d5701f0e" + integrity sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q== + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +moment-timezone@^0.5.43: + version "0.5.46" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.46.tgz#a21aa6392b3c6b3ed916cd5e95858a28d893704a" + integrity sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw== + dependencies: + moment "^2.29.4" + +moment@^2.29.4: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mysql2@^3.11.3: + version "3.11.3" + resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.11.3.tgz#8291e6069a0784310846f6437b8527050dfc10c4" + integrity sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ== + dependencies: + aws-ssl-profiles "^1.1.1" + denque "^2.1.0" + generate-function "^2.3.1" + iconv-lite "^0.6.3" + long "^5.2.1" + lru.min "^1.0.0" + named-placeholders "^1.1.3" + seq-queue "^0.0.5" + sqlstring "^2.3.2" + +named-placeholders@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" + integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== + dependencies: + lru-cache "^7.14.1" + +nanoid@^3.1.23: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +next@12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/next/-/next-12.0.3.tgz#325732ceb4193306a9a31912815fc570d1a66641" + integrity sha512-GGdhTBcerdMZbitrO67IVetmB+AHa2X69xrkXKClUT8SRu8pEVto/2QMSnfI+uYc5czCUWPsVtVY3aMoMRMaCA== + dependencies: + "@babel/runtime" "7.15.4" + "@hapi/accept" "5.0.2" + "@napi-rs/triples" "1.0.3" + "@next/env" "12.0.3" + "@next/polyfill-module" "12.0.3" + "@next/react-dev-overlay" "12.0.3" + "@next/react-refresh-utils" "12.0.3" + acorn "8.5.0" + assert "2.0.0" + browserify-zlib "0.2.0" + browserslist "4.16.6" + buffer "5.6.0" + caniuse-lite "^1.0.30001228" + chalk "2.4.2" + chokidar "3.5.1" + constants-browserify "1.0.0" + crypto-browserify "3.12.0" + cssnano-simple "3.0.0" + domain-browser "4.19.0" + encoding "0.1.13" + etag "1.8.1" + events "3.3.0" + find-cache-dir "3.3.1" + get-orientation "1.1.2" + https-browserify "1.0.0" + image-size "1.0.0" + jest-worker "27.0.0-next.5" + node-fetch "2.6.1" + node-html-parser "1.4.9" + os-browserify "0.3.0" + p-limit "3.1.0" + path-browserify "1.0.1" + postcss "8.2.15" + process "0.11.10" + querystring-es3 "0.2.1" + raw-body "2.4.1" + react-is "17.0.2" + react-refresh "0.8.3" + regenerator-runtime "0.13.4" + stream-browserify "3.0.0" + stream-http "3.1.1" + string_decoder "1.3.0" + styled-jsx "5.0.0-beta.3" + timers-browserify "2.0.12" + tty-browserify "0.0.1" + use-subscription "1.5.1" + util "0.12.4" + vm-browserify "1.1.2" + watchpack "2.1.1" + optionalDependencies: + "@next/swc-android-arm64" "12.0.3" + "@next/swc-darwin-arm64" "12.0.3" + "@next/swc-darwin-x64" "12.0.3" + "@next/swc-linux-arm-gnueabihf" "12.0.3" + "@next/swc-linux-arm64-gnu" "12.0.3" + "@next/swc-linux-arm64-musl" "12.0.3" + "@next/swc-linux-x64-gnu" "12.0.3" + "@next/swc-linux-x64-musl" "12.0.3" + "@next/swc-win32-arm64-msvc" "12.0.3" + "@next/swc-win32-ia32-msvc" "12.0.3" + "@next/swc-win32-x64-msvc" "12.0.3" + +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-html-parser@1.4.9: + version "1.4.9" + resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" + integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw== + dependencies: + he "1.2.0" + +node-releases@^1.1.71: + version "1.1.77" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" + integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + +object-is@^1.0.1, object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.2, object.entries@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.1.6, object.values@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.9.1: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + 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" + +os-browserify@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + +p-limit@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" + integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + hash-base "~3.0" + pbkdf2 "^3.1.2" + safe-buffer "^5.2.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + 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" + +path-browserify@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3, pbkdf2@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pg-connection-string@^2.6.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.7.0.tgz#f1d3489e427c62ece022dba98d5262efcb168b37" + integrity sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA== + +picocolors@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +platform@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss-value-parser@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.2.15: + version "8.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map "^0.6.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier-plugin-organize-imports@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz#f3d3764046a8e7ba6491431158b9be6ffd83b90f" + integrity sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A== + +prettier@^2.4.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prop-types@^15.6.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-expr@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" + integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +querystring-es3@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +raw-body@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-dom@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-fast-compare@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + +react-is@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-refresh@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +readable-stream@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + 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" + +readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +reflect.getprototypeof@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== + 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" + +regenerator-runtime@0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" + integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g== + +regenerator-runtime@^0.13.4: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.2" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.19.0, resolve@^1.22.0, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry-as-promised@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-7.0.4.tgz#9df73adaeea08cb2948b9d34990549dc13d800a2" + integrity sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + +semver@^6.0.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.2.1, semver@^7.3.5, semver@^7.5.4: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +seq-queue@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" + integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== + +sequelize-pool@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-7.1.0.tgz#210b391af4002762f823188fd6ecfc7413020768" + integrity sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg== + +sequelize@^6.37.4: + version "6.37.4" + resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.37.4.tgz#6afbe036c2996dc5d1f5e77622e9c866269b977a" + integrity sha512-+8B0p00EKmxJpwwruDI0drxh4wNSC0YB9pVhOajRzfMI+uIDi5V7rJPC8RTTkLmKUoAIatJZn6lW9gj6bmmYKQ== + 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" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + 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" + +set-function-name@^2.0.1, set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + +side-channel@^1.0.4, side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + 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" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +source-map@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sqlstring@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" + integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== + +stacktrace-parser@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +stream-browserify@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-http@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564" + integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + +stream-parser@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" + integrity sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ== + dependencies: + debug "2" + +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-hash@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + 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" + +string.prototype.includes@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + +string.prototype.matchall@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== + 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" + +string.prototype.repeat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" + integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string_decoder@1.3.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-components@^5.3.3: + version "5.3.11" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8" + integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +styled-jsx@5.0.0-beta.3: + version "5.0.0-beta.3" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.0-beta.3.tgz#400d16179b5dff10d5954ab8be27a9a1b7780dd2" + integrity sha512-HtDDGSFPvmjHIqWf9n8Oo54tAoY/DTplvlyOH2+YOtD80Sp31Ap8ffSmxhgk5EkUoJ7xepdXMGT650mSffWuRA== + dependencies: + "@babel/plugin-syntax-jsx" "7.14.5" + "@babel/types" "7.15.0" + convert-source-map "1.7.0" + loader-utils "1.2.3" + source-map "0.7.3" + string-hash "1.1.3" + stylis "3.5.4" + stylis-rule-sheet "0.0.10" + +stylis-rule-sheet@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" + integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== + +stylis@3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" + integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== + +stylis@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" + integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +table@^6.0.9: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tar@^6.1.11: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + 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" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timers-browserify@2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +tiny-case@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" + integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== + +tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toposort-class@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" + integrity sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg== + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.1.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b" + integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-fest@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + 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" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + 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" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + 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" + +typescript@^5.6.3: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +use-subscription@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" + integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== + dependencies: + object-assign "^4.1.1" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@0.12.4: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + +util@^0.12.0: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.4.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== + +validator@^13.9.0: + version "13.12.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.12.0.tgz#7d78e76ba85504da3fee4fd1922b385914d4b35f" + integrity sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg== + +vm-browserify@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +watchpack@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" + integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + 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" + +which-builtin-type@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3" + integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w== + 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" + +which-collection@^1.0.1, which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + 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" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +wkx@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.5.0.tgz#c6c37019acf40e517cc6b94657a25a3d4aa33e8c" + integrity sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg== + dependencies: + "@types/node" "*" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yup@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.4.0.tgz#898dcd660f9fb97c41f181839d3d65c3ee15a43e" + integrity sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg== + dependencies: + property-expr "^2.0.5" + tiny-case "^1.0.3" + toposort "^2.0.2" + type-fest "^2.19.0" diff --git a/task1/project/003_src/dc_up.sh b/task1/project/003_src/dc_up.sh new file mode 100755 index 0000000..80ec705 --- /dev/null +++ b/task1/project/003_src/dc_up.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +set -ex + +docker compose pull +docker compose build + +docker compose kill +docker compose down --volumes +sudo rm -rf ./volumes/mysql + +docker compose up -d + diff --git a/task1/project/003_src/docker-compose.yml b/task1/project/003_src/docker-compose.yml new file mode 100644 index 0000000..3eb07e5 --- /dev/null +++ b/task1/project/003_src/docker-compose.yml @@ -0,0 +1,50 @@ +# TODO: rename me +name: jamespong14205 + +volumes: + client_node_modules: + +services: + client: + image: node:20-buster-slim + restart: always + volumes: + - ./client:/usr/bin/app + - client_node_modules:/usr/bin/app/node_modules + command: sleep infinity + working_dir: /usr/bin/app + + ports: + - 80:3000 + + mysql: + image: mysql:latest + # container_name: db + restart: always + + environment: + MYSQL_ROOT_PASSWORD: my_secret_password + MYSQL_DATABASE: app_db + MYSQL_USER: db_user + MYSQL_PASSWORD: db_user_pass + MYSQL_ROOT_HOST: "%" + ports: + - "6033:3306" + volumes: + - ./volumes/mysql:/var/lib/mysql + + phpmyadmin: + image: phpmyadmin/phpmyadmin + # container_name: pma + restart: always + links: + - mysql + environment: + PMA_PORT: 3306 + PMA_ARBITRARY: 1 + # + PMA_HOST: mysql + PMA_USER: db_user + PMA_PASSWORD: db_user_pass + ports: + - 8080:80 diff --git a/task1/project/003_src/setup.sh b/task1/project/003_src/setup.sh new file mode 100755 index 0000000..ab72714 --- /dev/null +++ b/task1/project/003_src/setup.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +npx create-next-app@latest helloworld-js \ + --no-eslint --use-yarn --js --no-tailwind diff --git a/task1/quotation.md b/task1/quotation.md new file mode 100644 index 0000000..dd558dc --- /dev/null +++ b/task1/quotation.md @@ -0,0 +1,11 @@ +(1 page + 1 logic) +(1 page + 2 logic) +(2 pages + 2 logic) +(1 page + 2 logic) +(1 page + 2 logic) + +6 page + 10 logic + +HKD 2000 + +stack: ionic + node + windows