From fe47d9d357fcba72c35e07c741e26ad757dc78d3 Mon Sep 17 00:00:00 2001 From: LevantinLynx Date: Sat, 1 Jun 2024 03:51:36 +0200 Subject: [PATCH] gotify to ntfy relay server intended to be used with auth tokens from ntfy, proxmox v8+ Gotify to Ntfy proxy --- .env.default | 6 + Dockerfile | 37 + LICENCE.md | 7 + README.md | 96 ++ imgs/gotify-to-ntfy-proxy-1.png | Bin 0 -> 41272 bytes index.js | 95 ++ ntfy.js | 51 + package.json | 22 + topics.default.js | 7 + yarn.lock | 2563 +++++++++++++++++++++++++++++++ 10 files changed, 2884 insertions(+) create mode 100644 .env.default create mode 100644 Dockerfile create mode 100644 LICENCE.md create mode 100644 README.md create mode 100644 imgs/gotify-to-ntfy-proxy-1.png create mode 100644 index.js create mode 100644 ntfy.js create mode 100644 package.json create mode 100644 topics.default.js create mode 100644 yarn.lock diff --git a/.env.default b/.env.default new file mode 100644 index 0000000..1570cf3 --- /dev/null +++ b/.env.default @@ -0,0 +1,6 @@ +NODE_ENV=production + +RELAY_HOST_IP=0.0.0.0 +RELAY_PORT=8008 + +NTFY_SERVER=https://ntfy.sh \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5aea94e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +FROM node:lts-alpine3.20 as builder + +USER node +RUN mkdir -p /home/node/app + +WORKDIR /home/node/app + +COPY --chown=node ./ntfy.js /home/node/app +COPY --chown=node ./index.js /home/node/app +COPY --chown=node ./package.json /home/node/app +COPY --chown=node ./yarn.lock /home/node/app + +ENV NODE_ENV=production + +RUN yarn --production --frozen-lockfile +RUN yarn cache clean + + +FROM node:lts-alpine3.20 as final + +USER node +RUN mkdir -p /home/node/app +WORKDIR /home/node/app + +COPY --from=builder --chown=node /home/node/app/node_modules ./node_modules +COPY --from=builder --chown=node /home/node/app/index.js . +COPY --from=builder --chown=node /home/node/app/ntfy.js . +COPY --from=builder --chown=node /home/node/app/package.json . + +COPY --chown=node ./README.md /home/node/app +COPY --chown=node ./LICENCE.md /home/node/app + +ENV NODE_ENV=production + +EXPOSE 8008 + +CMD ["yarn", "start"] \ No newline at end of file diff --git a/LICENCE.md b/LICENCE.md new file mode 100644 index 0000000..809edd2 --- /dev/null +++ b/LICENCE.md @@ -0,0 +1,7 @@ +## Copyright 2024 LevantinLynx + +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. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d7531cc --- /dev/null +++ b/README.md @@ -0,0 +1,96 @@ +# Gotify to Ntfy Relay Proxy +This is intended to be used with Proxmox v8+ to get Ntfy integration with the "new" notification system. At time of writing there is no native Ntfy integration in Proxmox. + +## Proxmox settings +Go to Datacenter > Notifications > Add > Gotify + +In this example the proxy is running on "http://10.0.0.6:8008" topic on Ntfy is "your_topic_name" and the notify token is "tk_yoursupersecretntfytoken". + +How to add Gotiy to Ntfy Proxy in Proxmox + +After adding the proxy create a "Notification Matcher" or edit the default one. +The proxy also works with Proxmox Backup Server since it uses the same notification system as Proxmox. + + +## Example .env file +```env +NODE_ENV=production + +RELAY_HOST_IP=0.0.0.0 +RELAY_PORT=8008 + +NTFY_SERVER=https://ntfy.sh +``` + +## Example topic.js file +```javascript +const topics = { + you_topic_name_one: { + ntfyToken: 'tk_yoursupersecretntfytoken' + }, + you_topic_name_two: { + ntfyToken: 'tk_yoursupersecretntfytoken' + }, +} + +module.exports = topics +``` + +## Run local + +Ensure node v20+ and yarn 1.22+ are installed + +```bash +git clone https://github.com/LevantinLynx/gotify-to-ntfy-proxy.git + +cd gotify-to-ntfy-proxy + +cp .env.defaut .env +# Edit .env file + +cp topics.defaut.js topics.js +# Edit tocics.js file +# MAKE SURE THIS IS SAVE! IT CONTAINS YOUR NTFY TOKEN/S. + +yarn install + +yarn start +``` + +## Docker +```bash +docker run \ + -p 8008:8008 \ + -v /path/to/your/.env:/home/node/app/.env \ + -v /path/to/your/topics.js:/home/node/app/topics.js \ + --restart unless-stopped \ + levantinlynx/gotify-to-ntfy-proxy:latest +``` + +Optionally you can also pass the environment variables instead of using the .env file or use docker compose. + +```docker +version: '3.9' +services: + gotify-to-ntfy-proxy: + image: 'levantinlynx/gotify-to-ntfy-proxy:latest' + restart: unless-stopped + volumes: + - '/path/to/your/topics.js:/home/node/app/topics.js' + ports: + - '8008:8008' + environment: + - RELAY_HOST_IP=0.0.0.0 + - RELAY_PORT=8008 + - NTFY_SERVER=https://notify.sh + +``` + +If no environment file or variables are provided, the service will start with the following default values: + +```env +NODE_ENV=production +RELAY_HOST_IP=0.0.0.0 +RELAY_PORT=8008 +NTFY_SERVER=https://ntfy.sh +``` \ No newline at end of file diff --git a/imgs/gotify-to-ntfy-proxy-1.png b/imgs/gotify-to-ntfy-proxy-1.png new file mode 100644 index 0000000000000000000000000000000000000000..caa2ecf9da770b4e5e3d5372e33166b4a7a438f5 GIT binary patch literal 41272 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 literal 0 HcmV?d00001 diff --git a/index.js b/index.js new file mode 100644 index 0000000..d8634d3 --- /dev/null +++ b/index.js @@ -0,0 +1,95 @@ +require('dotenv').config() +process.env.RELAY_PORT ??= 8008 +process.env.RELAY_HOST_IP ??= '127.0.0.1' +const topics = require('./topics.js') + +const express = require('express') +const multer = require('multer') +const bodyParser = require('body-parser') +const { sendNotificationToNtfyServer } = require('./ntfy.js') +const { mainStory, config } = require('storyboard') +if (process.env.NODE_ENV === 'dev') { + config({ filter: '*:DEBUG' }) + mainStory.info('ENVIRONMENT', 'Running in DEVELOPMENT mode!') +} else { + config({ filter: '*:INFO' }) + mainStory.info('ENVIRONMENT', 'Running in PRODUCTION mode!') +} +require('storyboard-preset-console') + +const app = express() +const upload = multer() + +app.use(upload.none()) +app.use(bodyParser.json()) + +app.post('/message', upload.none(), bodyParser.json(), async (req, res) => { + const token = req.query.token || req.headers['x-gotify-key'] || req.headers.authorization ? req.headers.authorization.replace('Bearer ', '') : '' + + mainStory.debug('MESSAGE', 'Gotify message recieved:', { + attach: { ...req.body, token }, + attachLevel: 'debug' + }) + + const priority = ['min', 'low', 'default', 'high', 'max'] + const topic = token.split('/')[0] + const ntfyToken = token.split('/')[1] + if (!topic || !topics[topic]) { + const error = { + error: 'Bad Request', + errorCode: 400, + errorDescription: 'No matching topic found! Please ensure the topic is defined in topic.js and provide a token formated: topic/ntfyToken' + } + mainStory.error('NOTIFICATION', error.error, { + attach: error, + attachLevel: 'error' + }) + return res.json(error).status(400) + } + if (topics[topic].ntfyToken !== ntfyToken) { + const error = { + error: 'Unauthorized', + errorCode: 401, + errorDescription: 'Please provide a token formated: topic/ntfyToken' + } + mainStory.error('NOTIFICATION', error.error, { + attach: error, + attachLevel: 'error' + }) + return res.json(error).status(401) + } + if (!req.body.message) { + const error = { + error: 'Bad Request', + errorCode: 400, + errorDescription: 'Please provide a message.' + } + mainStory.error('NOTIFICATION', error.error, { + attach: error, + attachLevel: 'error' + }) + return res.json(error).status(400) + } + + const notification = { + topic: token.split('/')[0], + title: req.body.title, + content: req.body.message, + priority: priority[req.body.priority - 1 || 3] || 'default', + token: ntfyToken + } + const msg = await sendNotificationToNtfyServer(notification) + + res.json({ + id: msg.id, + appid: 1, + message: req.body.message, + title: req.body.title, + priority: req.body.priority, + date: new Date().toISOString() + }) +}) + +app.listen(process.env.RELAY_PORT, process.env.RELAY_HOST_IP, () => { + mainStory.info('SERVER', `Relay Server is listening on http://${process.env.RELAY_HOST_IP || '127.0.0.1'}:${process.env.RELAY_PORT || 8008}`) +}) \ No newline at end of file diff --git a/ntfy.js b/ntfy.js new file mode 100644 index 0000000..3bb2101 --- /dev/null +++ b/ntfy.js @@ -0,0 +1,51 @@ +const { mainStory } = require('storyboard') +require('storyboard-preset-console') +const axios = require('axios') +process.env.NTFY_SERVER ??= 'https://ntfy.sh' + +/** + * Send a notification to a Ntfy server + * @param {Object} notification + * @param {String} notification.topic - Notification topic + * @param {String} notification.title - Notification title + * @param {String} notification.content - Notification content text + * @param {String} [notification.token] - Auth token for the ntfy server + * @param {String} [notification.priority] - Ntfy notification priority + */ +async function sendNotificationToNtfyServer (notification) { + try { + notification.topic ??= 'test' + notification.title ??= 'Gotify to Ntfy Relay Server' + notification.priority ??= 'default' + notification.content ??= 'No notification content provided!' + + const options = { + method: 'post', + url: `${process.env.NTFY_SERVER}/${notification.topic}`, + headers: { + Title: notification.title, + Priority: notification.priority + }, + data: notification.content + } + if (notification.token) options.headers.Authorization = `Bearer ${notification.token}` + + const result = await axios(options) + if (result.data) { + mainStory.info('NTFY', `Sent to "${process.env.NTFY_SERVER}/${notification.topic}":`, { + attach: result.data, + attachLevel: 'info' + }) + return result.data + } + } catch (err) { + mainStory.error('NTFY', err.message, { + attach: err, + attachLevel: 'error' + }) + } +} + +module.exports = { + sendNotificationToNtfyServer +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..955e927 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "gotify-to-ntfy-proxy", + "version": "1.0.0", + "license": "MIT", + "scripts": { + "start": "node index.js", + "test": "standard \"index.js\" \"ntfy.js\" --fix --verbose | snazzy" + }, + "dependencies": { + "axios": "^1.7.2", + "body-parser": "^1.20.2", + "dotenv": "^16.4.5", + "express": "^4.19.2", + "multer": "^1.4.5-lts.1", + "storyboard": "^3.3.2", + "storyboard-preset-console": "^3.3.2" + }, + "devDependencies": { + "snazzy": "^9.0.0", + "standard": "^17.1.0" + } +} diff --git a/topics.default.js b/topics.default.js new file mode 100644 index 0000000..d36192a --- /dev/null +++ b/topics.default.js @@ -0,0 +1,7 @@ +const topics = { + your_topic_name: { + ntfy_token: 'tk_yoursupersecretntfytoken' + } +} + +module.exports = topics \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..77033dc --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2563 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@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": + 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.8": + 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" + +"@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== + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +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" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +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@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +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" + +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" + integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +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-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.6, array-includes@^3.1.7, 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.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.3: + 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.toreversed@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" + integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== + 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.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" + integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.1.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" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +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" + +axios@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +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== + +body-parser@1.20.2, body-parser@^1.20.2: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +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" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtins@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8" + integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg== + dependencies: + semver "^7.0.0" + +busboy@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +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== + +chalk@1.x: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^4.0.0, chalk@^4.1.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" + +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.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== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +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== + +concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + +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== + +cross-spawn@^7.0.2: + 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" + +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.6.9: + 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@^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" + +debug@^4.3.1, debug@^4.3.2: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +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== + +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.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" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +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" + +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== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +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.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.1.0, 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-iterator-helpers@^1.0.19: + version "1.0.19" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== + 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.3" + 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.2" + 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" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.2: + 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-standard-jsx@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz#70852d395731a96704a592be5b0bfaccfeded239" + integrity sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ== + +eslint-config-standard@17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" + integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== + +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-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + dependencies: + debug "^3.2.7" + +eslint-plugin-es@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz#f0822f0c18a535a97c3e714e89f88586a7641ec9" + integrity sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.27.5: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + 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.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-n@^15.7.0: + version "15.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz#e29221d8f5174f84d18f2eb94765f2eeea033b90" + integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q== + dependencies: + builtins "^5.0.1" + eslint-plugin-es "^4.1.0" + eslint-utils "^3.0.0" + ignore "^5.1.1" + is-core-module "^2.11.0" + minimatch "^3.1.2" + resolve "^1.22.1" + semver "^7.3.8" + +eslint-plugin-promise@^6.1.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz#e24ab0e3c0a25fa227d98d9ff612156b5af15945" + integrity sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA== + +eslint-plugin-react@^7.32.2: + version "7.34.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz#2780a1a35a51aca379d86d29b9a72adc6bfe6b66" + integrity sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.2" + array.prototype.toreversed "^1.1.2" + array.prototype.tosorted "^1.1.3" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.19" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.hasown "^1.1.4" + 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" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.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-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.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-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.41.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + 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@^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== + +express@^4.19.2: + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.6.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +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-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== + +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" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.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== + +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +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" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +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== + +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.5, 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" + +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== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, 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-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +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@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + 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@^13.19.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: + 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" + +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.15: + 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== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +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@^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" + +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" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +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" + +ignore@^5.1.1, ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +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== + +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.3, inherits@^2.0.4, inherits@~2.0.3: + 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.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" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +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-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.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +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-generator-function@^1.0.10: + 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.3: + 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-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-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-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +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-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-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: + 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.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + 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" + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +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-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +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-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.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" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + 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" + +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" + +load-json-file@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== + dependencies: + graceful-fs "^4.1.15" + parse-json "^4.0.0" + pify "^4.0.1" + strip-bom "^3.0.0" + type-fest "^0.3.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +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@^4.17.10: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +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" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.0.5, 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.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.4: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +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.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multer@^1.4.5-lts.1: + version "1.4.5-lts.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" + integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== + dependencies: + append-field "^1.0.0" + busboy "^1.0.0" + concat-stream "^1.5.2" + mkdirp "^0.5.4" + object-assign "^4.1.1" + type-is "^1.6.4" + xtend "^4.0.0" + +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== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +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.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +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.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.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.7, 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.1: + 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.hasown@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" + integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== + dependencies: + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.values@^1.1.6, object.values@^1.1.7, 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" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +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" + +optionator@^0.9.3: + 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" + +p-limit@^2.0.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-limit@^3.0.2: + 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-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +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== + +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-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +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.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-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-conf@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" + integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== + dependencies: + find-up "^3.0.0" + load-json-file "^5.2.0" + +platform@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.3.tgz#646c77011899870b6a0903e75e997e8e51da7461" + integrity sha512-VJK1SRmXBpjwsB4YOHYSturx48rLKMzHgCqDH2ZDa6ZbMS/N5huoNqyQdK5Fj/xayu3fqbXckn5SeCS1EbMDZg== + +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== + +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== + +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== + +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" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +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== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +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== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +readable-stream@^2.2.2: + 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.0.2, 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" + +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" + +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +regexpp@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +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.22.1, 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" + +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== + +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" + +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" + +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.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": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.3.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +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.0.0, semver@^7.3.8: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +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" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +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== + +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" + +snazzy@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/snazzy/-/snazzy-9.0.0.tgz#663639d059efd96c89f2aa63272acfacc5feda1f" + integrity sha512-8QZmJb11OiYaUP90Nnjqcj/LEpO8CLgChnP87Wqjv5tNB4djwHaz27VO2usSRR0NmViapeGW04p0aWAMhxxLXg== + dependencies: + chalk "^4.1.0" + inherits "^2.0.4" + minimist "^1.2.5" + readable-stream "^3.6.0" + standard-json "^1.1.0" + strip-ansi "^6.0.0" + text-table "^0.2.0" + +standard-engine@^15.0.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-15.1.0.tgz#717409a002edd13cd57f6554fdd3464d9a22a774" + integrity sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw== + dependencies: + get-stdin "^8.0.0" + minimist "^1.2.6" + pkg-conf "^3.1.0" + xdg-basedir "^4.0.0" + +standard-json@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/standard-json/-/standard-json-1.1.0.tgz#33ac0d2eccaddb0556f5ae28c43a35624cf1fb25" + integrity sha512-nkonX+n5g3pyVBvJZmvRlFtT/7JyLbNh4CtrYC3Qfxihgs8PKX52f6ONKQXORStuBWJ5PI83EUrNXme7LKfiTQ== + dependencies: + concat-stream "^2.0.0" + +standard@^17.1.0: + version "17.1.0" + resolved "https://registry.yarnpkg.com/standard/-/standard-17.1.0.tgz#829eeeb3139ad50714294d3531592d60ad1286af" + integrity sha512-jaDqlNSzLtWYW4lvQmU0EnxWMUGQiwHasZl5ZEIwx3S/ijZDjZOzs1y1QqKwKs5vqnFpGtizo4NOYX2s0Voq/g== + dependencies: + eslint "^8.41.0" + eslint-config-standard "17.1.0" + eslint-config-standard-jsx "^11.0.0" + eslint-plugin-import "^2.27.5" + eslint-plugin-n "^15.7.0" + eslint-plugin-promise "^6.1.1" + eslint-plugin-react "^7.32.2" + standard-engine "^15.0.0" + version-guard "^1.1.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +storyboard-core@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/storyboard-core/-/storyboard-core-3.3.2.tgz#90d5f13ed5f3b9668cb95ce778b5f44425339daf" + integrity sha512-fcACoTmGllEiK3Cfvv6xgrZmFym07SA8GJNRoVSTZhRfIplQQd8sx0nbrP7wTeMeZ7KUao5ucpflXjtm2ZV0FA== + dependencies: + chalk "1.x" + lodash "^4.17.10" + platform "1.3.3" + semver "^5.3.0" + timm "^1.6.1" + uuid "^3.0.1" + +storyboard-listener-console@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/storyboard-listener-console/-/storyboard-listener-console-3.3.2.tgz#95c415992ea79ef22e8b1e5b0b9a5476362717ec" + integrity sha512-7o8C4KeJDzNsCRq/o6ydt97HBNEBeHCgY13R1h7OjPwEoyo3uBQrLMTQlue/q600u1th06wi+vAR6XjrmK6hPg== + dependencies: + timm "^1.6.1" + +storyboard-preset-console@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/storyboard-preset-console/-/storyboard-preset-console-3.3.2.tgz#223acfb261e7b441ed4c7c83dfddd2ec79cb41ba" + integrity sha512-ADq8VYQm+ws+0OPpj+dEECK4E7IYzQwWcYsWK/ff702tniDxKIT9hRu2ph5Lro8AxeixWd2pqaYqG1gGVNaV7Q== + dependencies: + storyboard-listener-console "^3.3.2" + +storyboard@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/storyboard/-/storyboard-3.3.2.tgz#a5ef868a6d8d86cbae1ce10c58e0795e846c6265" + integrity sha512-xEvgHaztj7QtpUriwgsDo1R/DrkXEWuyrBuGFER107FCrGW1IKRv6m01cS/TAbjhQ4aV3+ePmoWQ+vdbjr6lcg== + dependencies: + storyboard-core "^3.3.2" + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +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.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.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" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +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-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== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +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== + +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== + +timm@^1.6.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" + integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +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" + +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.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-is@^1.6.4, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +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" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +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" + +unpipe@1.0.0, 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" + +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== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.0.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +version-guard@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/version-guard/-/version-guard-1.1.2.tgz#f87524249db225bf802498d25bc0e5c2b8c584dc" + integrity sha512-D8d+YxCUpoqtCnQzDxm6SF7DLU3gr2535T4khAtMq4osBahsQnmSxuwXFdrbAdDGG8Uokzfis/jvyeFPdmlc7w== + +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.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + 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.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + 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.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: + 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" + +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== + +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== + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +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==